九章格数学 PhiloMath · 数学家的故事绘本 · 第四辑

冯·诺依曼 · 存储与博弈

第 38 册 · 数学家的故事 · 第四辑 · 1903—1957 · 布达佩斯—普林斯顿 · 明线:博弈 · 算子 · 机器 · 自复制 · 暗线:先搭框架
明线 · 博弈 · 算子 · 机器暗线 · 先搭框架1903—1957 · 布达佩斯—普林斯顿全龄通识 · 三层可读
题解这一册怎么读p.2

冯·诺依曼(1903—1957),布达佩斯人。他二十二岁写出集合论的公理,二十四岁证明博弈的基本定理,二十九岁给量子力学造好语言,四十二岁写下存储程序计算机的报告,四十五岁开始想「机器会不会自己复制自己」。

他一生做了三件事。第一件在基础:给「集合」立规矩。罗素悖论戳穿天真的集合观之后,是他把集合与类分开,把无穷的算术一条条写清。第二件在模型:把「利益冲突」写成一张表,证明任何有限的对局都有一个确定的值;又把量子力学的两套写法统一成一套,测量的预言从此有处可算。第三件在造物:程序与数据放进同一个存储器,机器从此可以改写自己;再往后,他想的是一张会生长的网格——自复制自动机。

明线四样:序数与公理(给无穷编号)、极小极大(对局有值)、存储程序(指令也是数)、自复制(描述要带在身上)。

暗线一句:先搭框架。他不急着解一道题,先造一个能装下这类题的舞台:要谈无穷,先立公理;要谈冲突,先画利益表;要谈测量,先定空间;要谈计算,先分五个部件。舞台搭好了,题目自己走上来。

五幕:第一幕讲布达佩斯的神童怎样把集合论的地基造牢(p.6—p.12);第二幕讲一张利益表怎样变成一门学问(p.13—p.19);第三幕讲量子力学怎样获得统一语言(p.20—p.26);第四幕讲一台机器怎样学会改写自己(p.27—p.33);第五幕讲一张网格怎样自己长出图案(p.34—p.40)。

三层读法照旧:故事层无需预备知识;数学层只用到加、减、乘、除、负数与一张小表(p.7—p.9、p.14—p.16、p.21—p.23、p.28—p.30、p.35—p.37),每一步都从头算起;注疏层给出原书、版本与研究文献,逐页可查。

引子两人各藏一枚硬币p.3

两个人玩一个游戏。各在手里藏一枚硬币,同时亮出。两面一样,甲给乙一块钱;两面不一样,乙给甲一块钱。

这个游戏公平吗?直觉说公平:四四摊开,四种情形两胜两负。可公平的真正意思是:谁也没法靠动脑子多赢。要是甲固定出正面,乙立刻全出反面——甲就输了。固定,就是弱点。

于是有一个念头:「出得没有规律,才有安全」。比如一半正面一半反面,用掷来定。这不是耍赖,这恰好是本册要算的东西:甲该按什么比例出,乙按什么比例出,两边刚好谁也占不到便宜。

换个更别扭的规则再试:「两枚同正,甲赢两块;同反,乙赢一块(甲付);一正一反,乙赢一块」。这下连直觉也不管用了:规则偏向谁?双方各该怎么出?

1926 年,一个二十三岁的人给出答案:不管规则多别扭,只要规则对双方一致,这样的对局一定有一个确定的「值」,双方各有一个最优比例。答案不是喊出来的,是把所有可能写成一张表,再从表里算出来的。

这张表,后来长成了一门学问。经济、政治、军事、生物,凡是有两方以上在互相盘算的地方,都用得上它。

而做这件事的人,一辈子都在做同一件事:先把问题装进一个框架,再在框架里把答案算出来。第二页先从他的少年说起。

引子多瑙河边的一个神童p.4

1903 年 12 月 28 日,诺伊曼·亚诺什生在布达佩斯。城在多瑙河两岸,河上一座链子桥,把旧城与新城缝在一起。

父亲是银行家。家里有书,有钢琴,有规矩;饭桌上谈的是钱、生意,还有各国的报纸。1913 年父亲买了贵族头衔,孩子的名字里从此多了一个「冯」字——这不过是匈牙利中产家庭的常规操作。

这孩子的异常,家里很早就注意到了。六岁,他能心算八位数的除法;对一张写着地址的名单看两遍,能整页背下来。这些故事流传很广,夸张的版本也很多;可靠的部分是:他的运算速度与记忆容量,远超同年龄。

十岁上下,家里人本来打算让他学些「实际的东西」。学校的数学教师拉茨找上门来,说:这样的孩子按常规课表念,是浪费。此后有大学教师来家里给他单独授课——这是匈牙利当时的做法,一批天才少年都这样被养大,其中好几个后来改写了二十世纪的数学。

1919 年,布达佩斯政局动荡,全家短暂离开。十六岁那年他明白了一件事:安稳不是常态,脑子是带得走的财产。

1921 年他去了苏黎世,念化学工程——这是父亲的安排,做实业的儿子好接班。可他同时在布达佩斯大学注册了数学,两边都念。课堂上做化工的笔记,课后写的是集合论的论文:1922 年他十八岁,第一篇论文发表,写的是「把一个集合排成良序」时每一步的编号。

1925 年拿到化工文凭,1926 年拿到数学博士。两张文凭,一人在手。从此他不必再选边——哪边的问题有意思,他就去哪边。

引子三样东西:一张表、一台机器、一张网格p.5

这本册子要处理三样东西。三样看起来毫无关系:一张利益表、一台机器、一张空网格。

第一样,一张利益表。两个人对局,把每一步组合的输赢写进格子里。表一旦画好,「该怎么做」就从一场心理战变成了一道计算题。这件事听起来平常,它是本册第二幕的全部内容。

第二样,一台机器。早年的计算机换一道题,要重新插一遍线板,插几天;冯·诺依曼说:把指令也当成数,和数据放进同一个存储器。从此机器可以读自己的程序,也可以改写它。今天一切通用计算机,形状都由此而来。

第三样,一张网格。每个格子只有两种状态,每个格子只看左右邻居,一条简单的规则,一遍遍执行。图案会自己长出来:有的规则织出雪花纹,有的规则,按冯·诺依曼的设想,能照着格子里的「描述」把自己再造一遍。

三样东西有一个共同点。它们都先回答「在什么框架里讨论」:谈冲突,先有表;谈计算,先有存储器;谈生长,先有网格与规则。框架立好之后,剩下的都是算。

这个办法,本册把它叫做「先搭框架」。

先算一个具体的数:无穷多,能像有穷的数一样排大小吗?「能——但要用一种新的编号法,让「第几号」自己就是排在它前面所有号的集合」。下一幕从一个六岁会心算八位数的孩子讲起。

第一幕 · 故事两张文凭的年轻人p.6

1926 年,冯·诺依曼二十三岁,兜里有两张文凭:苏黎世的化学工程,布达佩斯的数学博士。化工那张替父亲交代,数学那张替自己交代。

博士论文写的是集合论。这门学问当时正处在一个尴尬的关口:它是整个数学的地基,可地基本身裂了缝。

裂缝是这么来的。十九世纪末,数学家把一切对象都看成「集合」:数是集合,函数是集合,连直线也是点的集合。1901 年,罗素指出一个要命的问题:把「所有不包含自身的集合」收成一堆,问这堆东西包不包含自身——说包含就矛盾,说不包含也矛盾。

两句都错,说明那一问本身有毛病。地基上有一根梁,谁碰谁塌;房子已经盖了几层,不能推倒重来,得把那根梁换掉。

几路人马同时在换。策梅洛 1908 年提出一套公理:不许随便「收一堆」,收的方式要一条条列出来。冯·诺依曼在二十岁出头加入进来,他的做法更彻底:干脆规定有两层——能当元素的是「集合」,太大而不许当元素的叫「类」。「所有集合的类」存在,但它不在任何一层里当元素,悖论的那一问从此问不出来。

1927 年他去了哥廷根,给希尔伯特当助手。希尔伯特的口号是「把数学放进一个牢靠的形式框架里」,这正合他的胃口。同一年,他还在柏林大学当上了无俸讲师——二十二岁,柏林最年轻的讲师之一。

集合论这一幕,在本册里是「搭地基」的样本:先立规矩,再谈房子。同一套思路,十年之后会在完全不同的地方再现。

第一幕 · 数学让数自己当自己的户口p.7

先算一个最基本的问题:「三」这个数,到底是什么?

老答案有两种。一说它是所有「三件套」的共同形状——可「形状」又是什么,没人说得清。一说它就是 0、1、2 这三个东西凑成的一堆。后一种说法离谱地简单,却有个毛病:这一堆的「户口」没落在哪,换一套记号就得重讲一遍。

