探索兰顿蚂蚁

试试看自己调整参数: : : :

兰顿蚂蚁:只遵守几个规则,却走出了意想不到的道路

如果你在一张画满黑白网格的纸上放一只蚂蚁,然后只给它两条简单的命令:遇到白色网格向右转,黑色向左转,接着让它不断前进,你觉得它最后会画出什么?也许是一团乱七八糟的线条,也许会在某个地方来回打转,也许什么特别的事情都不会发生。

但真正令人惊讶的是,当这个过程持续足够久以后,这只蚂蚁竟然会突然“找到一条路”,开始沿着一条整齐的斜线不断向外前进。

这就是著名的 兰顿蚂蚁。

它没有复杂的公式,没有随机数,甚至没有很多规则。只有一只蚂蚁,一张黑白网格和几条非常简单的规则。

然而,简单规则运行很长时间以后,却产生了令人难以预料的复杂行为。

兰顿蚂蚁的规则

先不要想太复杂,我们从最简单的情况开始。

想象一张由许多小方格组成的棋盘,所有格子一开始都是白色,蚂蚁站在其中一个格子上。然后,给它几条命令。

□ □ □ □ □

□ □ □ □ □

□ □ 🐜 □ □

□ □ □ □ □

□ □ □ □ □

规则非常简单。

如果蚂蚁站在白色格子上,则向右转,并且把这个格子变成黑色,然后向前走一步,走到下一个格子上。

如果蚂蚁站在黑色格子上,则向左转,并且把这个格子变成白色,然后向前走一步,走到下一个格子上。

就这样,非常简单,没有其他规则。蚂蚁不知道:“我要画一幅漂亮的图。”,它也不知道:“我要向右上方前进。”,它甚至不知道:“我要走多远。”。它只是 看到颜色 → 转弯 → 改变颜色 → 前进。然后重复,重复,再重复。

一开始,看起来很普通

刚开始的几步,蚂蚁只是在自己的附近走来走去。它经过一个白色格子,右转,把它变成黑色。下一次回来时,看到黑色,左转,又把它变回白色。于是,蚂蚁在附近来回穿梭。

如果只运行几十步,你可能会觉得:“好像也没什么特别的。”但是,不要急着停下来。

继续运行。

100 步之后,白色和黑色开始交错。一些地方形成了小方块,一些地方形成了对称结构。整个画面开始变得复杂起来。

继续。

1000 步之后,蚂蚁走过的地方越来越多,它留下的黑白图案,已经不像一个简单的几何图形。你甚至很难预测下一步它会往哪里走。看起来,一切都非常混乱。

那就再继续

这正是兰顿蚂蚁最神奇的地方。如果你继续等待,它可能会经历一段非常漫长的、看起来毫无规律的过程。然后——某个时刻,事情突然发生变化。蚂蚁开始重复一种特殊的运动模式,一个越来越规则的结构出现了,它开始向一个方向不断前进。

蚂蚁不再像之前一样,在一个区域里不断徘徊。它开始转弯,改变格子,再转弯,然后,沿着一个稳定的方向不断前进,与此同时,它会在身后留下一个非常规则的黑白结构。蚂蚁仿佛突然找到了一条通往远方的道路,而最令人惊讶的是,没有人告诉它这条路在哪里。

这个结构通常被称为 高速公路。

简单的规则,不代表简单的结果

但最开始,它根本不像会这样,这也是兰顿蚂蚁最值得思考的地方。

如果你只观察最开始的几十步,你可能会认为:“这只蚂蚁只是在乱走。”。如果观察前几百步:“还是很混乱。”。甚至在相当长的一段时间里,你都很难看出它最终会形成什么。

可是,同样的规则一直没有改变,改变的只是 规则被执行了一次又一次。

兰顿蚂蚁最重要的启发就是:一个系统的规则可以非常简单,而它长期产生的行为却非常复杂。

我们通常很容易产生一种直觉:如果规则只有两三条,那么结果应该也不会太复杂。但兰顿蚂蚁告诉我们:不一定。

当一个简单规则不断作用于自己的历史结果时,系统会产生越来越复杂的状态,而这些状态,又会影响下一步发生什么。

于是:简单 → 复杂 → 更复杂 → 涌现出新的结构。

蚂蚁其实没有“记忆”

