介绍元胞自动机:
元胞自动机是现代计算机之父———冯·诺伊曼(Von Neumann)及其追随者提出的想法,后来Wolfram将这种带有强烈的纯游戏色彩的原始想法从学术上加以分类整理,并使之最终上升到了科学方法论。Wolfram 证明“雪花的结晶”、“海螺的图案”或者“基于相对论的扭曲时空”等自然界的各种各样的模型都确实可以由这种“反复计算”的元胞自动机生成。这一理论成了人们议论的话题,但是他的观点当时却被科学界中的主流斥为“异端”。Wolfram却坚持他的理论,悠然自得的他把生活中的全部时间都用在了思考和计算上,专心致志地从事阐明宇宙原理的工作,并利用10年的时间写出了《一种新科学》一书,并称这部著作是“与牛顿发现的万有引力基本原理相媲美的科学金字塔”。宣称他的理论能解释诸如时间为什么单向流逝;怎样制造人造生物;解释股市涨落;诸如从雷电到星系的复杂系统如何蕴藏着智能;树叶、树木、贝壳、雪花和几乎所有其他东西的形状为什么是那个样子的等等问题。他认为宇宙的本质是细胞自动机,它的规则十分简单;也认为人也是细胞自动机,生物既是细胞自动机。超过1200页的宏篇巨著《一种新科学》今后将受到什么样的评价或许只有“上帝才会知道”,不过,著者却号召大家:“为了完全理解这本书,希望大家用一生去解读”。
Wolfram的言论引起他本人和他的著作遭到了猛烈抨击。批评者指责他把自己的玄思当作确定无疑的科学发现,他的“新科学”乃是自吹自擂,没有科学根基。还有人指责他没有明确标明他所引用的别人的成果,而仅仅是列在冗长的附录中,有剽窃之嫌。(上书资料全部来源于网络,版权归所有者)
一种新兴的游戏科学(元胞自动机)却要宣称可以解决全宇宙中所有的事情,实在很狂。我们现在要利用道指令编制模拟元胞自动机的道程序。
考虑最简单的元胞自动机:一维元胞自动机(Wolfram已经证明所有的元胞自动机是等价的)
考虑一排方格,每个格子都有黑、白两种颜色,如下图:
并且,每个格子都有左右两个邻居,如图:
其中黑色的方格有左右两个邻居(用灰色进行表示)。那么每个方格就可以根据它的两个邻居以及它自己的颜色按照一定的规则而改变颜色,例如,一个可能的规则如下:
这是一个规则列表,第一排为所有可能的三个输入方格的颜色,下面的一排表示根据这些不同情况,中心的方格应该变成什么颜色。例如第三个规则上面是黑白黑,下面是黑,则当一排方格中有三个方格刚好是黑白黑的时候,中心的方格就变成黑色。
这样,一排方格之中的每一个都可这样按照此规则更新自己的颜色而得到一排新的方格排列,进一步,我们可以再次应用这组规则到新得到的方格上,这样又会得到一排新的方格。可以不停的重复下去……
现在用道指令开始编制这个过程
1、把每个格子都编上标记,如“格子[i]”,格子的颜色就是标记“格子[i]”的值。
2、用道指令重新颜色改变的规则,如一个可能的规则:
用道指令编程如下:
[格子[i-1]=“黑”,格子[i]=“黑”,格子[i+1]=“黑”]->(格子[i]=“黑”);
[格子[i-1]=“黑”,格子[i]=“黑”,格子[i+1]=“白”]->(格子[i]=“黑”);
[格子[i-1]=“黑”,格子[i]=“白”,格子[i+1]=“黑”]->(格子[i]=“黑”);
[格子[i-1]=“黑”,格子[i]=“白”,格子[i+1]=“白”]->(格子[i]=“黑”);
[格子[i-1]=“白”,格子[i]=“黑”,格子[i+1]=“黑”]->(格子[i]=“黑”);
[格子[i-1]=“白”,格子[i]=“黑”,格子[i+1]=“白”]->(格子[i]=“黑”);
[格子[i-1]=“白”,格子[i]=“白”,格子[i+1]=“黑”]->(格子[i]=“黑”);
[格子[i-1]=“白”,格子[i]=“白”,格子[i+1]=“白”]->(格子[i]=“白”);
(i-1、i+1都是已确定的,不用计算)是不是非常简单,但这条指令只对格子[i]进行编程。
3、把每个格子也按照2的道指令方法进行编程(就是把i,换成别的数字)。
可能上述大量的道指令会把人吓死,没有足够的内存存储道指令,但是我也可以说元胞自动机不可能实现,因为计算机没有无穷的内存来装无穷的一维格子,所以只要有计算机内存来模拟元胞自动机,也可以用道指令模拟元胞自动机了。
道指令如此这般模拟元胞自动机,似乎费劲多了,但道指令却可以比元胞自动机赋予更多的灵活性,即每个格子的规则可以不一样,可以实现更多的复杂规则。不过,在人类没有弄清宇宙发展规律之前,我们还是老老实实用道指令编制一些实用的程序。