冯·诺依曼的做法是让每个数当自己的户口:一个数,就是排在它前面的所有数凑成的那一堆。用符号写,令空集为零,给一条生成规则

S(α) = α ∪ {α}

把 α 已有的一切,连同 α 自己,收进新的一堆。从零开始,一路生成:

0 = ∅ 1 = {0} 2 = {0, 1} 3 = {0, 1, 2}

当场验一个:3 = {0, 1, 2} 里恰好有三个元素——0、1、2。「三」自己把自己数了出来,不欠任何外部的账。

这套编号有个额外的甜头:「小于」不用另立规矩,就是「属于」。查 1 < 3:看 1 是不是 3 = {0, 1, 2} 的元素——是,成立。大小关系和成员关系合成了一件东西。

真正要紧的是下一步:有穷数这么排,无穷也能这么排。把全体有穷数收进一堆,按同一条规则它就是第一个无穷数,记作 ω:ω = {0, 1, 2, 3, …}。它的下一个是 ω + 1 = ω ∪ {ω}——无穷也能接着数了。

一根从有穷直通无穷的编号链,规则只有一条。地基的「梁」,换成这样的材质,裂缝就绕开了。

第一幕 · 数学把裂缝换成规范p.8

把罗素的那一问,用冯·诺依曼的两层语言重新摆一遍。

第一步,天真地收一堆:把「所有不包含自身的集合」收成一堆,叫 R。然后问:R 包含 R 自己吗?

若 R ∈ R,按定义 R 不含自身,矛盾; 若 R ∉ R,按定义 R 该被收进来,又矛盾

两个方向都死。这说明「随便收一堆」这件事本身就是违规操作。

第二步,换两层语言再看:能谈「包含自身」的,只能是不太大的集合;而「所有集合的类」太大,是类不是集合,不许当元素。于是 R ∈ R 这句话在两层语言里根本写不出来——不是结论错误,是问题本身不合法。

这就是「先搭框架」的最纯样本:不改题,改题目的语法。

框架得立成白纸黑字。冯·诺依曼的公理系统里,有一条管「收一堆」:任何一条已经说清的性质,能从已有的集合里收出一个集合;但「收」的结果必须是集合,且永远在已有集合的范围之内。无穷的一堆不必亲手数出来,一条公理直接保证它存在。

这套系统有个不大对称的地方,值得说一句。它保证不了「每个集合都能排成一列」——这条独立的规矩叫良序原理,要另加一条选择公理。冯·诺依曼自己的序数定义在这里显出威力:只要排好了,编号自动就是上一页那套,不用再解释「第几」。

到了 1931 年,哥德尔证明:任何足够强的一致系统,总有些真话它证不出来。「一个框架管尽一切」的梦破了一角。框架还是要搭——只是从此人人都知道,每个框架都有边界,而看见边界,也是框架给的能力。

第一幕 · 数学无穷的算术:加法不换位p.9

序数搭好了,无穷的加法就能算了。算出来会碰到一件反直觉的事。

先定规矩:两个排好队的集合首尾相接,接完之后再按「属于」重新编号,得到的序数就是「和」。有穷时毫无花样:2 + 3 = 5,加法照旧。

无穷一进场,花样来了。算 1 + ω:先排 1 个,再接一整条无穷队 ω。前面那 1 个,恰好是整条队的第一个位置——整条队从头到尾没有空位,接完还是 ω:

1 + ω = ω

再算 ω + 1:先排一整条无穷队,队尾再补 1 个。无穷条位置一个不空,队尾那个新位置排不进任何已有的位置——它是一个新的序数,比 ω 大:

ω + 1 」 ω  故 1 + ω ≠ ω + 1

无穷的加法不换位。「排队顺序」在这里是本质:先到的人占位,位满了就是满了;后面补的只能加在队尾。

继续往下,号越编越大,但规则始终一条:ω + 2、ω + 3……排满一整条「队尾有尾巴」的队伍,再收成一堆,得 ω·2;ω·2 之后还有 ω·2 + 1,一路到 ω·2 + ω = ω·3,再往后 ω·ω——它有名字,叫 ω2。

这套算术不是文字游戏。逻辑学里拿它给证明过程编号,计算机科学里拿它描述「跑不完的程序要走多少步」;康托尔当年造它是为了解三角级数,一百年后它长在了数理逻辑的地基上。

第一幕到此收口:从「三」到 ω2,整条链只用了一条生成规则。这就是先搭框架的回报——一处立规矩,处处免商量。

第一幕 · 暗线先搭框架p.10

「先搭框架」四个字,本册要用五幕,得先说清它不是什么、是什么。

它不是绕开难题。序数定义没有把无穷变简单,它把「无穷怎么谈」变清楚了——难题还在原地,只是从「含混的难」变成了「清楚的难」。

它也不是空架子。公理不是愿望清单,每一条都要干活:分离公理堵住悖论,无穷公理放出 ω,后继规则生成整条数链。一条公理值不值,看它能推出多少、挡住多少。

它真正的意思是:把「商量」换成「规定」。「三是什么」可以永远争论下去;规定 3 = {0, 1, 2},争论当场结束,剩下的问题全变成可以算的——1 + ω = ω 还是 ω + 1,排一排队就有答案。

这个次序有个讲究:框架要立在算之前,而不是算完之后补。先算再定,算的每一步都在偷换前提;先定再算,算错了改框架,改哪条一目了然。

用在别处也成立。两个部门吵流程,多半不是谁错,是没有共同的框架;先坐下来把「什么算一个提议、谁在什么顺序表态」定下来,吵的内容立刻变窄、变得可解。这不是圆滑,这是把矛盾从「人的层面」搬到「框架的层面」。

冯·诺依曼一辈子干的就是这个:每进一个新领域,头一件事不是解题,是立框架。至于框架里装什么题——接下来四幕,一幕比一幕大。

第一幕 · 交汇三条线拧成地基p.11

第一幕走了三条线。

第一条是家里的:两张文凭。化工给谋生,数学给志业。这条线给的是一种底气:一辈子不必在「有用」与「有意思」之间二选一。

第二条是拉茨给的:被看见。一个中学教师登门说「这孩子不能按常规念」,于是有大学教师上门、有论文十八岁发表。这条线给的是一个起点:天才是长出来的,但得先有人不按常规浇。

第三条是罗素给的:裂缝。悖论证明「怎么都行」的集合观站不住。这条线给的是方向:不是修补定义,是重立地基。

三条线拧在一起,是 1923 年到 1928 年那批论文。序数让「第几」自明,两层语言让悖论失声,公理清单让地基可查。他那年二十四五岁,从进场地基到封顶,只用了五年。

但地基不是给地基住的,是给房子住的。同一套「先立规矩再干活」的手艺,下一幕要搬去一个完全想不到的地方:牌桌上。

第一幕 · 小结本幕留下的三件事p.12

一、数可以自己当自己的户口。3 = {0, 1, 2},一个数就是排在它前面所有数的集合;「小于」就是「属于」。无穷从 ω 起照此办理,ω + 1 」 1 + ω。

二、悖论是语法的病,不是逻辑的病。把太大的东西降为「类」,罗素那一问写不出来;公理清单让「收一堆」有法可依。

三、先搭框架,再算题目。框架立在算之前,错误才有处可改;每个框架都有边界——知道边界在哪,也是框架给的能力。

下一幕换一个世界:两个人藏硬币,怎么把「该出什么」变成一道有唯一答案的计算题。

第二幕 · 故事二十三岁证明牌桌定理p.13

1926 年,冯·诺依曼在哥廷根的会议上宣布了一个结果。题目小得出奇:两个人玩对局,输赢规则一定,问有没有稳妥的出法。

这个问题听起来不像「正经数学」。千百年来它归牌桌管、归兵书管,数学家只在例外情形碰过它。难处一眼可见:甲的最优取决于乙怎么出,乙的最优又取决于甲怎么出——两个「最优」咬在一起,像两只手互相掰腕子。

他证明的东西却硬得很:只要规则对双方一致、输赢能相抵(甲赢一块乙就输一块),那么这样的对局一定有一个确定的值;双方各有一个稳妥的出法,按它出,就能保证不输得比这个值更差。

关键的一步是引入「按比例出」:「不出死的一张牌,按某个比例随机出」。加入随机,两个咬死的「最优」就松开了——p.15 会算给看。

1927 年他二十三岁,已是柏林大学讲师;1929 年转汉堡。转年,普林斯顿大学请他去讲量子力学——一学期客座,一去不回。1933 年,普林斯顿高等研究院成立,三十岁的他成为创院教授里最年轻的一位;同一批名单里有爱因斯坦。

牌桌的事没有放下。1940 年前后,经济学家摩根斯坦到普林斯顿,两人合写一部书,把「对局」从两人推广到多人、从零和推广到结盟。1944 年书出版,六百多页,名叫《博弈论与经济行为》。经济学从此有了一件新工具:把利益冲突写成表,再从表里把答案算出来。