还有一个特别有意思的地方,蚂蚁本身并不需要记住:“我之前走过哪里。”,它只需要观察:“我现在脚下是什么颜色?”。

但是整个系统却拥有某种“记忆”。

为什么?因为 蚂蚁改变了它走过的格子。

于是过去发生过什么,会被写进黑色和白色的网格里,下一次蚂蚁经过这里时,它看到的颜色已经不同了。

于是,过去的行动改变了现在的环境,而 现在的环境,又影响下一步的行动。

这就形成了一个非常漂亮的循环:蚂蚁改变网格 → 网格改变蚂蚁的下一步 → 蚂蚁再次改变网格 → 网格再次改变蚂蚁 → 不断重复。

如果你看到最后形成的高速公路,很容易产生一种错觉:“这只蚂蚁是不是知道自己要去哪里?”

当然不是。它没有目标,没有地图,没有导航,也没有提前设计好的路线。它只是在机械地执行:白色右转,黑色左转。

可是,复杂的行为,却从这些简单规则中自己出现了。

这就是所谓的:涌现。

那么,为什么蚂蚁最后会跑出去?

这是兰顿蚂蚁另一个很有意思的地方。

当高速公路形成以后,如果总步数特别大,蚂蚁会沿着高速公路的方向不断前进,再也不回来,最终,蚂蚁真的可能走出屏幕。

这并不是程序出错了,也不是它“失控”了,而是 它已经找到了自己的高速公路,它只是继续遵守最开始的规则,一路向未知的地方前进。

一只蚂蚁,一张棋盘,几条规则

所以,不要只盯着最后的图案。兰顿蚂蚁真正值得看的,其实是整个过程:混乱 → 复杂 → 长期变化 → 突然出现秩序 → 高速公路 → 继续向外延伸。

这和我们平时看到的很多数学图形不太一样。它不是:“这里有一个漂亮的最终答案。”,而是:“看看这个系统自己会变成什么。”

很多图形的乐趣来自 参数,改变参数,得到新的世界。

但兰顿蚂蚁的惊喜来自 时间,你只需要按下开始,然后等待。

因为你不知道:第 10 步会发生什么,第 1000 步会变成什么,第 10000 步之后又会发生什么。而最终,一个简单得几乎像玩具一样的规则,可能会带你走出一条完全没有预先画好的道路。

兰顿蚂蚁最迷人的地方,也许可以用一句话概括:它不知道自己要去哪里,却最终走出了一条路。

没有人给它画地图,没有人告诉它目标,没有人设计高速公路。只有白色 → 右转,黑色 → 左转,然后改变颜色,再向前一步,再然后,重复,无数次。

兰顿蚂蚁 和分形有什么不同?

兰顿蚂蚁看起来也非常像一种“不断生成图案”的数学艺术,但它和 曼德博集合、科赫雪花 这样的分形并不一样。

例如,科赫雪花 规则是 不断递归地修改图形,你知道 下一层会怎么生成。

曼德博集合 规则是 反复迭代一个复数方程,不同的初始点,会产生不同的轨迹。

而 兰顿蚂蚁 则是 让一个会改变环境的“小角色”不断行动,它的下一步,不仅取决于自己的位置,还取决于 自己之前留下的痕迹。所以你看到的不是单纯的几何递归,而是一种 行为与环境不断相互作用的系统。

兰顿蚂蚁 和 霍帕隆吸引子 有什么不同?

兰顿蚂蚁 和 霍帕隆吸引子 有一点相似,但又是另一种很有意思的“难以控制”。

霍帕隆吸引子:漂亮图案往往藏在参数空间里,参数稍微变一点,结果可能完全不同。它不知道换一个参数会发现什么,惊喜来自于 参数空间。

兰顿蚂蚁:经典规则本身其实非常固定,但随着迭代次数增加,蚂蚁最终会从有限区域中“跑出去”,而且早期的局部图案和后期的行为差异很大。它不知道一个简单规则运行足够久以后会发生什么,惊喜来自于 时间和迭代次数。

继续探索数学世界

你还可以继续欣赏更多奇妙的数学图形,或者查看维基百科上更多关于兰顿蚂蚁的介绍。

想要在每次打开新标签页时都能看到这些精美的数学视觉效果吗?立即安装 Chrome 插件,将“科学盲盒”设为您的新标签页。🚀

了解详情