纸牌与随机数,乌拉姆的新发现
战争结束后,洛斯阿拉莫斯国家实验室人才外流。由于其地处偏远,完全保密也不再必要,实验室的工作似乎减慢下来。实验室建议,如无必要,需要养家的人员可以离开。于是,斯坦和弗朗索瓦丝·乌拉姆夫妇带着他们一岁的女儿克莱尔离开,前往加利福尼亚。斯坦在南加利福尼亚大学找到了一份教数学的工作。就在斯坦投入新工作,弗朗索瓦丝和克莱尔尚未找到住所之前,他突然患上了严重的病毒性脑炎。幸亏在西达斯·西奈医院(Cedars Sinai Hospital)接受了紧急钻孔引流术,及时舒缓了他大脑内的压力,否则他可能就此丧命。
弗朗索瓦丝不堪重负,通过安排她把克莱尔送回了洛斯阿拉莫斯国家实验室,由大卫·霍金斯(David Hawkins,斯坦的中子倍增合作者)和他的妻子弗朗西丝(Frances,经营洛斯阿拉莫斯国家实验室托儿所)照顾。斯坦在洛杉矶调理,而克莱尔在众多留在洛斯阿拉莫斯的家庭中茁壮成长。当时,实验室已经改由诺里斯·布拉德伯里(Norris Bradbury)掌管,他是一位比奥本海默更加脚踏实地的主管。由于乌拉姆夫妇已经不再享有政府医疗保险,斯坦还没有开始工作,形势显得相当严峻。接着,洛斯阿拉莫斯国家实验室邀请斯坦回去继续工作。“斯坦·乌拉姆的情况可以说是独一无二的,”冯·诺依曼(毫无疑问插手了邀请的事)给卡森·马克(Carson Mark)写信说,“我觉得,洛斯阿拉莫斯实验室应该想尽一切办法把他留在这里。”
乌拉姆被告知在康复期间要避免剧烈的脑力活动,他就用打纸牌来娱乐。其间,他忍不住思考一个问题:玩52张纸牌接龙成功的概率是多少?“我花了很长时间,尝试通过纯粹的组合计算估计出概率,”他回忆道,“之后,我怀疑是否有比‘抽象思维’更可行的方法,无须分列情况(比如100次),而只是观察和计算成功的次数。”他指出,这种得到近似答案的方法远比“去计算所有的组合概率要容易,后者以指数级增长,除了非常简单的情况,其他根本无法估算”。
他补充说:“这叫人在智力方面感到吃惊,即便未必是羞辱,它让人对于理性或传统思维的限制保持谦虚的态度。”这就是乌拉姆的特点,他能得出深刻的数学结论,其他人则只会希望眼前的问题得到解决。他指出,数学逻辑本身可以被看作“一类游戏——‘纸牌’,它遵循特定的规则,每张纸牌都是符号”。由此他得出结论:“哥德尔定理的一种意义就是,仅仅通过玩这些游戏,就能确定它们的一些特性。”这个结论的意义当时也许并未得到充分的认识。
乌拉姆试图把他的注意力从严肃的问题上转移开来,很快他的思想就回到了洛斯阿拉莫斯国家实验室尚未解决的一些问题上。“我突然想到,所有涉及事件分支的过程可能同样如此,比如某种包含铀或其他裂变元素中中子的生成和进一步增殖的过程,”他回忆说,“这个过程的每个阶段,决定中子命运的有许多可能性……每种可能性的基本概率都是独立可知的……但问题是要知道,数十万乃至数百万的系列和分支会产生怎样的结果。”
蒙特卡洛法最初被当作一种解决问题的应急措施,数学家来之前要怎么办呢?“当时的想法是,将这样的概率试验几千次,通过寻找适宜概率的‘随机数’的方式,在每个阶段随机选择事件的命运或类型,遵循前后一致的原则。可以说是不考虑所有分支,”乌拉姆解释道,“检查几千次实验的历史记录,你就能获得一个合适的样本和相应问题的近似答案。”随着计算机数量的增多,这种新方法得到广泛传播。随后,这种方法逐步获得了改进,尤其是所谓的梅特罗波利斯算法(后来的梅特罗波利斯-黑斯廷斯算法[Metropolis-Hastings algorithm])从一开始就支持更具可能性的历史记录,使蒙特卡洛法变得更有效。马歇尔·罗森布鲁斯(Marshall Rosenbluth)解释道:“算法最重要的属性是……偏离正则分布的特征消失。”他也为这一发明帮了忙。他接着说道:“因此,计算收敛于正解!我记得当我能够证明这一点时,心里兴奋不已。”
蒙特卡洛法在数理物理学中开辟了一个新领域:经典物理学考虑的是少量理想化对象的准确行为,统计力学考虑的是巨量对象集体行为的平均值,与它们不同,蒙特卡洛法考虑的是任意数量的单个对象的单独概率性行为,因此比以上任何一种方法都更接近物质宇宙的实际运作方式。“因为这似乎是不劳而获,就更有必要严格地执行这个过程,最后的一切都令人满意;在特定的情况下,这种方法的效率高得似乎令人难以置信,”1954年,安德鲁·马歇尔(Andrew Marshall)回顾蒙特卡洛法走过的第一个7年时建议道,“对于结果,必须从头至尾仔细检查,才能确信。”
冯·诺依曼的下一站是洛斯阿拉莫斯国家实验室。就在他前去赶火车之际,乌拉姆灵光乍现。“当时,我们坐在政府的一辆汽车上,从洛斯阿拉莫斯前去拉米(火车站的所在地)。在车上,我们聊了很久,”乌拉姆回忆说,“一路上我们聊个不停。我还记得那一天,在某个拐弯或某块石头附近讲的那些内容。我们将它命名为蒙特卡洛法,因为存在偶然性因素,就是利用产生的随机数字做游戏。”人们通常将之归功于尼古拉斯·梅特罗波利斯。这个想法叫人无法抗拒。罗伯特·里克特迈耶回忆说:“乌拉姆喜欢赌博狂欢的思想,其中,评估机制的设计模仿的是中子链式反应。”1971年,乌拉姆在计算机实验中声明:“在计算机上模拟物理过程以及在纸上做实验,要比实际的物理过程成本低很多。”
拉米之行后,冯·诺依曼坐火车回到普林斯顿,并整理乌拉姆在路上提出的建议。3月7日,他又和里克特迈耶进行了一次电话交流。之后,他完成了一份11页的文稿,其中阐明了乌拉姆的思想(铀或钚的“球对称几何学”)。“我相当肯定,这个问题的数字形式非常适合ENIAC,”他写道,“假设解决一个临界问题需要100个初级中子,每个初级中子(或其衍生物)发生100次撞击,那么解决一个临界问题大约需要5小时。”但这只能解决“静态临界”的简单问题——指定的集合是否会爆炸,确定其爆炸的剧烈程度要更为复杂。冯·诺依曼对解决这一问题(涉及流体力学和辐射输运)所需要的成本做了估算,得出的结论是:“我充分相信,后ENIAC设备(post-ENIAC)将能轻易地解决这个问题。”
问题是,后ENIAC设备直到1951年才投入运营,尽管其要求与“洛斯阿拉莫斯国家实验室的要求之间的联系越来越显著,特别是在当前这种危机的氛围中,必须采取激进的措施完成计算机”。不过,事实证明,修改ENIAC可以暂时替代即将问世的新机器。“1947年春天,约翰·冯·诺依曼提出,ENIAC也许能以另一种方式运作,这种方式和设计时所计划的有很大差别,”1948年,时年35岁的理查德·克利平格(Richard Clippinger)报告称,“使用新方法,一小时内就可以更换问题;而老方法则要牵动许多电缆,耗时一天。”
“差不多一年前,约翰尼做了一组非常出色的观察。
当时,他负责制定一种全新的编程方法,”1949年,赫尔曼·戈德斯坦详细解释说,“约翰尼的计划是要将ENIAC插件板对应的部分与一套固定的指令相结合,这套指令普遍适用于所有问题。”每个指令都分配了唯一的编号,即指令码。“交换中心先进行识别,接收到给定数字(具备插件板上某一指令的特征)后,就为相应的电路板通电,从而执行该指令。”
一个指令的序列组成一套程序,要么通过ENIAC的转换装置输入,要么从穿孔卡片中读取。“现在不必再想尽办法去套用给定的程序,”戈德斯坦继续说道,“准备一个问题,程序员只需要编写出算术和逻辑的操作顺序(具备问题的特征),然后再把这些转化为机器能理解的数字就行了。”
约翰尼和克拉拉解释说:“这种新方法基于一个词汇表,即一套指令,传达到机器的指令可以分为两个层次;‘背景代码’和‘问题代码’。”这也就是今天的操作系统和应用程序之间的区别。词汇表由大约60个不同的指令组成。“编写完一段代码后,指令列表就可以设置在许多10位交换机中,”罗伯特·里克特迈耶补充说,“每排交换机分配一个地址,也就是从1~300的某个数字。ENIAC的20个累加器都是用于添加或储存数字的设备,一个用作控制计数器,记录被执行的指令行的地址;一个充当数字的中央结算所,类似于普林斯顿设计的累加寄存器;两个留作特定用途,其余均用于通用存储器。线路无须再改动。”
本书评论