一门数学在诞生时就预定了自己的应用,这种事不多见。他晚年自己评过:数学观念超前的例子不少,但像这样精确命中十来年后之所需的,罕见。

第二幕 · 数学把输赢写成一张表p.14

接着 p.3 那个别扭规则玩下去:同正,甲赢 2;同反,乙赢 1(即甲得 −1);一正一反,乙赢 1(甲得 −1)。写成利益表——行归甲选,列归乙选,格子里是甲的所得:

    乙正 乙反
甲正   2  −1
甲反  −1   1

先问最笨也最要紧的问题:只许出死牌,谁占上风?

甲的算法叫「最坏打算」:出「甲正」,最坏是遇到乙反,得 −1;出「甲反」,最坏是遇到乙正,得 −1。两条路的保证一样糟:甲至多保证 −1。

行最小值:甲正 min(2, −1) = −1 甲反 min(−1, 1) = −1

乙换一个方向算,他的「最坏」是甲拿得最多:乙出「正」,最坏甲得 2;乙出「反」,最坏甲得 1。乙至多能把甲压到 1。

列最大值:乙正 max(2, −1) = 2 乙反 max(−1, 1) = 1

于是出现一道缝:甲保证 −1,乙压到 1,两个数不相等。

甲的保证 −1 < 乙的封锁 1

缝的含义:若双方都出死牌,实际结果落在 −1 与 1 之间,具体落哪,取决于谁先犯错。一场严肃的对局,居然变成比谁不犯错——这说明死牌的框架太小,装不下答案。

缝有多宽,随机就有多要紧。下一页把随机放进框架里,这道缝会被一个分数填平。

第二幕 · 数学一个分数填平那道缝p.15

放开手脚:甲可以按比例出。设出「甲正」的比例是 p,出「甲反」就是 1 − p。乙出什么,甲的平均所得就能算:

乙出正:2p + (−1)(1 − p) = 3p − 1
乙出反:−p + 1·(1 − p) = 1 − 2p

乙精明,专挑甲便宜的那条路打;甲的保证是两条里的较小者。要保证得最多,就让两条一样便宜——乙无从挑起:

3p − 1 = 1 − 2p ⟹ 5p = 2 ⟹ p = 2/5

甲该五分之二出正、五分之三出反。这时的保证是

3 × (2/5) − 1 = 6/5 − 1 = 1/5

乙同样可以随机:设乙出「正」的比例是 q,甲两种死牌的平均所得是 2q − (1 − q) = 3q − 1 与 −q + (1 − q) = 1 − 2q。令二者相等,解得 q = 2/5,乙的平均付出同样是 1/5。

两头对上了:甲能保证 1/5,乙能把甲压到 1/5。那道从 −1 到 1 的缝,被一个分数严丝合缝地填平:

−1 < 1/5 < 1  (p = q = 2/5)

回头再看,「随机」不是掷骰子的仪式感,它是把两个最坏情形摊平的工具:只要比例对,对手猜牌猜得再准,也占不到便宜。这就是为什么扑克高手要诈唬,而且诈唬的比例是算出来的。

更值得注意的是方法:答案不在玄想里,在一张四格的表里。框架一换——从「出哪张牌」换成「以什么比例出牌」——咬死的两只手就松开了。

第二幕 · 数学定理与它的边界p.16

把上一页做成的事,写成一条定理:

max(行最小值)= min(列最大值)

任何规则对双方一致的二人零和对局,只要每方能选的策略有限,上式必成立,公共的值就是「对局的值」;达到它的混合策略对就是双方的稳妥出法。

这句话有两个方向的读法。

往小读:牌桌上有答案。只要愿意随机,谁也不必靠猜心思过日子;「值」就是这场对局的公平价格——值对谁有利,规则就偏向谁。

往大读:证明是构造性的。冯·诺依曼的论证把混合策略的空间看成一个凸的几何对象,再指出「甲的最差线」与「乙的最差线」中间夹着的那一点必然存在——凸集分离。这套几何话术,十年后长成了线性规划对偶性的雏形:1947 年他与丹齐格一次谈话,当场确认了这层等价。

定理的边界也要说清。它管两人零和:甲赢的等于乙输的,利益完全对立,答案才能是一个数。利益不完全对立时——做生意、谈军备、养孩子——「值」没有了,取而代之的是「对谁都没好处去单方面改动的安排」,那是另一套定理,p.48 再讲。

还有一条现实的讲究:混合策略要求真随机。人脑造假随机很容易被看穿,于是「用装置掷骰子」从笑话变成了正经的技术要求——这道要求,后来落在了机器头上。

第二幕到此收口:一张表、一个比例、一个值。冲突被驯服成计算——但计算得有人来做。1944 年那本书付印时,世上最快的电子计算机正在装配;两件事即将相遇。

第二幕 · 暗线先画表,再谈人心p.17

第二幕的暗线还是那四个字:先搭框架。这次的框架,是一张表。

冲突之所以难,多半因为各方讲的不是一件事:一方在讲心思,一方在讲面子,一方在讲先例。画表是把这一切先翻译一遍:什么人、能做什么、每一种组合之下各自得到什么——不评价,不修辞,只登记。

表画好之后,三件奇妙的事发生。

第一,分歧变得可算。p.14 那道缝,在争吵的层面上是「谁也不服谁」,在表的层面上只是一个不等式;不等式有解法,服不服无关紧要。

第二,随机获得了身份。日常语言里「碰运气」近于贬义;在表里,混合策略是一个合法的点,比例有方程管着。框架不改变人的处境,改变的是哪些话有资格进入讨论。

第三,答案不赖于善意。极小极大定理给出的稳妥出法,不以「对方讲理」为前提;它保证的是最坏情形的下界。好的框架让协议不依赖人品——这是它比劝架高明的地方。

也得说一句边界:表登记「得到什么」,登记不了「是什么感受」;把无法折算成利害的东西硬塞进格子,框架就失真了。知道什么进得了表、什么进不了,与会画表一样重要。

下一幕,同一个「先搭框架」,要搬到物理里去——那里的冲突不是人与人,是两套写法互相不服。

第二幕 · 交汇一张表走进经济学p.18

1944 年那部书,正文第一句话就亮了底:本书要对经济问题做一番数学处理,用到的核心概念是「策略博弈」。六百多页写下来,经济学有了一门新分支。

影响沿三条路走。

第一条进经济学。垄断与买主的对局、双边贸易的结盟、市场的稳定性,书里都给出了模型;此后二十年,纳什把均衡点做完,德布鲁把一般均衡做严,1994 年诺贝尔经济学奖颁给了三位博弈论学者。一门从牌桌出发的数学,成了经济学的基础语言之一。

第二条进统计与决策。统计学家瓦尔德当年读到了极小极大,把它翻成「最坏情形下的最优决策」,统计决策论由此立起来。冷战年代,威慑、核查、谈判成了博弈论的实践场;「威慑的可信性」这类词,背后都是利益表。

第三条进生物学。1973 年,梅纳德·史密斯提出「进化稳定策略」:物种的争斗策略不必有头脑,自然选择本身就是那个按比例出牌的玩家。表不必有人画,报偿照算。

三条路的共同点是同一句话:哪里有策略互动,哪里就有利益表;有了表,冲突就从修辞变成计算。

下一幕回到底层的物理:1925 年前后的量子力学,两套写法各说各话,吵得不可开交——那也是一张「表」能解决的事吗?是,只是那张表有无穷多行。

第二幕 · 小结本幕留下的三件事p.19

一、冲突可以登记成一张表。谁、能做什么、每种组合各得什么——三栏填满,「该怎么做」就从心理战变成计算题。

二、随机是数学工具,不是侥幸。利益表 (2, −1; −1, 1) 无鞍点,混合比例 2/5 把保证从 −1 提到 1/5;「按比例出」是能算的、唯一稳妥的。

三、两人零和必有值。max min = min max,公共的值是对局的公平价格;利益不完全对立时换成均衡概念(p.48),框架照旧。

下一幕:物理学家吵了两年,他出手——把两套量子力学写进同一个空间。

第三幕 · 故事两套写法吵了两年p.20

1925 年夏天,海森堡写出一种怪东西:电子的位置不用数表示,用一张方格表表示;两个表相乘,还必须按特定的次序乘——乘错次序,结果就错。

几个月后,薛定谔写出另一种:电子是一个波,用一条方程描述波怎样演化;解出来是一个波函数,处处连续,看得见摸不着。

两套写法都算得准实验数据,可两边的味道完全不同:一边是离散的表格与怪异的乘法,一边是连续的波与熟悉的微积分。物理学家吵开了:电子到底是「跳」的,还是「波」的?

1926 年,对头双方先后证明两套写法算出的预言一致。「算出来一样」与「为什么一样」是两件事——后者没有人给得出干净的说法。

