元胞自动机 · 涌现

兰顿蚂蚁

兰顿蚂蚁在无限方格上走:在空白格右转(R),在涂色格左转(L),然后把这一格翻过来(涂上或擦掉),向前走一格。

兰顿蚂蚁与本页画面

兰顿蚂蚁是一族蚂蚁里最简单的一只。有n种颜色时,颜色从0(空白)起编号,规则是一串R和L组成的字母r=r0r1⋯rn−1r = r_0 r_1 \cdots r_{n-1},每种颜色一个字母;兰顿蚂蚁就是RL。蚂蚁站在格p上,朝着方向d,一步是

k=c(p),d←d 按 rk 转(R:顺时针 90∘,L:逆时针),c(p)←(k+1) mod n,p←p+d.\begin{aligned} k &= c(p), \\ d &\leftarrow d \text{ 按 } r_k \text{ 转} \quad (\text{R:顺时针 } 90^\circ\text{,L:逆时针}), \\ c(p) &\leftarrow (k + 1) \bmod n, \\ p &\leftarrow p + d. \end{aligned}

蚂蚁没有记忆,只看得见脚下的颜色。在这一页,你可以看它先走出秩序,再乱成一团,最后修出一条公路;可以让它倒着走,在它前面涂格子,也可以换别的字母串。

颜色就是规则里的状态。平面没有边,也不会卷回来。面板顶部的曲线是每一步之后的涂色格数。

蚂蚁从空白平面朝上出发,先走出一些小而整齐的图案,其中有几次绕中心转半圈对称,第473步就是一例。接下来是看似随机的一团乱麻,持续大约一万步。然后,从第9 977步起,蚂蚁一遍遍重复同样的104步,每一轮平移(−2, 2),也就是左移两格、下移两格。它在修一条斜着的带子,叫作高速公路,每104步正好多出12个涂色格。重复的只是蚂蚁的走法和它脚下那条带子,身后的乱麻留在原地。

重复几轮什么也证明不了:下一轮可能撞上一个涂色格,离开公路。所以本页要先核对,才说这条公路会一直修下去。最近一轮走完后,把它读过的那些格按蚂蚁的位移平移,颜色要和这些格在这一轮开始时逐格相同,蚂蚁的朝向也要回到这一轮开始时那样。以后每一轮读到的、超出上一轮的那些格,现在都要是空白,而且从核对的那一轮起没被任何一轮走过。这样每一轮遇到的都和上一轮一样,走出同样的步子,永远如此。曲线上的虚线标出重复从哪一步开始。前方有涂色格时,本页把它圈出来,不作保证。

所以对空白平面,这条公路是证明了的,靠的是计算加上这项核对。对RL,试过的每一块只有有限个涂色格的棋盘,最后都修出了公路,但没有人证明每一块都会。

每一步都能倒回去。蚂蚁朝着刚走的方向,所以它来的那一格就在身后,那一格的颜色沿着循环往前走了一步。倒退一步是

p←p−d,k=(c(p)−1) mod n,c(p)←k,d←d 按 rk 反向转回.\begin{aligned} p &\leftarrow p - d, \\ k &= (c(p) - 1) \bmod n, \quad c(p) \leftarrow k, \\ d &\leftarrow d \text{ 按 } r_k \text{ 反向转回}. \end{aligned}

所以棋盘和蚂蚁决定了前一步的状态,“后退”是按规则一步步倒回去,不是倒放录像。

字母多了,每经过一次,格子就换成下一种颜色;从空白平面出发,几个规则键长出的形状大不一样:LLRR是一个看起来对称的图案,LRRRRRLLR是一块几乎实心的方块,RRLLLRLLLRRR是一个越来越大的三角形。这三个最后会怎样还不知道。LLRRRLRLRLLR也修出了公路,用了大约三万步。

Chris Langton在1986年描述了这只蚂蚁,作为人工生命的例子。

相关概念