主页 模型库 竞赛 学习中心 工具箱 论文库 前沿 建模空间 AI建模
学习中心 探索专题 元胞自动机与自主体模型 二维元胞自动机

本页实验台

  1. 类生命规则空间
  2. Brian 的大脑
  3. 多数票与退火
  4. 守恒与可逆
LAB 01

类生命规则空间

自己勾出生/存活条件,看 HighLife、Seeds、Day&Night 各长什么样

问题
生命游戏只是一条规则,而"出生 / 存活"这两个条件一共有 2¹⁸ 种组合。问题是:这么大的规则空间里,能长出复杂结构的规则是稀有的还是普遍的?这一台让你自己勾条件,在规则空间里找。
模型
二维外全型元胞自动机:下一刻的状态只取决于自己和八邻居里活细胞的个数。
st+1(x) = 1  当  st(x)=0 且 n ∈ B, 或  st(x)=1 且 n ∈ S
n 是八邻居里的活细胞数,B 是出生条件集合,S 是存活条件集合。生命游戏是 B3/S23。
活细胞数—
活细胞占比—
已经跑了几代—
最近的行为—
六条规则,六个完全不同的宇宙。生命游戏(B3/S23)跑几百代后密度稳定在 4.2% 左右,剩下一堆方块、蜂窝和闪灯,中间偶尔飞过一架滑翔机——这个 4% 左右的"灰烬密度"是它最著名的统计特征。HighLife(B36/S23)只多了一条"6 个邻居也出生",密度就升到 7.6%,而且多出了一种会自我复制的结构。Seeds(B2/S)没有任何细胞能活过一代,却因此永远停不下来,密度在 21% 上下剧烈翻腾。复制器(B1357/S1357)把任何初始图案复制成四份、十六份,密度冲到 48.75%。把这四条排在一起,沃尔夫勒姆的四分类就出来了:有的规则走向静止,有的走向周期,有的走向混沌,只有很窄的一条缝里能同时看到稳定结构和长距离的信息传递。生命游戏正好落在那条缝上——它是图灵完备的,而它两边的邻居规则都不是。这就是"混沌边缘"这个说法的具体含义:复杂不是规则复杂,是规则恰好被调到了两种简单行为的分界线上。
LAB 02

Brian 的大脑

加一个"不应期"状态,静止的图案立刻变成满屏行进的波

问题
神经元放完电之后有一段时间打死也不响应,心肌细胞也一样。把这个"不应期"加进元胞自动机会发生什么?答案是静止的图案立刻变成满屏行进的波——这正是心律失常和大脑活动波的机制原型。
模型
三态自动机:静息 → 激发 → 不应 → 静息,只有静息态能被邻居点燃。
静息 →(有激发邻居) 激发 → 不应 → 静息
不应期的作用是让波只能朝前走、不能倒回去——这是所有可激发介质(心肌、神经、BZ 反应)产生行进波的共同条件。
正在激发的比例—
处于不应期的比例—
已经跑了几代—
激发 / 不应期—
只加了一个状态,画面就完全变了。Brian 的大脑有三种状态:静息、激发、不应期。激发的细胞下一步必定进入不应期,不应期的细胞下一步必定回到静息,静息的细胞只有恰好两个激发邻居时才被点燃。关键就在那个不应期:它让激发不能原路返回,于是波只能向前走。结果是满屏笔直飞行的波前,而不是生命游戏里那些静止的小方块。这个机制不是凑出来的——真实的神经元、心肌细胞和 BZ 化学振荡反应都有不应期,而它们也都产生同样的行波和螺旋波。心律失常里的"折返性心动过速"就是心肌上的一个螺旋波卡住不走了。注意最后一行读数:激发与不应期的比例长期稳定在 1 附近,因为每个激发细胞下一步都变成不应期、再下一步就清空——这是一个由规则本身锁死的守恒关系,和初始条件无关。
LAB 03

多数票与退火

每个格子跟多数走,随机噪声反而让区块边界变光滑

