宇宙是一台计算机吗?(上)06
本系列文章预计会有30个章节,这套文献将系统讲物理学系统本身,这里是第九季第6篇
--本文较长,预计阅读10min--
Hello,大家好,这里是Masir的物理学第九季专栏,今天我们继续谈谈关于宇宙话题的探讨,上一讲我们开了一个脑洞,关于宇宙是不是大脑。
有人评论说,那它的身子在哪?哈哈,也许就没有身子这个说法...
好,今天我们来谈谈计算机与宇宙的话题。
想必大家都看过《西部世界》这个美剧,这部剧主要讲解了一个计算机模拟的世界,我第一次看这部剧也是被惊到了,好似一切那么真实。
关于计算机模拟真实的世界,一些科技界的大牛都表达过相似的观点:人类其实处在一个超大规模的计算机模拟程序里,活在像《黑客帝国》那样的虚拟世界。
如,特斯拉、SpaceX的创始人埃隆・马斯克曾透露,“我们活在真实世界的概率只有十亿分之一”。同样,“奇点理论” 的提出者,谷歌首席未来学家雷・库兹韦尔也说到,“也许我们整个宇宙只不过是另外一个宇宙中某个初中生的科学实验而已”。
关于是否有可靠的证据,有两种解释 →
第一种认为,我们的宇宙看上去像是被精心设计出来的一样,因为自然界里的各种常数,如基本力的强度等,数值竟刚好符合生命形成的条件;
还有一种认为,宇宙似乎是按照数学法则运行的,就像计算机程序一样,因为数学知识客观、注定和不能否定;
当然,有可能你会觉得这是扯淡,但我们不要轻易下结论。从宇宙的角度来看,可能性实在太多了。宇宙学的第一性原理就是地球并不特殊,你以为的实际很可能不是你以为的。我们人类知道的知识放远宇宙来看,实在是太少太少了!
你可能说如果我们是计算机模拟的,为什么运行了这么久,系统仍然这么稳定,一切都和平安稳。我个人的解释是,我们的时间和设计者的时间是不一样的。可能站在设计师角度,别人的几分钟测试,对我们来说可能是几十万年。
也许那个设计师,只是启动了模拟程序,去上厕所了......
好,我们正式开始讨论!
有一种猜想认为我们以为的这个“现实世界”,其实是某个更高智能的计算机模拟 —— 我们其实是生活在一个网络游戏里。
如果你觉得这个猜想太过离奇,我们还可以换个说法:请问我们生活的这个现实世界,在理论上,可以用一台要多强大就有多强大的计算机来完全模拟吗?
当然这个说法并不是一个简单的思想实验,我们一起来感受下是如何建立起计算机模拟的关系的。
首先,所谓计算机模拟,首要的是了解计算机的本质,并且与真实世界来进行对比,再从使用计算机视角,你会重新认识这个世界。
不过,这所有的一切都要从数学开始!
1
实数
我们初中就开始学习“数”比如“自然数”是 0,1,2,3,……
“整数”是自然数加上负的自然数:……-3,-2,-1,0,1,2,3……
“有理数”则包括了分数和小数,但要求必须是有限的、或者是无限但是必须循环的小数。
本质上,所有有理数都可以写成分数,也就是两个整数相除:1/2,1/3,4/3 ……
实数之前,我们先思考一个问题。到底是自然数多?还是自然数里的“偶数”多?
人的直觉反应肯定是自然数比偶数多。
偶数 0,2,4,6,8,……,只是自然数的一部分,自然数里还有1,3,5,7这些奇数,整体肯定比部分多啊。
但是请注意,如果你在大学《高等数学》学过极限的话,你就会知道其实自然数和偶数都有无限多个。无限多的两种东西,怎么比较多少,无限大和无限大到底哪个大,其实这是一个哲学问题。
“无穷算术”之父,德国哲学家格奥尔格·康托尔(Georg Cantor)曾经为此思考了整整12年。大概是1874年,康托提出,自然数、自然数中的偶数、甚至一切有理数,其实都是一样多的,请看以下。
康托的洞见在于两个集合的元素如果能一一对应,那这两个集合的元素个数就一样多,请见以下:
每个偶数除以2就是一个自然数,偶数和自然数可以一一对应:
0 ↔ 0,
2 ↔ 1,
4 ↔ 2,
6 ↔ 3,
……
同样道理,全体整数的个数也和自然数的个数是一样多的,因为我们可以把整数按照一定的规律“数出来”,也就建立了跟自然数的一一对应:
0 ↔ 0,
-1 ↔ 1,
1 ↔ 2,
-2 ↔ 3,
2 ↔ 4,
-3 ↔ 5,
3 ↔ 6,
……
数学上这叫“可数”。一个包含无限个元素的集合只要是“可数”的,它就能跟自然数一一对应,它的元素个数就跟自然数一样多。
事实上,有理数的集合也是可数的。比如我们可以按照下面这张表格,把全体有理数列举出来。
无非就是把每个有理数都写成分数的形式,然后根据分子、分母的数字决定它在表格上的位置。只要按照图中箭头的方式,我们就可以把全体有理数数一遍。
你一边数着有理数,一边数着自然数,这就建立了一一对应的关系:所以有理数也和自然数一样多。
再扩展一下,你说一条线段有多少个点,实际上,1英寸、1英尺和1英里长的线段上的点数是相同的,为了证明这一点,你只需要看一看下面这张图。
这张图比较了AB和AC两条长度不同的线段上的点数。为了在两条线段的点之间建立一一对应,我们在AB上的每一个点上画了一条与BC平行的线,并将交点成对标记,比如D和D′,E和E′,F和F′,等等。AB上的每个点在AC上有一个对应点,反之亦然。
因此,根据我们的规则,二者的无穷是相等的。
现在到“实数”了。
所有有理数都是实数,而实数还包括“无理数”,也就是小学老师所谓的“无限不循环小数”。无理数的特点是不能写成分数的形式,也就是不能用两个整数相除得到。比如根号2和圆周率π就都是无理数。
数学上有个结论:无理数,是“不可数”的。
也就是说,实数不能跟自然数做一一对应。虽然自然数和实数都有无限多个,但是这两个无限不是一个级别 —— 实数比自然数要多得多。如果你说自然数是“无穷多”,那实数就是“多的一批”。
好,数学就这么多。你可能会说,这些都是一百多年前的人就知道的数学,现在对很多人来说都是常识,那说这些有啥意义呢?
意义就在于,实数是不可数的,而计算机的一切,都是可数的。
2
计算机的本质
理论上讲,只要有足够多的内存、给足够多的时间,一台计算机就可以完成任何“算法”。
但是计算机对算法有三个要求,这些要求就决定了计算机和真实世界似乎是有区别的。
第一个:算法必须是“数字化”的;
第二个:算法是一步一步的;
第三个:图灵机必须停机;
首先,计算机所有的输入和输出,中间计算过程中涉及到的所有数,都必须是能用有限多个数字描写。也就是说要么是整数要么是有限位的小数。换句话说计算机只能处理有理数。
比如说圆周率π,计算机里没有真正的圆周率。你要输入圆周率,只能输入一个有限位的近似的小数,3.141592653……到一定长度你必须停下。
你可以用计算机把圆周率算到任意精度,但是总要在算到某一位的时候停下来。只要你停下了,你算的那个数就是一个有理数,而不是真正的π,这是个伪π。
其次,因为计算机的底层是一个开关网络(门电路),晶体管要么开要么关,没有半开半关的状态。
(门电路符号)
所以,计算机不能算连续。
所有计算机程序都按照“步”运行,这一步干什么、下一步干什么,这就是计算机算法的概念。
你要模拟一个物体运动,必须先把时间和空间分成若干“小步”,让物体走一步。当然你可以把步分得很细。一旦确定了步,一步就是一步,没有“半步”的中间状态。
但是,真实世界好像不是这样的!
你挥一挥衣袖,让手从A点到达B点,这应该是一个连续的运动,你的手似乎应该经历了从A点到B点之间每一个距离数字,其中既有有理数也有无理数。
而计算机模拟你的手,只能经历有理数。
最后,给一个算法,它一定要算出一个结果来。从这个意义上讲现在的计算机都不是严格的图灵机。比如我们用的个人电脑的操作系统,在理论上都可以永远不停机。你还可以跟电脑做交互式的操作,这就更不是图灵机了。而真实世界,当然也是交互的。当然电脑里运行的每一段代码,都符合图灵机的要求。关于图灵机的停机问题我们先不细说。
那么根据这些要求,计算机程序就一定是有限长的、而且是数字化的操作。事实上,所有计算机程序都可以翻译写成由0和1组成的代码,硬件层面就是这么操作的。
而计算机程序必定是可数的,比如我们可以按照下面这个方法列举所有的计算机程序 ——
0
1
01
10
00
11
000
001
……
规则是按照长度,在每个长度下列举0和1的所有排列组合。当然其中很多代码根本就不是正确的计算机程序,但这我们不在乎,我们只要确保这个数法已经包含了所有可能的计算机程序就行。
所以说,计算机程序的集合,是个可数的集合。那计算机能做的事情,就是可数的。
那问题来了,真实世界里的事情也是可数的吗?真实世界里有没有实数呢?
如果真实世界里有些不可数的事情,如果真实世界里有些数必须是实数,那计算机怎么可能完全模拟真实世界呢?
好,今天就到这里啦,下一期继续~
往期推荐