万维钢《你有你的计划,世界另有计划》-世界观的悬疑
宇宙是计算机吗?
这个宇宙是计算机吗?我们的这个现实世界,在理论上,可以用一台要多强大就有多强大的计算机来完全模拟吗?
这个问题可不仅仅是个好玩的思想实验。我们需要理解计算机的本性,并且跟真实世界的本性做一个对比。使用计算机视角,我们会重新认识这个世界。
而这一切要先从“实数”开始讲起。
“自然数”是0,1,2,3,……
“整数”是自然数加上负的自然数:……-3,-2,-1,0,1,2,3……
“有理数”则包括了分数和小数,但要求必须是有限的,或者是无限但是必须循环的小数——本质上,所有有理数都可以写成分数,也就是两个整数相除:1/2,1/3,4/3……
我们先想一个问题:自然数多,还是自然数里的“偶数”多呢?
人的直觉反应肯定是自然数比偶数多,自然数包括偶数和奇数,整体肯定比部分多啊。可是,自然数和偶数都有无限多个,无限多的两种东西,怎么比较多少——无限大和无限大到底哪个大,这是个问题。
大概是1874年,德国哲学家格奥尔格·康托(Georg Cantor)提出,自然数、自然数中的偶数,甚至一切有理数,都是一样多的。
康托的洞见在于两个集合的元素如果能一一对应,那这两个集合的元素个数就一样多。
每个偶数除以2就是一个自然数,偶数和自然数可以一一对应:
0↔0,
2↔1,
4↔2,
6↔3,
……
同样的道理,全体整数的个数也和自然数的个数是一样多的,因为我们可以把整数按照一定的规律“数出来”,也就建立了跟自然数的一一对应:
0↔0,
-1↔1,
1↔2,
-2↔3,
2↔4,
-3↔5,
3↔6,
……
一个包含无限个元素的集合只要是“可数”的(“数”是三声,英文叫countable),它就能跟自然数一一对应,它的元素个数就跟自然数一样多。
事实上,有理数的集合也是可数的。比如我们可以按照下面这张表格,把全体有理数列举出来。
无非就是把每个有理数都写成分数的形式,然后根据分子、分母的数字决定它在表格上的位置。只要按照图中箭头的方向,我们就可以把全体有理数数一遍。你一边数着有理数,一边数着自然数,这就建立了一一对应的关系,所以有理数也和自然数一样多。
现在轮到“实数”了。所有有理数都是实数,而实数还包括“无理数”,也就是小学老师所谓的“无限不循环小数”。无理数的特点是不能写成分数的形式,也就是不能用两个整数相除得到。比如根号2和圆周率π就都是无理数。
无理数,是“不可数”的(uncountable)。
也就是说,实数不能跟自然数做一一对应。虽然自然数和实数都有无限多个,但是这两个无限不是一个级别——实数比自然数要多得多。如果你说自然数是“无穷多”,那实数就是“不可思议的多”。
计算机对算法有如下三个要求。这些要求就决定了,计算机和真实世界似乎是有区别的。
1、算法必须是“数字化”的
要么是整数,要么是有限位的小数。换句话说,计算机只能处理有理数。
比如说圆周率π。计算机里没有真正的圆周率。你要输入圆周率,只能输入一个有限位的近似的小数,3.141592653……到一定长度你必须停下。你可以用计算机把圆周率算到任意精度,但是总要在算到某一位的时候停下来。只要你停下了,你算的那个数就是一个有理数,而不是真正的π。
2、算法是一步一步的
计算机不能算连续。所有计算机程序都按照“步”运行,这一步干什么、下一步干什么。
我们要模拟一个足球的运动,必须先把时间和空间分成若干“小步”,让足球每次走一步。当然我们可以把步分得很细——但是一旦确定了步,一步就是一步,没有“半步”这种中间状态。
这是因为计算机的底层是一个开关网络,要么是开,要么是关,没有半开半关的状态。
真实世界好像不是这样的。我们挥一挥手,让手从A点到达B点,这应该是一个连续的运动,我们的手似乎应该经历了从A点到B点之间每一个距离数字——其中既有有理数也有无理数。而计算机模拟的我们的手,只能经历有理数。
3、图灵机必须停机
给一个算法,它一定要算出一个结果来。从这个意义上讲,现在的计算机都不是严格的图灵机。比如我们用的个人电脑的操作系统,在理论上都可以永远不停机。我们还可以跟电脑做交互式的操作,这就更不是图灵机了。而真实世界,也是交互的。当然电脑里运行的每一段代码,都符合图灵机的要求。
根据这些要求,计算机程序就一定是有限长的而且是数字化的操作。事实上,所有计算机程序都可以翻译成由0和1组成的代码,硬件层面就是这么操作的。
所以计算机程序必定是可数的。比如我们可以按照下面这个方法列举所有的计算机程序:
0
1
01
10
00
11
000
001
……
计算机程序的集合,是个可数的集合。那计算机能做的事情,就是可数的。
如果真实世界里有些不可数的事情,有些数必须是实数,那计算机怎么可能完全模拟真实世界呢?
加州大学伯克利分校的电子工程与计算机科学教授爱德华·李(Edward Lee)在《柏拉图和技术呆子》中举了个气球的例子。
我们把气球充满气,它就变成了一个球形。如果气球的直径是1米,它的周长就会是π米。我们可以把气球当成一个计算器,它帮我们计算了π——而π是一个无理数。气球,是一台可以计算无理数的机器。
有理数是我们对世界有限的观测,而世界的本质是实数。
(“数字宇宙假设”,这是一个不可证伪的假说,也许我们就是生活在一个分辨率有限的、可数的、可以完全用计算机模拟的数字宇宙之中。)
哥德尔不完备性定理
在1931年的一次会议上,一个25岁的年轻人,哥德尔(Goedel),做了一个报告,说他证明了一个有关自然数公理系统的定理。据说当时冯·诺依曼(von Neumann)就在报告现场,冯·诺依曼听完哥德尔的报告之后说了一句话:“全完蛋啦!”(Its all over!)
下面这张图是一本漫画书——Logicomix(最新中文译本为《疯狂的罗素》)中的一页,表现了当时哥德尔做报告的情景。
简单地说,哥德尔证明了,在自然数的公理系统中,不但我们想要的那种机械化的证明不存在——而且对有些命题来说,连“证明”本身,都根本不存在。
这就是“哥德尔不完备性定理”。这个定理说,只要自然数的公理系统只有有限条公理,那么就一定存在一些命题,你既不能用这些公理证明它是对的,也不能判断它是错的。也就是自然数的公理系统是不完备的。
数学家的整个世界观都崩塌了。
我们前面说了,所有可数的系统都等价于自然数系统。那么哥德尔不完备性定理的本质就是说,一个可数系统本身,是说明不了自己的。
哥德尔不完备性定理给学术界开了一个巨大的脑洞。后来有人证明了一个类似的理论,说任何一个可以写下来的语言系统,其中总会有一些语句,我们用这个语言系统本身是无法判断其对错的,必须得跳出这个语言系统才能判断。
也就是说,如果我们全部的思考都被限制在一种语言里,有些事儿对你来说就永远不知道怎么做决定,我们得跳出这个语言环境才行。
所以不管多么精细的语言,都是不完备的
物理学的逻辑
第一,物理学家总是用一个更“一般”的新理论,取代旧理论。
旧理论只是新理论在局部的一个特殊情况。比如,你把广义相对论拿过来,考虑在一个引力比较弱的特殊情况下算一算物体的运动方式,它跟牛顿万有引力公式的计算结果是一样的。同样的道理,你把牛顿万有引力公式拿过来,结合考虑地球表面这个特殊情况,那就相当于引力只和重量有关系。
第二,新理论除了能解释旧理论不能解释的一些现象,还能预言一些物理学家此前连想都没想过的新的东西。
牛顿力学只能计算一般行星的轨道,可是有了广义相对论,我们不但能解释水星轨道的“怪异”变化,还能预言一些新东西。比如黑洞、引力波等,牛顿力学里根本没有,天文观测也没见过,物理学家做梦都没梦见过——可是如果你把广义相对论当个玩具,考虑这个方程在一些特殊情况下的解,你就能在纸面上算出来,应该有这些东西存在!
结果多年之后,天文观测的手段进步了,天文学家一找,还真的找到了!这简直不可思议,你就觉得这个世界对物理学家真是非常友好。
1928年,理论物理学家保罗·狄拉克(Paul Dirac)把量子力学和狭义相对论结合到一起,提出了一个关于电子的新理论。他对新理论的方程求解,就发现这个理论除了能解释电子的存在,方程还有另外一个解。那个解的各种性质和电子一样,但是它带正电,是电子的“反物质”。狄拉克就纯粹根据自己的方程,说世界上应该有“正电子”。结果到1932年,实验物理学家就真的找到了正电子!
第三,新理论不会让物理学家满足很长时间,他们又会想要更新的理论。
有了新理论,打开了新世界,你很快发现又有新的现象是这个理论解释不了的。比如广义相对论似乎不能完全解释暗能量,根本就无法解释暗物质,你就想要更新的理论。
如果有引力,尺度比较大,你就可以用广义相对论;如果引力可以忽略,尺度比较小,你就可以用量子场论。
那如果引力比较大,尺度又比较小,该怎么办呢?黑洞内部,以及最初的宇宙,就是这种极端的情况,而我们还没有一个理论适合这种情况。
所以现在物理学家最想要的,就是把广义相对论和量子场论统一起来。所以它被称为“统一理论”“万物理论”“终极理论”。
下图是物理学家心目中各个学科的推导关系,这一切的一切,都源自一个“终极理论”。
因为数学允许宇宙存在
“终极理论”虽然是个大问题,但我们还要探讨更大的问题,这大概也是人类所能问的最大的问题——这个宇宙到底为什么存在。
经济学家斯蒂文·兰兹伯格(Steven Landsburg)十多年前写过一本书叫《大问题》(The Big Questions),里面提到,有没有什么东西,是必须存在,凭空就存在,而且一直都是不可约化的复杂的呢?
这样的东西的确有,它就是,数学。
数学是一套纯粹的逻辑系统。数学家并没有“发明”数学知识,数学家只是“发现”了数学知识。
在兰兹伯格的《大问题》里。泰格马克说,为什么宇宙会存在,是因为数学存在。
数学王国,无须证明“为什么”,就存在。宇宙,只不过是数学王国中某些数学结构的物理实体而已。为什么我们这个世界能存在呢?因为数学,允许,它存在。
泰格马克有篇著名的论文,提出了一个关键的名词,叫“包袱”(baggage)。所谓包袱,就是人类强加在数学系统上的概念。
比如一个篮球,明明是一堆原子,但我们为了方便起见,把这堆原子当成同一个东西,叫“篮球”——篮球就是一个包袱。生物体的底层逻辑就是化学,泰格马克说,化学是更基本的结构,而生物体各个器官的名称,就是包袱。同样的道理,化学的底层是物理,所以化学概念也是包袱。
那如果把所谓的包袱都剥离掉,剩下来的是什么?
哲学上一直有个悖论,叫“无穷后退问题”。我们说这个物质是由分子组成的,分子是由原子组成的,原子是由质子、中子和电子组成的,这些又是由夸克组成的……那以此类推,推到哪里才算到头呢?泰格马克说,其实推到基本粒子那里,就已经到头了!
最后不带包袱的这个东西,就是数学结构。终极理论,不管它是什么样子的,它必然是一个没有任何包袱的纯数学结构。
凡是有包袱的东西,都有一些“内禀”的性质。比如一把椅子,它的内禀的性质就包括它是什么颜色、是什么材质、有什么历史等。但是像“上夸克”这样的基本粒子是没有“内禀”性质的!
上夸克没有历史,世界上所有上夸克都是一模一样不可区分的。什么是上夸克呢?只要带2/3个电荷、1/3个单位的重子数、1/2个自旋和1/2个同位旋,再有一些质量,那就是上夸克。上夸克的所有性质都只是数学性质,是纯数学的产物。再问“上夸克是什么组成的”就没有多大意义了,正如你不能问“立方体是什么组成的”——立方体就是立方体。
因此,世界是什么组成的,这个问题最简单的答案,大约就相当于,“世界是立方体组成的——而立方体,因为是个数学结构,所以立方体就是立方体”。
数学宇宙的特点就是除了数学就没有别的东西——一切包袱都只不过是人为的概念而已。基本粒子是纯粹的数学结构,底层的一切,只有数学。
当然,并不是所有数学宇宙里都适合生命生存。有的数学宇宙非常简单,有的数学宇宙里能量不守恒,有的数学宇宙里不存在稳定的质子。我们这个宇宙看起来很不错,这只不过因为我们恰好生活在这个宇宙里,也可以说,这个宇宙恰好适合生命生存。现在物理学家苦苦寻找的终极理论,就是我们这个数学宇宙的数学结构。
但是那些不适合生命生存的数学宇宙,也都存在。什么叫存在?不一定非得让你看得见摸得着才叫存在,数学上存在就等于存在。
你、我、我们都是数学的产物,我们的各种活动只是在实践数学上的可能性而已——我们,就是数学的一部分。
曼德布洛特复数集合
对物理学家来说,量子随机性是唯一随机性,是物理定律不能预测的结果,是真正的意外。正因为量子力学不断制造意外,我们才在本质上也无法计算每个粒子的运动,所以宇宙中的信息才会越来越多。
简单的数学,也能生产非常复杂,甚至看起来就好像是随机产生的信息。举个最简单的例子:
根号2
=1.41421356237309504880168872420969807856967187537694807317667973799……
我们从中截取一段数字,比如“42096980785”,你会觉得这是一段完全随机的数字——但事实上它一点都不随机!
根号2是个无理数,它的小数部分无穷无尽,而且不会循环。表面上看,这串数字中包含了无穷多的信息,实际上它只是根号2这么一个信息!
还有一个特别著名的例子,叫“曼德布洛特复数集合”。简单说来这是复平面上的一张图,横坐标是实数轴,纵坐标是虚数轴。咱们先看看这张图的一个局部,如下图所示。
这张图非常漂亮,而且感觉特别复杂。这张图的看点在于各个地方看起来有点相似,但又不是完全一样,所以你没办法用复制粘贴的方法画这个图,你也没有办法高效地压缩它。
那这么复杂的图是怎么生成的呢?其实非常简单!你只要选定一个复数c,然后从z=0开始,反复迭代如下公式
这样生成一连串的数字z,每一个新数都是前一个数用这个公式计算出来——然后你把所有这些数都标记在复平面上。全局图是下图这个样子的。
为了好看,你可以根据一定的规则标记颜色。从这张图上一点深入进去,可以有无穷无尽的变化。
而这美丽的复杂其实是个幻觉!这一切源于这个无比简单的公式。
我们这个宇宙现在的一切,看似无比的繁华复杂,其实都是从一个简单数学公式推演出来的。除了终极理论的那个公式,宇宙从来都没有过新信息!