那年秋天,二十三岁的冯·诺依曼到哥廷根给希尔伯特当助手。希尔伯特早已把「数学的空间」整理成一门公理化几何;冯·诺依曼接过这套工具,对准量子力学。

他与希尔伯特、诺德海姆合写一篇论文,随后独自写成《量子力学的数学基础》(1932 年出版)。书里的事说得平直:量子态是某个空间里的向量,可观测量是空间里的算子,测量的预言是向量与算子的一个数——两套写法只是同一空间的两种坐标读法。

吵了两年的架,结论是一句话:别问电子「是」什么,先定「在哪个空间里算」。

这是「先搭框架」的第三件作品:第一件管无穷,第二件管冲突,这一件管自然。

第三幕 · 数学把测量写成矩阵p.21

框架先立起来:取一个空间,里面的向量是「状态」,方阵是「测量」,一个状态经一个测量得到的预言,是算出来的一个数。先从最小的空间玩起:只有两个状态的系统。

给这个二态系统配最简单的两个测量。先约定记法:方阵写作括号里的四格,数按行排、分号隔行。第一个测量叫「翻转」:

σx = ( 0 1 ; 1 0 ) ——把状态 (1, 0) 变成 (0, 1),把 (0, 1) 变成 (1, 0)

做两次翻转,回到原地。矩阵乘一遍:

σxσx = ( 0·0 + 1·1  0·1 + 1·0 ; 1·0 + 0·1  1·1 + 0·0 ) = ( 1 0 ; 0 1 )

即 σx2 = I(单位矩阵)。测两次「翻转」,等于没测。

第二个测量叫「分正负」,作用是:状态 (1, 0) 给结果 +1,状态 (0, 1) 给结果 −1。写成矩阵:

σz = ( 1 0 ; 0 −1 )

它也自乘归一:σz2 = I。两个测量各自都「翻两次等于没翻」——按日常直觉,两件事应该互不干扰。

但乘法次序不同,结果就不同。先「分正负」再「翻转」,与先「翻转」再「分正负」,得到的矩阵对不上——这不是抽象问题,下一页把两个乘积逐格算出来,看差出多少。

框架的好处此刻已现:关于测量的一切争论,先变成矩阵乘法。乘法不会吵架。

第三幕 · 数学乘错次序,差出什么p.22

逐格算两个乘积。先算「先分正负、再翻转」,即 σxσz:

σxσz = ( 0·1 + 1·0  0·0 + 1·(−1) ; 1·1 + 0·0  1·0 + 0·(−1) ) = ( 0 −1 ; 1 0 )

再算「先翻转、再分正负」,即 σzσx:

σzσx = ( 1·0 + 0·1  1·1 + 0·0 ; 0·0 + (−1)·1  0·1 + (−1)·0 ) = ( 0 1 ; −1 0 )

两个乘积恰好互为相反数。求差:

σxσz − σzσx = ( 0 −2 ; 2 0 ) = −2 ( 0 1 ; −1 0 )

差不是零。这个「乘法次序差」叫交换子,它不为零,两个测量就不相容。

不相容的物理含义,用一个说法固定下来:两个测量若交换子为零,可以同时说准;交换子不为零,说准其一必然扰动其二——不确定关系的根源就在这组非零的差。海森堡 1927 年写下的那个不等式,落在这个框架里就是一句话:交换子的大小给不确定度定了下界。

框架在这里做了两件事。其一,把争论翻译成减法:上面三行矩阵,比一切「电子本性如何」的雄辩都短。其二,把猜想变成定理:冯·诺依曼证明了什么算子配当测量、什么空间配当状态,公理一列,越界的话自动非法。

顺带补一句 1932 年书里另一件大手笔:他把「测量之后发生什么」也写成一条公理——状态瞬间跳变。跳变是否「真实发生」,至今仍在讨论;但把它写进框架,计算从此不再依赖解释。

第三幕 · 数学给期望值定一个算法p.23

状态有了、测量有了,预言那个「数」怎么算?框架给出一个统一的算法:取迹。

迹最好懂:方阵对角线上的数加起来。先在自家矩阵上热身:

tr I = 1 + 1 = 2  tr σx = 0 + 0 = 0  tr σz = 1 + (−1) = 0

约定把迹除以维数,叫归一化迹:单位矩阵的归一化迹是 2/2 = 1,两个测量的归一化迹都是 0。

算法是这样用的:把系统的状态写成一半一半的混合——一半时间在 (1, 0)、一半时间在 (0, 1)。这个混合状态的归一化迹期望为:对「分正负」测量,(1/2)(+1) + (1/2)(−1) = 0。

换个状态再试:若系统确定处于 (1, 0),「分正负」的期望是 1·(+1) = +1。状态不同,同一测量给出不同的数——而数的算法始终一样:状态的配比,乘上测量的取值,加起来。

这些例子手工可算,但别被小例子骗了。真正的量子力学要用到无穷维的空间,测量算子甚至没有有限的矩阵;冯·诺依曼把「迹」推广到无穷维,把「谱」推广到连续谱,1932 年那本书的后半本干的全是这个。

而 1930 年代中段,他走得更远:与其个别的空间,不如研究「所有测量组成的代数」——把测量之间的乘、加、取共轭看成一个整体结构,给它分类。这套结构后来叫冯·诺依曼代数;其中最玄的一类(第二类因子)里,居然存在「连续的维数」:一块测量可以切成两半,每一半又可再切,切出来都不多不少是原来的一半——维数不再是整数。

一句话收口:他给了量子力学一台「期望值机器」——状态进去,数字出来,中间不需要任何想象。

第三幕 · 暗线换语言,而不是换立场p.24

第三幕的暗线,是「先搭框架」最容易误读的一面:框架不是调解人,不是各打五十大板。它常常是把双方的语言都废掉,换一种谁也没用过的新语言。

矩阵派与波动派吵「电子是什么」。新语言根本不回答这个问题:在新框架里,「电子」不出场,出场的是向量、算子、迹。两派的老话被一起搁置——不是判谁对,是让老话失去出场的资格。

这样做的力量与代价,都值得看清。

力量在于:不可判定的争论自动消失。「波与跳哪个真实」在新语言里写不成问题,就像罗素那一问在两层语言里写不成问题。框架每立一次,就有一批问题不是被解决,而是被注销。

代价在于:注销的问题未必真的无聊。「电子是什么」背后藏着物理实在性的大问题,框架把它按下不表,不是答了,是悬了。框架的干净,一半来自把脏活圈在墙外——墙外的事,终究要有人回头接。

冯·诺依曼对此心知肚明。1932 年那本书的最后一章写的不是计算,是「测量」——框架里最不干净的那件事。他把跳变写成公理,等于在框架的墙上开了一扇门,门外挂着牌子:此处待修。

下一幕他要造的机器没有这个麻烦:机器里没有「是什么」,只有「放哪里、下一步做什么」。框架在机器这件事上干净到底。

第三幕 · 交汇一个空间的多种身世p.25

希尔伯特空间这块框架,后来被许多行当认了亲。

第一处在数学内部。算子环三十年后长成算子代数;冯·诺依曼代数的分类成了独立的学科,康纳 1970 年代的分类定理把它推到今天的样子。当年「连续维数」的怪物,后来在拓扑学与几何群论里处处现身。

第二处在工程里。希尔伯特空间成了信号处理的家常话:傅里叶变换、小波、压缩感知,全是「在合适的基底下展开状态向量」。第三幕那些矩阵,如今每台手机里的滤波器每天都在乘。

第三处在量子信息。量子比特就是本册的二态系统:σ 矩阵是它的两种测量,交换子非零是它区别于经典比特的本钱;量子算法的设计,一大半是在挑「按什么次序乘」。1932 年的公理,到 1990 年代成了工程图纸。

三条路说同一件事:框架比提出它的问题活得长。希尔伯特空间因量子力学而立,却不止于量子力学——这正是「先搭框架」的红利:框架立得正,别处的问题自己找上门。

下一幕,冯·诺依曼要搭他此生最出名的一个框架:一台机器的内部宪法。

第三幕 · 小结本幕留下的三件事p.26

一、两套写法一个空间。矩阵与波动的争吵,止于同一组向量与算子的两种读法;框架不判胜负,它废掉问题。

二、不相容就是交换子非零。σxσz = −σzσx,逐格可算;不确定关系在这个框架里是一条定理,不是一句格言。

三、期望有算法。状态配比乘测量取值再加总(迹);无穷维与连续谱由谱定理接管,测量的整体结构分型成科(I、II、III)。

下一幕:一道关于「程序」的框架题——指令与数据,凭什么要住在两个世界?

第四幕 · 故事火车站台上的谈话p.27

1944 年夏,马里兰州阿伯丁火车站的月台上,两个人等同一班车。一个是戈德斯坦,军方弹道研究实验室的联络官;另一个偶然认出了他——冯·诺依曼,此时是军方的科学顾问。

