复杂的结果,不需要复杂的原因(A complex result needs no complex cause)
2026-07-22 · 什么算「复杂」
你看到一个精巧到不可思议的图案,本能地想:造出它的东西,一定也很精巧。这个本能,是这门学科要拆掉的第一个。
一片雪花、一座白蚁堆出来的三米高"大教堂"、一段让全组熬夜也查不明白的线上故障——见到精巧的东西,我们默认背后站着一个同样精巧的成因:一个复杂的设计、一个高明的对手、一个深藏的阴谋。
可是有一整类东西,它们的规则简单到能写在一张餐巾纸上,跑出来的结果却精巧到你盯多久都数不完。更狠的一点在后面:从那几行规则到最终的图案之间,没有任何近道——你想知道它长什么样,只能老老实实一步一步把它跑出来。
这是 Phase A 的第四期。前三期在问"什么才算复杂",本期给出最锋利的一刀:复杂不在原因里,而在原因反复迭代之后。主角是一个笨到极点的装置——元胞自动机(cellular automaton)。它还牵出另一种不可预测:不是像混沌(第 8 期)那样对初值敏感,而是原理上就没有捷径(第 11 期会正面展开)。
想象一排格子,每格只有两种状态:黑或白(记成 1 和 0)。时间一格一格往下走,下一时刻某个格子是黑是白,只由它自己和左右两个紧邻这一刻的状态决定——不看更远,也不看别处。
三个格子、每个两种颜色,一共 8 种可能的"邻居组合"。所谓一条规则,就是给这 8 种组合分别指定一个输出颜色。于是能写出的规则总数是 28 = 256 条,一条不多一条不少。这类"格子按局部规则一起更新"的装置叫元胞自动机(cellular automaton,缩写 CA),最简单的这种一维版本叫基本元胞自动机(elementary CA),全世界一共就这 256 条。
从顶端一个黑格出发,把每一时刻的那一行往下叠着画,就得到一张"时空图"——横轴是空间,纵轴是时间。看两条规则:
规则 90:新格子 = 左邻 与 右邻 做"异或"(两个邻居一黑一白就变黑,同色就变白,中间那格干脆不看)。跑出来是一个谢尔宾斯基三角(Sierpiński triangle)——一个分形(fractal),放大任何一小块,都是整体的缩小复制。规则 30:同样只看三个格子,长出来的却是一片看不出任何规律的花纹。乱到什么程度?Wolfram 的数学软件 Mathematica 曾经真的拿它某一列的输出,当随机数发生器来用。
这里就藏着本期的第一句要紧话:图案的精巧,完全不蕴含规则的精巧。谢尔宾斯基三角看着像被精心设计过,其实只是"左异或右"五个字反复迭代;规则 30 的乱看着像背后有个复杂的随机源,其实也是同样短的一句话。你眼睛看到的复杂度,和生成它的规则的复杂度,是两个可以毫无关系的量。
看到一个精巧或杂乱的结果,别急着反推一个同样精巧或杂乱的成因(一个高明的对手、一套复杂的阴谋)。先问那个最笨的问题:有没有一条只看局部的简单规则,迭代几步就能长成这样?这条规则往往比你为"精巧结果"编的故事短得多——也更可能是真的。
EN An elementary cellular automaton: a row of black/white cells; each cell's next state depends only on itself and its two neighbours. Eight neighbourhoods, so 256 possible rules. Rule 90 draws a fractal, Rule 30 draws noise so good it was used as a random-number generator. The intricacy of the output says nothing about the intricacy of the rule.
把 256 条规则一条条跑出来,你会发现它们不是 256 种各不相同的乱,而是能归成四大类。这个划分是 Stephen Wolfram 做的,叫 Wolfram 四类(Wolfram classes)。
I 类:不管从什么初始行出发,很快全部塌进一个死寂的均匀态——全白,或全黑。II 类:停在一堆固定的、或原地周期性重复的结构上,像一排竖条、或一个来回闪的小块。有序,但也就这样了,不再冒出新东西。III 类:一片持续翻腾的噪声,没有一个稳定结构留得住,像没信号的电视雪花——规则 30 就在这一类。IV 类:最罕见,也最有意思。它既不冻结也不纯噪声,而是长出一些能维持形状、能移动、能相互碰撞的局部结构,在一片背景里游走。规则 110 属于这类。Chris Langton 给这条窄缝起了个名字:混沌边缘(edge of chaos)——卡在死板的秩序(I、II)和纯粹的混乱(III)之间。
这张图值得多看一眼。死板(II 类)和混乱(III 类)是两头,都很常见,也都没什么可看——一个什么都不再发生,一个什么都留不住。真正能承载"复杂行为"(能存住信息、能把它传到别处、能让两段信息相撞组合)的,只有中间那条要靠精心平衡才守得住的窄缝。这也是为什么"复杂"这么稀有:它不是有序的反面,也不是混乱的同义词,它是被这两者夹在中间的一小条。
EN The 256 elementary rules sort into four classes: I dies to a uniform state, II freezes into fixed or periodic structures, III boils into noise, IV grows localized structures that move and collide — the rare "edge of chaos." Order and chaos are both common and both barren; complex behaviour lives only in the thin fourth class between them.
把元胞自动机升到二维,就是康威生命游戏(Conway's Game of Life,1970 年由数学家 John Conway 提出)→ 参考 · 生命游戏与元胞自动机。规则比前面还少,只有四条。
一个格子活着,若周围八格里正好有 2 或 3 个活的,它继续活;否则死掉(太挤或太孤单)。一个死格子,若周围正好 3 个活的,就复活。就这四条,长出一整座动物园:静止不动的方块、原地一开一合的"红绿灯",以及最有名的滑翔机(glider)——五个格子组成的小图形,每过四步就回到原来的形状,但整体往斜下方挪了一格。它看上去在"移动",可根本没有任何东西在动,只有格子在按同一条规则一开一关。
更惊人的在后面:生命游戏被证明是图灵完备的(Turing complete)。用滑翔机当信号、用"滑翔机枪"当信号源,人们真的在里面拼出了与门、或门、非门,进而拼出一台完整的通用计算机。任何一台电脑能算的东西,原则上都能用生命游戏这四条规则算出来。一维世界也一样:前面那条乱糟糟的邻居——规则 110,2004 年被 Matthew Cook 证明同样图灵完备。一条只看三个格子的规则,计算能力和你的手机等价(只是慢得多)。
这件事有个统一的名字叫通用性很廉价(universality is cheap):造一台能算任何东西的机器,不需要复杂的硬件,一条最小的局部规则就够了。所以"它太简单了,不可能在做什么复杂的事"是一句无效的推理——简单,和"没本事",完全是两回事。
当你想用"这东西太简单/太小/太不起眼,不可能造成那么复杂的后果"来排除一个嫌疑(一段几行的脚本、一条看似无害的配置改动、一个小小的激励条款),停下。简单的局部规则,恰恰是最能长出任意复杂行为的那种东西。把"它简单"从你的排除理由里删掉,换成:实际把它跑一遍,看它会展开成什么。
mov 指令、甚至 PowerPoint 的动画系统。规律是:一个系统只要能表达"条件跳转 + 一块能增长的存储",它就藏着一台通用计算机。由此推得:一个系统"能不能算",几乎不由它看起来多复杂决定,那道门槛低到随手就跨过去了。真正稀缺的从来不是计算能力,而是把它组织成你想要的那个计算的那份麻烦。
EN Conway's Game of Life runs on four rules, yet its gliders and glider-guns can be wired into logic gates and a full universal computer — it is Turing complete, as is the one-dimensional Rule 110 (Cook, 2004). Universality is cheap: "too simple to be doing anything complex" is an invalid inference.
现在回到开头那句"没有任何近道",把它说准。它不对所有规则成立——恰恰是它成立与否,划出了可预测与不可预测的界线。
对规则 90 那种,其实有近道:第 N 行第 k 个格子是黑是白,正好等于组合数 C(N,k) 的奇偶性——一个公式,代进去就知道,不必逐行去跑。但对规则 110、规则 30 这种(第 III、IV 类)呢?Wolfram 给了个名字:计算不可约性(computational irreducibility)。意思是:想知道系统第 N 步长什么样,没有任何比"老老实实把前 N 步一步一步算完"更快的办法。不存在一个能"跳着算"的公式。这不是"我们还没找到",而是(对图灵完备的系统)原则上不可能有——否则就等于说你能不运行一个程序就预知它的输出,而这类问题(停机问题)早已被证明无解。
这和混沌(第 8 期会讲)是两种不同的不可预测。混沌是"初值差一丝丝,结果就差很多",本质是精度问题——理论上初值够准还能算。不可约性更绝:就算初值精确到底、系统完全确定、一点噪声都没有,你还是只能原速把它跑完,一秒都省不下来。确定,从来不等于可预测——这里的理由不是敏感,是根本没有捷径。
遇到一个规则清清楚楚、完全确定、但整体行为费解的系统(一堆相互作用的自动化策略、一个多方博弈的定价环境),别再花力气找那个"一步到位算出结局"的公式或直觉——对这类系统它可能根本不存在。把预算从"推导结局"改成"低成本地把它跑出来":做仿真、搭沙盒、灰度里小步放量,让系统自己把下一帧演给你看,而不是你在纸上把它猜出来。
EN Some rules have shortcuts (Rule 90's cell is just the parity of a binomial coefficient); Turing-complete ones like Rule 110 do not. Computational irreducibility means the only way to know step N is to run all N steps — no formula skips ahead. Unlike chaos (a precision problem), this holds even with perfect, noiseless initial data: determinism is not predictability.
现在说反面。"简单规则长出无限复杂、还能通用计算、而且抄不了近道"——这套说法很迷人,也正因为迷人,特别容易被拿去过度发挥。用之前,得先知道它的边界在哪。
第一,元胞自动机是离散、确定的玩具。格子非黑即白、时间一格一格跳、规则铁板一块、没有一丝噪声。真实世界是连续的、带噪声的,而且规则本身还会变(第 26 期讲的适应系统就专门讲这个)。"整个现实就是一台大 CA"是一个有启发的猜想(Wolfram 在这上面押得很重),不是一个已被证实的事实——把它当事实,就从科学滑进了形而上学。
第二,"混沌边缘是复杂/生命/计算的最佳地带"这句话,比它听起来要软得多。它源于 Langton 的 λ 参数实验,但 1993 年 Melanie Mitchell、James Crutchfield 和 Peter Hraber 用遗传算法复查,发现所谓"演化会自动把系统推到边缘去做计算"的结论,相当程度上是实验设置的产物,不是一条稳健的规律。"边缘"作为比喻很好用,作为一条可测量、可预测的定律,目前立不住。别拿它当挡箭牌,说"我们就是要待在混沌边缘"。
第三,图灵完备 ≠ 正在做有用的计算。说生命游戏"能"算任何东西,和说某个具体的生命游戏格局"正在"算有用的东西,是两码事。绝大多数第 IV 类格局,什么有意义的都没算,就是一堆滑翔机在乱撞。"它是图灵完备的"常被拿来给一个系统镀金,仿佛因此就深刻——但通用性是一种潜力,不是一项成就。
第四,也把决策线收回来:"复杂的结果不需要复杂的原因"说的是不需要,不是没有,更不是"所以怪不了规则"。那条局部规则真实存在、可以被指认、可以被修改。芋螺的壳有确切的发育机制,规则 30 有确切的定义。把"原因不必精巧"读成"没有原因可追",是又一次把一个关于结构的命题,偷换成一个关于责任的命题——和上一期自组织临界那个陷阱,一模一样。
拿"一条简单规则就能解释它"下结论之前,先诚实地说出你的系统和 CA 差在哪:有没有噪声?规则本身会不会自己变?你是真找到了那条规则,还是只找到一个"看起来像"的比喻?三个问号里只要有一个答不上来,就别把 CA 的结论直接搬过去——尤其别拿它去给谁开脱。
支持者会说能,且那是创新的最佳位置。但要小心:如第 5 节所说,这个说法目前更多是隐喻而非可测的主张——你得先说清这个组织的"坡度"到底是什么、拿什么量。说不出量纲的"边缘",就只是一个好听的词。真要落地,先找一个可观测的代理指标(比如决策的可逆比例、信息在层级间的流通速度),再谈"往边缘调"。
因为通用性是潜力,速度和密度是另一回事。规则 110 能算任何东西,但慢到没有任何实用价值——把一次加法编码进滑翔机的碰撞,要跑天文数字的步数。真实芯片贵在"每瓦、每平方毫米、每秒能组织出多少有用计算",而不在"能不能算"。这也反过来解释了第 5 节第三点:图灵完备是入场券,不是名次。
有。不可约性否定的是点预测(精确算出下一个具体状态),不否定学习分布、学习机制、学习边界。你没法预测下一场危机的确切时点与规模,但仍能认出"缓慢积累 + 阈值释放"这种结构、仍能改系统的耦合。可约的那部分照样可学——只是别再指望有一条能跳着算的"历史公式"。
一般来说——判断不了。"能不能被一条更短的规则生成"这个问题,本身就与柯尔莫哥洛夫复杂度(Kolmogorov complexity)相关,而后者是不可计算的(第 41 期会讲)。能做的只是"试着去搜一条短规则":搜到了,说明简单成因足够;搜不到,既不能证明它复杂、也不能证明它简单。谦逊是这里唯一诚实的姿态。