问题
随机噪声通常被当成捣乱的东西。但这一台会给出一个反直觉的结果:适量的噪声反而让区块边界变得更光滑、区块更大。这是退火(annealing)的核心思想,也是物理里的伊辛模型。
模型
多数票加噪声:每个格子先跟八个邻居里的多数走(4-4 平票就保持不动),再以概率 p 独立地随机翻转。
si ← 八邻居的多数(平票不动),然后以概率 p 翻转
p 就是滑杆上的「噪声」。这是伊辛模型的一个简化:多数票对应「向邻居看齐」的相互作用,噪声对应温度。真正的 Glauber 动力学让翻转概率随 ΔE = 2 si Σj∈N(i) sj 连续变化,即 P(翻转) = 1 ⁄ ( 1 + eΔE/T );这里简化成「先取多数、再以固定概率翻转」,定性行为一致而实现更直观。平票必须按八个邻居算——若把自己也算进去凑成九票,「平票」就错位到了少数派那一侧,规则对两种颜色立刻不再对称,一色会慢慢吃掉另一色。这一台本来就栽在这里,现已修正。
两色交界的边数—
其中一色的占比—
已经跑了几代—
每个格子摊到的交界边—
这个实验的结论是反直觉的:加一点噪声,界面反而更光滑。规则是「每个格子跟八个邻居里的多数走,4-4 平票就保持不动」,再叠一个独立的随机翻转。先看噪声为 0 的情形——它会卡死。每格摊到的交界边从第 40 代起就是 0.2200,此后 120 代、300 代、600 代,一个数字都不变。画面上是一堆锯齿状的区块,谁也吃不掉谁。原因很直白:锯齿角落里的那个格子,周围多数恰恰支持它保持现状,于是整个系统停在一个局部最优上,而一条确定性的规则没有任何办法离开它。把噪声加上去,卡死立刻解开。实测(120×120,跑到第 600 代):2‰ 降到 0.1194,5‰ 到 0.1047,10‰ 到 0.1110,20‰ 回到 0.1219,50‰ 是 0.2272——已经比不加噪声还糟,80‰ 更糟,0.3181。先降后升,中间有一个最优噪声,在 5‰ 附近。(只跑到第 120 代的话各档差得小些、最优点也更靠近 10‰,因为系统还没粗化完;这台是一直在跑的,读数里有「已经跑了几代」,对比时记得看它。)一点点随机翻转给了系统跳出局部最优的机会,而多数票本身扮演表面张力,会把跳出来的部分收拾整齐;噪声太大时,破坏的速度超过了修复的速度。这正是模拟退火的全部思想,也是金属退火、晶粒长大、磁畴粗化背后的同一件事。在优化里我们叫它「温度」,在材料里叫它「热处理」,在这里它就是那个 5‰。顺带留意「其中一色的占比」这一行:整个过程里它应该一直在 50% 附近晃(上面那几组跑完都落在 47%~49%)。这条规则对两种颜色是对称的,谁也没有先天优势,最后剩下谁完全看初始涨落。这一行同时是一个顺手的自检:如果它单调爬向 90%,说明规则写得不对称了——这一台以前正是如此。
LAB 04

守恒与可逆

格子气模型里粒子数不变,时间还能倒着放

问题
物理定律是可逆的(把时间倒过来放,方程照样成立),而大部分元胞自动机一放就回不去。问题是:能不能造出既守恒又可逆的格子模型?能——而且它能真的模拟流体。
模型
格子气(HPP/FHP):粒子沿格边运动,碰撞规则保持粒子数与动量守恒,且规则是一一对应的。
Σ 粒子数 = const,  Σ 动量 = const,  规则可逆:F−1 存在
可逆意味着这个映射是双射——每个状态有唯一的前身。把速度全部反向再跑,系统会精确回到出发点。FHP 模型在粗粒化后能给出纳维-斯托克斯方程。
初始—
最后—
差多少—
结论—
元胞自动机看起来很粗糙,却能做到微分方程数值解做不到的两件事。第一件是严格守恒。规则 184 的更新方式是"前面空着就往前一格",它和交通流是同一个模型。不论跑多少步,粒子数一个不多一个不少——不是"误差很小",是精确相等,因为规则本身就是一次置换。而任何浮点数值格式在长时间积分后都会有守恒量漂移。第二件是时间可逆。切到第二个选项:这是一条二阶规则,新状态同时用到当前和上一时刻,形式是 x(t+1) = f(x(t)) XOR x(t−1)。因为 XOR 自己是自己的逆,把最后两层交换一下再用同一条规则往前跑,就精确回到了起点,差异为 0。这个构造很重要:它说明"可逆"和"复杂"完全不矛盾。时空图上那些互相穿过的斜线,本质上和粒子碰撞一样——物理定律在微观上是可逆的,而宏观的不可逆(熵增)来自我们只看粗粒化的信息。可逆元胞自动机正是研究这件事最干净的玩具模型。

这一页想说的

二维元胞自动机的价值在于它把"规则 → 行为"这条链子摆在明处:你改的每一位都能看到后果,而且这些后果分成清楚的几类。这一页想留下三句话:规则空间里绝大多数位置是无聊的,有趣的只在分界线附近;一点噪声常常比没有噪声更好;守恒和可逆是可以精确做到的,代价是规则要专门设计。

接着看

← 返回模块 ← 返回探索专题