萍水相逢,戈德斯坦硬着头皮搭话:实验室正造一台电子计算机,每秒能做几百次乘法。据戈德斯坦后来回忆,谈话从这一刻变了味:起初像面试,五分钟之后,是冯·诺依曼在向他提问,而他在答。

战时与战后的计算需求大得吓人:弹道表、气象、工程数值,样样都要海量乘法。冯·诺依曼此前为战争做过一些计算方面的工作,具体内容此处不多说;要紧的是这一面站台上的谈话让他看清了一件事:机器,值得他亲自下场。

那台机器叫 ENIAC,1945 年建成。它快得惊人,用起来却苦:一道题的「程序」不在机器里,在插线板上——要换一道题,得拔插头、换线、扳开关,忙上几天。机器每秒几百次乘法,配程序却按天计——瓶颈不在算,在「告诉机器算什么」。

1945 年 6 月,冯·诺依曼写下《EDVAC 报告初稿》。一百零一页,打印体,署他一个人的名;内容是下一代机器的总体设计。这份报告后来被简单叫做「101 号报告」,它是现代计算机的出生证。

报告里那个后来以他命名的想法,其实一句话就能说完:把指令也当成数,和数据放进同一个存储器。

一句话,半页纸;后面的五十年,计算机都长成了它的形状。

第四幕 · 数学插线板与存储器的分界p.28

先把旧机器的苦处算一遍。ENIAC 换一道题要几天,一年做不了几道题。乘法每秒几百次,「配题」却以天为单位——两边的速度差了约一亿倍。

病根在哪?「题目」住在机器外面:插在板上是接线,扳在开关上是位置。机器本身只会按接线行事。

101 号报告的改革,从给存储器编号开始:存储器是一排格子,每格一个编号:0、1、2、3……;每格里住着一个数。

第二步是那句话的完整版:指令也是数。一条指令拆成两段:前段记「做什么」(取、存、加、减、转移……),后段记「对哪个编号的格子做」。两段各是几个比特,合起来就是一个数——指令与数据在机器眼里毫无分别,都是格子里的一串数。

第三步是把两者混住:程序本身放进存储器,和数据用同一套编号。于是「换一道题」从拔线几天,变成往格子里写几个数——以秒计。

插线板时代:程序=机器外部的接线;速度以「天」计
存储程序:程序=存储器里的数;写入以「秒」计

还有一层当时无人料到的红利:既然指令是数,机器就能读它、算它、改它——程序可以作用于程序自己。编译器、操作系统、一切「用软件造软件」的行业,种子全在这一步。

下一页把这套安排走到具体:编一个小程序,一格一格看着机器把它跑完。

第四幕 · 数学三格数据的半分钟p.29

编一个小程序:算 17 + 25,结果存起来。

安排存储器。用 20、21、22 三格放数据,用 0、1、2 三格放程序:

格子 20:17  格子 21:25  格子 22:(空)
格子 0:取 20 格子 1:加 21 格子 2:存 22

机器从头执行,走三步。

第一步,「取 20」:控制单元从 0 号格读出指令,译出「取」,再去 20 号格把 17 送进运算器。第二步,「加 21」:从 1 号格读指令,译出「加」,把 21 号格的 25 送进运算器,与已有的 17 相加,得 42。第三步,「存 22」:把 42 写进 22 号格。走完:

格子 22:42 (17 + 25 = 42)

现在体会一下「程序是数」的分量。把 21 号格的 25 改成 100,别的什么都不动——同一份程序算出 117;把 20 号格改成 41、21 号格改成 1,算出 42 的还是同一份程序。程序纹丝不动,功能随数据而变。

再进一步:把 2 号格的「存 22」改成「存 22 的格子号放到 1 号格」之类,程序还可以改写程序——这正是「指令也是数」的题中之义。

三步循环的名字要记下:取指、译码、执行。一切存储程序计算机的一生,都是这三步的循环;循环每次拉长到几亿分之一秒,就是今天口袋里的机器。

第四幕 · 数学五个部件与三个循环p.30

101 号报告把机器拆成五个部件:运算器(做算术)、控制器(读指令、发号令)、存储器(住着数据与程序)、输入、输出。五个部件加一个循环——取指、译码、执行——就是全部。

这个划分妙在哪?妙在它把「会算」与「会调度」分开:运算器只管加减乘除,一事不知;调度全在控制器,而控制器的全部智慧来自存储器里的数。机器的「聪明」被整体搬进了可读写的格子。

补一块拼图:转移指令。「转移到 5 号格」意思是:下一步不接着读 3 号格,跳去把 5 号格当指令。有了它,程序能自己绕圈——「把 1000 个数各加一遍」不必写一千条指令,两条指令加一个判断就能循环。

把循环数一遍:程序三行,循环一千次,机器执行三千步。程序长度不随数据量涨——这是存储程序机器与一切旧式机器的分水岭。

1946 年起,冯·诺依曼与戈德斯坦、伯克斯在普林斯顿高等研究院造自己的机器,1952 年建成。它是当时最快的机器之一,更重要的是:它的图纸广为散发,全世界的实验室照着造——后世把「运算、控制、存储、输入、输出」这个五件套直接叫「冯·诺依曼结构」。

70 年过去,器件换了六代:电子管、晶体管、集成电路、芯片、多核、云端;五件套的骨架没换。一部机器史,几乎全是往这套框架里填东西的历史。

第四幕 · 暗线一切皆编号p.31

第四幕的暗线,是框架里最朴素也最激进的一步:一切皆编号。

存储器给数据编号;指令也是数;指令里的「做什么」是数,「对谁做」还是数;连「下一步读哪一格」——程序计数器——也是一个数。机器里流动的一切,都被翻译成同一种通货。

统一通货的回报,一件一件数:

回报一:换题免拔线。程序进存储器,改题改数即可——p.28 已算过账。

回报二:程序可以加工程序。数能被算,指令既然是数,就能被另一段指令算出来。编译器由此可能:人写高层的一句话,机器自己翻成底层的一串数。

回报三:机器可以装下一个「机器」。一台假想的机器,它的存储器内容描述了另一台机器——模拟器由此可能。今天在一台机器上运行另一个系统,干的就是这个。

代价也要照实说:指令与数据同住,坏处是失去了一道天然防线:程序错把数据当指令,机器照跑不误;后来的安全漏洞,一大半栽在这道被拆掉的墙上。框架的每个好处,都自带一块阴影——这是记账的诚实。

下一幕,机器的故事讲完,他问出一个更大的问题:机器能不能再造机器——生命自己复制自己,靠的是什么框架?

第四幕 · 交汇五件套的七十年p.32

存储程序框架走出普林斯顿的头十年,走得比谁预想的都快。

1950 年代:各国的第一代存储程序机器在大学与实验室安家;数值天气预报在 1950 年上了 ENIAC——算一次未来二十四小时的天气,机时与预报时长相抵,可这是头一回,天气被当成算术题解了出来。

1960—70 年代:编译器与操作系统成熟,「程序造程序」从可能变成日常;机器从小众设备变成基础设施。

1980 年代至今:个人机、网络、手机、云计算。器件天翻地覆,五件套的骨架始终未换。教科书上「冯·诺依曼结构」成了专用名词——这在世时他并不喜欢,他深知报告是集体成果,还幽默地说过:别人管这叫冯氏机,他觉得像给自行车起名「牛顿自行车」。

框架的极限也在七十年里长成了正经问题:存储与运算分开,数据要在两者之间来回搬运——搬运成了新的瓶颈;处理器越快,等着取数的时间越长。缓存、多核、专用芯片,全是在五件套的骨架上打补丁;补丁打了几十年,骨架还在。

一架框架能吃七十年红利,靠的不是先见之明,是两条老办法:部件分工到最简,接口定义到最死。下一幕把目光从机器转向更奇怪的东西:一排格子,怎么看守自己、复制自己。

第四幕 · 小结本幕留下的三件事p.33

一、存储程序=指令也是数。程序与数据同住一个存储器、共用一套编号;换题从几天变几秒,程序可以加工程序。

二、机器=五部件+三步循环。运算、控制、存储、输入、输出;取指、译码、执行。程序长度不随数据量涨,转移指令让它能自己绕圈。

三、统一通货有阴影。一切皆编号换来通用与自指,也拆掉了指令与数据的天然防线;框架的每个好处都自带阴影——记账要记全。

下一幕:一张只有两色的网格,一条谁都能看懂的规则——图案长出来之后,他问的是生命。

第五幕 · 故事战后:一台机器,几个行当p.34

战后十年,是冯·诺依曼一生最忙的十年。普林斯顿高等研究院给他在同城另造了一台机器;他同时挂着十几摊事:气象、经济、逻辑、计算机设计,都沾,都真做。

