Skip to content

Latest commit

 

History

History
104 lines (52 loc) · 6.5 KB

6.md

File metadata and controls

104 lines (52 loc) · 6.5 KB

六、生命游戏

在本章中,我们考虑二维元胞自动机,特别是 John Conway 的生命游戏(GoL)。 像上一章中的一些 CA 一样,GoL 遵循简单的规则并产生令人惊讶的复杂行为。 就像沃尔夫勒姆的规则 110 一样,事实证明 GoL 是通用的;也就是说,至少在理论上它可以计算任何可计算的函数。

GoL 的复杂行为引发了科学哲学问题,特别是科学现实主义和工具主义的相关问题。 我讨论这些问题并提出扩展阅读的建议。

在本章的最后,我演示了如何在 Python 中高效实现 GoL。

本章的代码位于本书仓库的chap06.ipynb中。 使用代码的更多信息,请参见第?节。

6.1 Conway 的生命游戏

首先要研究的细胞自动机之一,也许是有史以来最受欢迎的一种,是称为“生命游戏”的二维 CA,简称 GoL。 它由 John H. Conway 开发并于 1970 年在《科学美国人》(Scientific American)的马丁加德纳(Martin Gardner)专栏中推广。 请参阅 http://en.wikipedia.org/wiki/Conway_Game_of_Life

GoL 中的细胞排列在一个二维网格中,两个方向上都有限,或者首尾相接。 双向首尾相接的网格称为环面,因为它在地形上等同于多纳圈的表面。 见 http://en.wikipedia.org/wiki/Torus

每个细胞有两个状态 - 生存和死亡 - 和八个邻居 - 东西南北和四个对角线。 这些邻居有时被称为“摩尔邻域”。

就像前面章节中的一维 CA 一样,生命游戏按照规则演变,这就像物理学的简单定律。

在 GoL 中,每个单元格的下一个状态取决于其当前状态和活动邻居的数量。 如果一个细胞是活的,如果它有两个或三个活动邻居就会生存,否则就会死亡。 如果一个细胞是死的,它将保持死亡,除非它恰好有三个邻居。

下表总结了这些规则:

当前状态 邻居数量 下一个状态
生存 2–3 生存
生存 0–1, 4–8 死亡
死亡 3 生存
死亡 0–2, 4–8 死亡

这种行为与真正的细胞生长大致类似:分离或过度拥挤的细胞死亡;它们在中等密度下蓬勃成长。

GoL 很受欢迎,因为:

有简单的初始条件产生令人惊讶的复杂行为。

有许多有趣的稳定图案:有些摆动(以不同的周期),有些像 Wolfram 的 CA 规则 110 中的飞船一样移动。 和规则 110 一样,GoL 是图灵完整的。

另一个产生兴趣的因素是康威的猜测 - 没有可以使活细胞数量无限增长的初始条件 - 以及他向任何可以证明或否定它的人提供的 50 美元赏金。

最后,计算机日益增加的可用性,使得自动化计算并以图形方式显示结果成为可能。

6.2 生命图案

图 6.1:一个静态图案,叫做“蜂巢”(beehive)

图 6.2:一个振荡图案,叫做“蟾蜍”(toad)

图 6.3:一个飞船,叫做“滑翔机”(glider)

如果从随机起始状态运行 GoL,可能会出现一些稳定图案。随着时间的推移,人们已经确定了这些图案并给了它们名字

例如,图?展示了一种称为“蜂巢”的稳定图案。蜂巢中的每个细胞都有两个或三个邻居,所以它们都能存活下来,蜂巢旁边的死细胞都没有三个邻居,所以没有新细胞诞生。

其他图案在“振荡”;也就是说,它们随着时间而改变,但最终返回到它们的起始状态(只要它们不与另一个图案冲突)。例如,图?展示了一种称为“蟾蜍”的图案,它是在两种状态之间交替的振荡图案。这个振荡图案的“周期”是二。

最后,一些图案振荡并返回到起始状态,但在空间中移动。因为这些图案似乎在移动,所以它们被称为“飞船”。

图?展示了一艘名为“滑翔机”的飞船。经过四段时间后,滑翔机回到起始位置,并向下和向右移动一个单位。

根据起始方向,滑翔机可以沿着四条对角线中的任何一条移动。还有其它的水平和垂直移动的飞船。

人们花费了大量时间来查找和命名这些图案。如果你搜索网页,你会发现很多收藏品。

6.3 Conwey 的推测

从最初的条件来看,GoL 迅速达到稳定状态,活细胞数量几乎不变(可能带有一些振荡)。

图 6.4:r-pentomino 的开始和最终状态

但是一些简单的开始条件,需要很长时间才能稳定下来,并产生令人惊讶的活细胞数量。 这些模式被称为“Methuselahs”,因为它们很长寿。

其中最简单的是 r-pentomino,它只有五个细胞,形状大致为字母“r”。 图?显示了 r-pentomino 的初始状态和 1103 步后的最终状态。

这种状态是“最终的”,因为所有剩余图案是稳定的,振荡的或滑翔机,它们永远不会与另一种图案相冲突。 r-pentomino 总共产生 6 个滑翔机,8 个积木(block),4 个闪光灯(blinker),4 个蜂巢,1 个小艇(boat),1 个轮船(ship)和 1 个面包(loaf)。

图 6.5:Gosper 的滑翔机枪,产生滑翔机流。

长寿图案的存在,使得康威怀疑是否存在从未稳定的初始图案。 他猜想没有,但他描述了两种证明他是错误的图案,“枪”(gun)和“蒸汽火车”(puffer train)。 枪是稳定的模式,定期产生飞船 - 随着飞船流从源位置移动,活细胞的数量无限增长。 蒸汽火车是一种将活细胞留在尾部的平移图案。

事实证明,这两种模式都存在。 由 Bill Gosper 领导的一个小组发现了第一个,它是现在称为 Gosper's Gun 的滑翔枪,如图所示。 Gosper 还发现了第一个蒸汽火车。

这两种类型都有很多图案,但它们很难设计或找到。 这不是巧合。 Conway 选择了 GoL 的规则,这样他的猜想就不会明显为真或假。 在二维 CA 的所有可能规则中,大多数产生简单的行为:大多数初始条件快速稳定或无限增长。 通过避免无趣的 CA,Conway 也避免了 Wolfram 的一类和二类行为,并且可能还有三类。

如果我们相信 Wolfram 的计算等价原则,我们预计 GoL 会属于第四类,而且是这样。 生命游戏在 1982 年被证明了图灵的完整性(1983年也是独立的)。 从那时起,几个人构建了 GoL 模式,实现了图灵机或另一台已知图灵完备的机器。