书名:复杂(第一推动丛书·综合系列) 作者:梅拉妮·米歇尔 译者:唐璐 出版社:湖南科学技术出版社 出版时间:2018-01-01 ISBN:9787535794369
第10章 元胞自动机、生命和宇宙
- 自然界中的计算
- 元胞自动机
- 生命游戏
- 四类元胞机
- 沃尔夫勒姆的“新科学”
二、元胞自动机
1、冯·诺依曼体系结
- 第4章讲过,图灵机将“明确程序”——也就是计算——的概念进行了形式化。
- 计算 就是图灵机根据机器的规则集将带子上的初始输入转换成停机时带子上的输出。
- 这个抽象的机器就是后来所有数字计算机的设计原型。 由于冯·诺依曼对计算机设计作出的贡献,现在的计算机架构被称为“冯·诺依曼体系结构”
- 冯·诺依曼体系结构 包括存储数据和程序指令的随机存取存储器(RAM)、从存储器存取指令和数据并执行指令处理数据的中央处理单元(CPU)。
- 存储在计算机中的指令和数据是0/1组成的串执行指令就是将这种0/1码译成基本的逻辑操作让CPU执行。 只需要几种基本的逻辑操作就能实现所有计算,现代CPU每秒能执行数亿次这样的逻辑操作。
2、元胞自动机
-
元胞自动机是理想化的复杂系统,结构完全不同于计算机。
-
想象一块板子上排列着许多灯泡(图10.1),每个灯泡与四周以及斜对角的灯泡连在一起。在图中只画了其中一个灯泡的连接线,不过姑且想象所有灯泡都有连接线。
图10.1 排列的灯泡,每个都与四周以及对角的灯泡相连,图中画了一个灯泡的连线作为示范。灯泡的状态可以是亮和灭。假设边沿是回绕连在一起,也就是认为最左边的与最右边的灯泡相邻,最下面的与最上面的灯泡相邻,等等
-
图10.2中(左边的盒子),有些灯泡已经点亮(为了简洁,我没有画灯泡的连线)。先设定好灯泡的开关状态,然后各个灯泡开始不断定时“更新状态”——选择开或关,所有灯泡都同步变化。你可以将这个灯泡阵看作萤火虫发光的模型,每只萤火虫都根据周围萤火虫的闪灭来调整自己是亮还是灭;也可以看作神经元的激发模型,各个神经元受周围神经元的状态激发或抑制
图10.2 左:灯泡阵列的初始状态,没有画灯泡之间的连线。 右:变化一次之后的状态,规则是“采用邻域占多数的状态”
-
灯泡每一步如何“决定”是开还是关呢? 它们都遵循一些规则,根据邻域内灯泡的状态——也就是相邻的8个灯泡和它自己的状态——来决定下一步的状态(是开还是关)。 例如,规则可以是这样:“如果邻域内的灯泡(包括自己)点亮的超过一半,就点亮(如果本来就是亮的,则不变),否则就熄灭(如果本来就是灭的,则不变)。”也就是说,邻域中9个灯泡,如果有5个或5个以上是亮的,中间的灯泡下一步就是亮的。我们来看看灯泡阵列下一步会怎么变。 图10.1的文字中说了,为了让每个灯泡都有8个邻居,阵列的四边是回绕相连的。可以想象成上边和下边合到一起,左边和右边合到一起,形成一个面包圈形状。这样每个灯泡就都有8个邻居。 现在再来看上面给出的规则。图10.2是初始设置和变化一次后的状态。 也可以使用更复杂的规则,例如,“如果邻域中点亮的灯泡不少于2个,不多于7个,就点亮,否则就熄灭”,这样阵列的变化就会不一样。或者这样,“如果刚好1个灯泡是灭的,或者4个是亮的,就点亮,否则就熄灭”。可能的规则很多。 到底有多少种可能的规则呢?说“很多”还太保守了。答案是“2的512次幂”
-
这个灯泡阵列其实就是一个元胞自动机。 元胞自动机是由元胞组成的网格,每个元胞都根据邻域的状态来选择开或关。 (广义上,元胞的状态可以随便定多少种,但是这里我们只讨论开/关状态。) 所有的元胞遵循同样的规则,也称为元胞的更新规则,规则根据各元胞邻域的当前状态决定元胞的下一步状态。
3、非冯·诺依曼体系结构
- 为什么说这么简单的系统会是复杂系统的理想化模型呢?同自然界的复杂系统一样,元胞自动机也是由大量简单个体(元胞)组成,不存在中央控制,每个个体都只与少量其他个体交互。而且元胞自动机也能表现出非常复杂的行为,它们的行为很难甚至不可能通过其更新规则来预测。
- 同其他许多精彩的思想一样,元胞自动机也是由冯·诺依曼发明的,他在20世纪40年代受他的一位同事——数学家乌拉姆——的启发提出了这个思想。 (为了与冯·诺依曼体系结构相区别,元胞自动机经常被称为非冯·诺依曼体系结构,这是计算机科学的一大笑话。)
- 第8章说过,冯·诺依曼想要将自我复制机器的逻辑形式化,而他用来研究这个问题的工具就是元胞自动机。 简单地说,他设计了一种元胞自动机规则,能完美复制任意元胞自动机的初始形态,他的规则中元胞不止两种状态,而是29种。
- 冯·诺依曼还证明他的元胞自动机等价于通用图灵机(参见第4章)。 元胞的更新规则扮演了图灵机读写头的规则的角色,而元胞阵列的状态则相当于图灵机的带子——也就是说,它可以编码通用图灵机运行的程序和数据。 元胞一步一步地更新相当于通用图灵机一步一步地迭代。 能力等价于通用图灵机的系统(也就是说,通用图灵机能做的,它也能做)被称为通用计算机,或者说能进行通用计算。