他的写作速度成了传说。能同时给几本不同的书写稿,乘汽车去华盛顿的路上审论文,下车时改稿已批注完毕。合作者的回忆几乎一致:他把别人几天的事在一顿饭里办完,剩下的时间用来谈天——谈天时讲的掌故与笑话,同样记得整本。

1950 年,数值天气预报上了机器(p.32);同一年,他把博弈论用在军备与谈判上,把自动机理论用在机器可靠性上。经济学、逻辑学、工程界,都以为他「是本行的人」——三个行当各自都这么以为过。

而在这一切之间,他心里盘着一件从 1948 年就开始想的事。那年九月,他做了一次讲演,题目里有两个词:自动机,与自复制。

问题的样子是这样:一台机器能不能造出另一台一模一样的机器?这问题听起来像工程,细想却是逻辑:造机器的机器,必须先「知道」要造什么——「知道」这件事,机器里放在哪、怎么用?

1955 年,查出重病。他坐在轮椅上继续写作;最后一部手稿讲的是计算机与人脑的异同,没写完;自动机的手稿整理成书,是他身后两年出版。

1957 年 2 月 8 日,他在华盛顿去世,五十三岁。讣告里列的头衔横跨四个行当,每一个都配得上他的名字——而他一生真正做过的只有一件事:给每个行当搭一个框架。

第五幕 · 数学一行格子与一条规则p.35

元胞自动机的框架,小得不能再小:一行格子,每格两种状态(亮或暗);每一步,每格的新状态由自己和左右邻居的旧状态决定,规则写死,处处相同。

取一条具体的规则试:新格 = 左邻 + 右邻(按二加二归零算)。也就是说:左右恰有一个亮的,下步就亮;左右全亮或全暗,下步就暗。这条规则在八种邻情编码里排第 90 号,通称 90 号规则。

起点:只有正中一格亮,其余全暗。手算前几步:

第 0 步     1
第 1 步    1  1
第 2 步   1   0   1
第 3 步 1  1   1   1

逐格复核一步:第 1 步中央亮格的左邻与右邻各暗一亮,故两侧新格变亮;中央亮格左右全亮,故中央自己变暗——于是 1 变 1 1。

第 2 步再验一处:第 1 步左亮格的左邻是暗,右邻是亮,一暗一亮,故再往左一格变亮;而两个亮格相邻处的左亮格,左邻暗、右邻亮,也变亮——但两亮格正中那一格,左右全亮,变暗。花纹从 1 1 长成 1 0 1。

第四步起图案忽然变稀——这正是「杨辉三角按二除取余」的花纹:第 2 步两侧对称的 1、第 3 步全 1、第 4 步只剩两角(四选一与四选三都是偶数)。一条三邻居的规则,四步织出一条算术定理。

框架的哲学全在这幅图里:局部、齐一、无中央指挥;复杂的花纹不是谁画上去的,是规则自身长出来的。

第五幕 · 数学自复制的三步逻辑p.36

把自复制拆成逻辑题。设有一台「万能构造器」:给它一份描述,它照着描述造出一台机器。

第一直觉:自复制很简单——把构造器和它自己的描述放一起,构造器读描述,造出下一台,完成。

细想不对。造出来的那台有身体(构造器)没描述;它不再会复制。描述必须被造出来,并且附在新的身体上。

再想一层,真正的坑出现了:如果构造器既要照描述造身体、又要自己把描述抄一份,抄的活儿就得在构造器里再写一遍——描述的描述、描述的描述的描述,无穷倒退。

冯·诺依曼的解法是加一个不起眼的部件:一台「抄写员」,它不看内容,只管原样誊抄——给它什么,它照抄什么。整套装置分三步:

一、构造器 A 读描述 D,造出身体 A + B + C(不含 D)
二、抄写员 B 把 D 原样誊一份
三、控制 C 把誊出的 D 附到新身体上——得到 A + B + C + D,与原装置分毫不差

坑被填平的方式值得停下来看:抄写员根本不理解自己在抄什么。理解交给 A,誊抄交给 B,打包交给 C——三件事分给三个部件,无穷倒退就断了。

1948 年他只讲到逻辑;1953 年,生物学家发现了遗传物质的 DNA 双螺旋:一半解开当模板、照着合成新链、描述与身体一同复制——与三步逻辑逐一对应。他事先不知道生物学的答案,是框架替他想到的。

第五幕 · 数学二十九个状态与一道门槛p.37

逻辑想通之后,他要一个实打实的模型:真的在一排排格子上,让复制发生。

选材颇费周折。格子不能太笨:状态太少,连「存储一位描述」都费劲;也不必太聪明:他最终定在每格二十九个状态——传输、相变、可激发三类,配上具体的激发规则。

整个装置摆在一张大的格网上:构造器是一大片格子,描述是一条状态串;机器运行,格网上一片区域逐列搭出复制件的骨架,抄写员沿描述逐格誊抄,最后一并封口。复制件与原件并排躺在格网上,描述各自带全。

但这份手稿真正的大问题是另一道题:什么时候复制不可能?

想一个极端例子:一条规则「每格每步清零」。从任何起点出发,一步之后全是暗格——这样的格网里,什么花纹都长不出来,复制无从谈起。规则太简单,简单到「构造」这个动作本身装不下。

反过来,90 号规则(p.35)能织出花纹,却织不出「照描述造机器」的机关——它长得了图案,长不了图案的工程师。

于是有那条著名的门槛:规则的复杂度太低,机器造不出比自己更复杂的东西;越过门槛之后,才谈得上复制、才谈得上复制中的变异与进化。「复杂度能自发升高」不是默认的,是框架里的稀罕事——这道门槛是他留给后世问题清单里最重的一条。

第五幕 · 暗线描述与本体p.38

第五幕的暗线,藏在三步逻辑的第三步里:描述要被誊抄一份,随新身体一起走。

这意味着框架承认了一件深的事:描述可以离开本体。图纸不是机器的一部分,可图纸能再造机器;描述不是物体,可描述是能传下去的东西。

这件事在生物学里字面成立:生物一代代死,描述(DNA)一代代传。传下去的不是身体,是图纸。1953 年之后的分子生物学,干的几乎全是冯·诺依曼三步逻辑的注释工作:读描述(转录)、造身体(翻译)、抄描述(复制)。

这件事在机器世界里同样成立:一段程序从一台机器搬到另一台,躯体换了几代,描述不变——「软件」这个词说的就是可离开本体的描述。

框架的目光再往前一步:既然描述可传,那么传下来的东西会变异;变异被复制保留,谁活下来不由意图定,由描述与环境合谋定。他 1948 年就把「复制+变异+选择」列为自动机理论的任务清单——这一行清单,后来被各种学科各自认领了一遍。

框架的尽头还是那四个字:先搭框架。生命也好、机器也好、知识也好——只要「传下去」这件事成立,就有一个共同的骨架:本体、描述、抄写、封包。看清骨架,再看万物,另是一副眼光。

第五幕 · 交汇网格后来长成了什么p.39

元胞自动机这条线,后来的样子比谁预想的都热闹。

1970 年,康韦的生命游戏。仍是两态格网、仍是局部规则,规则只有四句话;它让「滑翔机」——一种会自己平移的小图案——在格网上永远滑下去,并证明了这图案组足够做任何计算:整个格网是一台图灵完备的机器。

1980 年代,沃尔夫勒姆的系统普查。一维、两态、八十八种不等价规则,一条条跑遍:有的规则格上尽皆空白,有的织出均匀花纹,有的长出分层雪花,有的乱到测不准——四类行为,正好从「死」到「混沌」排成一谱。

1990 年代至今,人工生命与分散计算。自复制的门槛被重提为「混沌边缘」;蚂蚁找食、城市生长、网络路由,凡「无中央指挥、局部规则、全局花样」的地方,都拿元胞自动机当语言。

回头看,五幕各留下一件家当:公理给无穷,利益表给冲突,空间给测量,五件套给机器,网格给生长。五件家当出自一人之手,手艺始终同一副:先搭框架,再让题目自己走上来。

他 1957 年去世,五十三岁。框架留下了,题目还源源不断地走上来——这正是搭框架的人最好的身后事。

第五幕 · 小结本幕留下的三件事p.40

一、极简框架能长出花纹。一行格子、两态、一条三邻居规则,四步织出杨辉三角按模 2 的对称花纹;复杂性不必从外面放进去。

二、自复制=构造+誊抄+封包。描述被读一次、被抄一次,分给三个部件,无穷倒退就断;DNA 的复制机制与三步逻辑逐一对应。

三、复杂度有门槛。规则太简单,构造本身装不下;越过门槛才谈得上复制、变异与进化——这是留至今日的开放问题。

全书五幕收束:公理、利益表、空间、五件套、网格——五个框架,一门手艺。把「怎么谈」先定下来,剩下的问题自己会走上来。

收束回望:五十三年p.41

把这一册的事排成一条线。

1903 年  12 月 28 日生于布达佩斯,父为银行家
1914 年  入路德会中学;数学教师拉茨另授课业
1919 年  布达佩斯政局动荡,全家短暂离境
1921 年  入苏黎世联邦理工学院习化学工程,兼在布达佩斯大学习数学
1923 年  第一篇论文:无穷集合与序数
1925 年  化工文凭;〈集合论的公理化〉
1926 年  布达佩斯大学数学博士
1927 年  柏林大学无俸讲师;与希尔伯特、诺德海姆论量子力学基础
1928 年  〈客厅博弈的理论〉,极小极大定理
1930 年  赴普林斯顿大学;翌年任教授
1932 年  《量子力学的数学基础》出版
1933 年  入普林斯顿高等研究院,最年轻的终身教授
1936 年  起与默里合著〈论算子环〉四篇(至 1939)
1944 年  与摩根斯坦《博弈论与经济行为》出版
1945 年  〈EDVAC 报告初稿〉:存储程序
1948 年  希克森讲演:自复制自动机
1950 年  ENIAC 数值天气预报
1952 年  高等研究院电子计算机建成
1957 年  2 月 8 日卒于华盛顿,年五十三

这条线上有两处特别密。一是 1925 到 1928,三年里从集合论跳到量子力学再到博弈论,三个行当各留一部著作。二是 1944 到 1948,四年里从一本书到一台机器再到一次关于生命的讲演。

也有一个显眼的转弯。1940 年以前,他是纯数学家;1944 年以后,他的名字总与机器排在一起。有人替他惋惜,说后期「不纯」了;可按他自己的标准,前后是同一件事——每一行都先搭框架。

他一生没有用过一个难到吓人的工具。序数用的只是「收一堆」,博弈用的只是一张小表,计算机用的只是编号与循环。难的不是工具,是敢把最基本的问题重新问一遍:数是什么、冲突是什么、测量是什么、程序是什么、生命是什么。

收束这一册的三种读法p.42

同一册书,三个人可以读出三种东西。

孩子读「藏着出」。两人各藏一枚硬币,同时亮出:两面一样谁赢、不一样谁赢,规则可以自己定。玩几轮,问一句:固定出一样,是不是马上吃亏?再问一句:一半这样一半那样呢?这一层要的是手感:出牌留一半,谁也猜不着。

少年读「五分之二」。把 p.14 那张四格小表抄下来,解 3p − 1 = 1 − 2p,得 p = 2/5,值 1/5。再验一遍:代回去,两条路果然一样便宜。然后告诉他:任何规则都逃不掉一个「公平价格」,这就是数学家说的「对局有值」。这一层要的是「会算」,并相信算出来的东西有意义。

成人读「框架」。问三句:一场冲突为什么能算?两套互不服气的写法凭什么能合一?程序凭什么可以改写程序?三个问题的答案都是同四个字:先搭框架。这一层要的是分辨,不是记诵。

三种读法不是三个年龄,是三个问题。孩子问「怎么出才不吃亏」,少年问「五分之二从哪来」,成人问「凭什么框架先行」。三个问题都问过,才算把这一册看全。

若只能读一层,建议读第一层。因为「藏着出、亮出来」这件事,一旦真的玩过,往后看见「策略」两个字就不陌生。而这一册所有的事,都是从两枚硬币开始的。

收束三个还没有答完的问题p.43

他走到三个地方,停住了。这三个地方,后来各长出一大片东西。

第一处:测量在框架里放得下吗?第三幕把「测量」写成算子,把「跳变」写成公理。可「跳变」到底发生在什么时候、对谁发生,框架自己给不出答案。1964 年贝尔提出不等式,此后几十年实验一遍遍做下来:框架的预言全对,可「测量意味着什么」反而更显出深。这是他留给物理学的一笔债,也是一笔遗产。

第二处:连续维数的「怪物」有几种?第三幕提到第二类因子里的连续维数。他当年问过:这样的因子,是不是本质上只有一种?1976 年前后康纳证明:不止一种,而且无穷多——分类比想象繁复得多。一道 1930 年代的题,答案到 1980 年代才成形,如今是非交换几何的地基。

第三处:复杂度的门槛在哪里?第五幕说过:规则太简单,造不出比自己复杂的。可「太简单」的界线画在哪儿,直到今天没有定论。生命游戏能自己算题,90 号规则只织花纹——两者之间隔着什么,正是「复杂系统」这门学科的核心悬案。

三处停步,都不是因为他做得不够。每一处都卡在一个「框架之外」上:测量的解释、因子的分类、复杂度的度量——都是框架立好之后,从框架的边界上长出来的新问题。

这也正是本册反复讲的那件事:框架的价值,一半在它能解什么,一半在它让人看清自己不能解什么。

动手做给一张表算出公平价格p.44

材料:纸、笔,或一枚真硬币用来玩。目标:亲手把一张利益表解到底,算出它的「公平价格」。

第一步,定规则。甲乙各出一枚硬币(正、反),同时亮出。同正:甲赢 3;同反:乙赢 2(甲得 −2);一正一反:乙赢 1(甲得 −1)。写成利益表:

    乙正 乙反
甲正   3  −1
甲反  −2   2

第二步,试死牌,找缝。甲两行的最小值是 −1 与 −2,甲至多保证 −1;乙两列的最大值是 3 与 2,乙至多把甲压到 2。−1 ≠ 2,有缝,必须混合。

第三步,解混合比例。设甲出「正」的比例为 p:

乙出正:3p − 2(1 − p) = 5p − 2
乙出反:−p + 2(1 − p) = 2 − 3p
令 5p − 2 = 2 − 3p ⟹ 8p = 4 ⟹ p = 1/2

甲对半出。对局的值是

5 × (1/2) − 2 = 1/2

第四步,验乙。设乙出「正」的比例为 q,令甲两种死牌的平均所得相等:3q − (1 − q) = −2q + 2(1 − q),即 4q − 1 = 2 − 4q,解得 q = 3/8。代入:甲出「正」时平均得 4 × (3/8) − 1 = 1/2,甲出「反」时也得 1/2——乙以三比五的比例出正反,同样把甲压在 1/2。

第五步,玩真格的。甲按对半出、乙按三比五出,玩二十轮记总账:甲的期望是 20 × 1/2 = 10。实际结果会围绕它上下浮动——浮动的道理,正是「混合策略保证的是平均,不是每局」。

第六步,回头做 p.15 那张表。规则改为同正甲赢 2、同反乙赢 1、一正一反乙赢 1,同法解得 p = 2/5、值 1/5——与 p.15 对上,方法就成了自己的。

动手做九格纸机,跑六步p.45

材料:方格纸、铅笔、橡皮。目标:把 p.35 的 90 号规则亲手跑六步,看看花纹怎么长。

第一步,把规则写成一句口诀。新格 = 左邻与右邻「半斤八两才灭、一有一无才亮」——按二除取余的加法:一亮一暗得亮,全亮全暗都得暗。只看左右,不看自己。

第二步,画起点。九列六行的格子,第 1 行只有第 5 列一格涂黑。

第三步,逐行推。第 2 行:起点格左右两格亮(第 4、6 列),起点自身变暗——「1」分裂成两翼。第 3 行:第 3、7 列亮(各自只邻一个亮格),第 5 列两侧全亮而变暗——两翼继续张开。

第 4 行:第 2、4、6、8 列亮。拿第 4 列验一遍:其左右为第 3 列(亮)与第 5 列(暗),一亮一暗,变亮;第 6 列:左右为第 5 列(暗)与第 7 列(亮),变亮。

第 1 行 □ □ □ □ ■ □ □ □ □
第 2 行 □ □ □ ■ □ ■ □ □ □
第 3 行 □ □ ■ □ □ □ ■ □ □
第 4 行 □ ■ □ ■ □ ■ □ ■ □

第四步,跑第 5 行。逐格算:第 1 列(第 2 列亮、自身之外无邻)亮;第 2 列左右皆暗,灭;第 3 列左暗右亮(第 4 列),亮;第 5 列左右全亮,灭;第 9 列由第 8 列传来,亮:

第 5 行 ■ ■ □ □ ■ ■ □ □ ■

第五步,对答案。把第 4、5 行与杨辉三角对照:第 4 行的亮格对应组合数 C(4, k) 为奇的列,第 5 行对应 C(5, k)——第 5 行那三对相邻亮格,正对应 C(5,0) = C(5,1) = 5、C(5,4) = C(5,5) = 1 皆奇。跑对了,口诀就是定理;跑错了,回头看是哪一格的左右看串了行。

最后一件小事:把纸对折,让第 1 行与第 5 行的亮格重合的部分对着光看——对称性是这条规则的胎记,从第一步起就没丢过。

小典术语十条p.46

集合与类 能当元素的是集合;太大而不许当元素的是(真)类。「所有集合的类」是真类,罗素悖论由此失声。见 p.6、p.8。

序数 按「数 = 排在它前面所有数的集合」定义的编号:0、1、2、…、ω、ω+1、…。「小于」即「属于」。见 p.7、p.9。

公理化 把允许的操作列成明文清单,再在其中推理。公理不是描述,是规范。见 p.8。

利益表 把各方的可选动作与每种组合下的所得登记成表。零和时一方所得即另一方所失。见 p.14。

混合策略 按比例随机出牌:以 p 出此、以 1 − p 出彼。比例是方程解出来的,不是掷出来的。见 p.15。

极小极大定理 有限二人零和对局必有值:max min = min max;值即对局的公平价格。见 p.16。

希尔伯特空间 带内积与完备性的向量空间。量子态是它的向量,测量是它的算子。见 p.21。

交换子 AB − BA。交换子为零可同测;非零则不确定关系出场。见 p.22。

存储程序 指令与数据同住一个存储器、共用编号,机器可读、可改自己的程序。见 p.28—p.30。

元胞自动机 格子+状态+局部齐一规则+逐步更新。复杂花纹由规则自己长出。见 p.35、p.37。

小典人物与文献p.47

冯·诺依曼(1903—1957) 匈牙利裔美国数学家。集合论公理、博弈论、量子力学的数学框架、存储程序计算机、自复制自动机——五个框架,一门手艺。

拉茨(1863—1930) 匈牙利中学数学教师。发现冯·诺依曼的才能并促成大学教师登门授课。

费耶尔(1880—1959) 匈牙利数学家。傅里叶级数名家,布达佩斯数学学派中心;冯·诺依曼的博士导师。

希尔伯特(1862—1943) 德国数学家。公理化运动的主帅;冯·诺依曼 1926—1927 年在哥廷根任其助手。

策梅洛(1871—1953) 德国数学家。集合论公理系统的首倡者(1908);冯·诺依曼的公理化在其上另辟两层。

摩根斯坦(1902—1977) 奥地利经济学家。《博弈论与经济行为》的合作者,把对局论带进经济学。

乌拉姆(1909—1984) 波兰裔美国数学家。冯·诺依曼后半生的对话者;蒙特卡罗方法与元胞自动机的共同玩家。

戈德斯坦(1913—2004) 美国工程师。ENIAC 与高等研究院机器的中间人;火车站台上的那次谈话见 p.27。

伯克斯(1915—2008) 美国工程师与计算机先驱。高等研究院机器的建造者之一;整理出版《自复制自动机理论》。

图灵(1912—1954) 英国数学家。1936 年以「通用机」确立可计算性的边界;1945 年独立提出存储程序设计——与冯·诺依曼殊途同归。

延伸「值」之后:均衡的时代p.48

极小极大定理管两人零和;利益不完全对立的对局怎么办?1950 年,纳什给出答案:均衡点。

定义一句话:一份出法组合,若任何一方单独改动都占不到便宜,就叫均衡。零和情形下,均衡点就是极小极大的解——纳什把这个概念推广到任意人数、任意利益结构,并证明有限对局必有均衡(用不动点定理)。

验一个最小的例子。两人各出「左」「右」;同左各得 1,同右各得 2,不同各得 0:「同左」是均衡——单方改出「右」得 0,吃亏;「同右」也是均衡——单方改动同样吃亏。两个均衡,一个对双方都更好:协调靠均衡分析指路,不靠运气。

均衡与「值」的分工从此清楚:完全对立,算「值」;利益纠缠,找均衡。1994 年诺贝尔经济学奖授予纳什、海萨尼与泽尔腾;此后拍卖设计、匹配市场、平台定价,都成了均衡分析的工地。

均衡也有边界,照实说:均衡不保证唯一(上例就有两个),不保证公平(也可能存在对一方极糟的均衡),也不保证会被找到——它是「稳定」的定义,不是「幸福」的保证。

冯·诺依曼对此并非不闻不问。1944 年那本书里就有「稳定集合」的讨论;纳什的证明发表时他已在造机器,转而把「博弈能不能算」交给了机器与算法——今日的算法博弈论,两头都是他的遗产。

回头看 1928 年那篇「牌桌论文」:它证明的不只是对局有值,而是「冲突可以是数学的对象」——这句话后来养活了整个学科。

延伸那台机器后来去了哪里p.49

一、它成了所有机器的骨架。手机、笔记本、数据中心,拆开看都是五件套:运算、控制、存储、输入、输出。教科书直接把这套结构叫「冯·诺依曼结构」,他本人婉谢过这个名字(见 p.32)。

二、它的边界成了正经学问。指令与数据同存,带来自指的万能,也带来安全的软肋:程序可以把自己的数据当指令跑。现代系统的防护、隔离、地址随机化,一大半是在给这道被拆掉的墙重新砌砖。

三、它的瓶颈催生了新架构。存储与运算分开,数据来回搬运成了速度的天花板。缓存、多核、图形芯片、神经网络加速器——补丁越打越多,五件套的骨架还在;「非冯」机器的尝试也在进行,尚无一种取代它。

四、它的理论边界先于机器立好。1936 年图灵的通用机证明了「可计算」的极限:有些函数任何机器都算不出。存储程序机器造出来后与通用机等价——「能算什么」在机器出生前就知道了,这是数学先行的又一例。

五、它成了通俗符号。「冯·诺依曼结构」进了中学课本,博物馆里复原的电子管机柜旁多半挂着他的照片。大众记住的是天才的传说,内行记住的是一页报告:一百零一页,把「程序」变成了「数」。

五条里最值得记住的是第四条与第一条的次序:先有「可计算」的数学边界(1936),再有机器的骨架(1945)。先搭框架,再造东西——他自己就是这么干的。

家长导读这一册在讲什么p.50

这一册讲一个人怎样用「先搭框架」解决五类看起来无关的难题。

他的第一件作品是给无穷编号。「三是什么」可以永远争论,规定 3 = {0, 1, 2},争论当场结束,无穷也能接着数。从这里他学到:把「商量」换成「规定」,剩下的问题才能算。

第二件作品是一张表。两人对局,把每种组合的输赢填进格子;表一画好,随机出牌的比例就从方程里解出来。冲突没有消失,冲突变成了计算。

第三件作品是一个空间。两套量子力学吵了两年,他把「状态、测量、预言」定义清楚,两套写法成了同一空间的两种读法。框架不判谁对,框架让老问题失去出场资格。

第四件作品是一部机器的内部宪法。指令与数据同住一个存储器,机器从此能改写自己的程序。今天一切通用计算机都是它的后代。

第五件作品最玄:一张会生长的网格。格子、状态、局部规则,图案自己长出来;再进一步,一台机器带着自己的描述,照着图纸把自己造一遍。生命复制自己的逻辑,被他先在格子里想通了。

孩子读这一册,不必记住序数与均衡。记住一件事就够了:遇到乱局,先定「谁、能做什么、结果怎么记」;三样定下来,乱局就变成了题目。

家长导读五个常见误区p.51

一、不要说计算机是冯·诺依曼「一个人发明的」。101 号报告是集体工作的系统化:埃克特与莫奇利早有方案在案,图灵 1945 年独立提出存储程序设计。他的贡献是把设计写成了一份能照着造的宪法——这是真贡献,不必用「独占」来放大。

二、不要说博弈论「教人算计别人」。它是对策略互动的形式分析:先弄清对方也会盘算,再问什么样的协议稳定。「值」与「均衡」都是防吃亏的数学,不是骗术手册。

三、不要说量子力学「反正没人懂」。第三幕那些矩阵运算谁都能验;「框架里算得清」与「解释上还有争议」是两件事。把这两件事混为一谈,等于给不肯算的人找借口。

四、不要说存储程序「就是把程序存在硬盘里」。它的本义是同一存储器、同一编号体系、指令可被当作数据处理。「能存」早已有之,「能被机器当数据加工」才是那一步。

五、不要说元胞自动机「只是屏幕上的花纹」。它是「无中央指挥、局部规则、全局花样」这一大类的形式模型;从雪花到蚁群到分布式系统,凡此类的现象都借它说话。花纹只是入口,门槛问题才是正文。

五条误区有一个共同点:都把「一件事的分量」与「它的通俗印象」混在一起。分开来看,才看得见他真正做了什么,也看得见哪些不是他做的。

版权与编目版权页p.52

《数学家的故事》第四辑 第 38 册
冯·诺依曼 · 存储与博弈

体例:五幕 · 52 页 · 三层可读(故事/数学/注疏)
插画:40 幅(留白线体)
数值:全册关键数值实算复核

本册为「格物致知」系列数学通识读物之一,面向全龄读者。
故事层无需预备知识;数学层对应高中至大学初年级;注疏层供检索与延伸。

格式 · 格物致知 · JUST FOR FUN