返回
Featured image of post 程序员视角下的三体世界随想

程序员视角下的三体世界随想

AI 摘要
作者在新年伊始撰写博客,反思过去一年未有圆满结局,疫情加剧了对故乡的思念。作者选择乘坐首班高铁回乡,并决定给家人一个拥抱,却发现面对熟悉的人时表达情感变得困难。尽管期待每次重逢都有不同体验,但对家的熟悉感带来了内心的安宁。作者不喜欢过年走亲戚,话题转向了《三体》中的三体问题,这是一个描述在万有引力作用下三个天体运动规律的复杂问题,至今无解析通解。三体问题贯穿物理学发展史,与牛顿第一定律和开普勒定律相关,但其运动轨迹不可预测,求解需要解18个一阶微分方程。尽管有特定解,但无法用通用公式描述所有情况。《三体》小说中,三体星球因受三个太阳影响,生活条件极端,居民需通过脱水和浸泡来适应。现实中的半人马座α三合星真实存在,其行星比邻星b面临X射线威胁,令外星生命存在成谜。作者将三体问题与分布式系统的 CAP 定理相提并论,探讨信息传递延迟和主从切换的一致性问题。最后,作者思考三体人的脱水和浸泡与程序员的序列化和反序列化之间的相似性,以及人的意识与肉体的关系,引发对个体身份和变化的深入思考。

新年的第一篇博客迟迟没有落笔,我想,大抵是因为过去一年并没有一个“圆满”的结局,而这一切就好像,你总是要写完一个句号,方能心安理得地另起一行。我猛然意识到,这场疫情无形中放大了故乡在时间和空间上的距离感。因此,面对阔别久矣的故乡,我甚至选择了早上的第一趟高铁。当我在列车上看着身后的事物一点点变小直至消失,这实在像极了我每一次出门远行。彼时彼刻,一个念头我在脑海中盘桓辗转:见到家人的那一刻,一定要给对方一个坚实的拥抱。可奇怪的是,越是面对熟悉的人,我们反而越是拙于表达。当我推开家门看到再熟悉不过的一切时,我内心突然获得了某种安宁,即使我们一直期待的事情是,每次相逢都能有不同的体验。我说我不大喜欢过年走亲戚这类活动,老大哥面无表情地回一句:看三体。

三体问题,其实可以看作是 N 体问题的一个特例,而所谓 N 体问题,则是指 N 个参照值相对一致的天体,仅在万有引力的作用下会呈现出什么样的运动规律。该问题最早由天才数学家希尔伯特教授,在 1990 年的全球数学大会上提出,是目前公认的人类科学界最难的 23 道数学题之一。如果你无法理解这个难度,请允许我找一个更有名的问题——费马大定理作为参照。事实上,早在 1687 年近代物理学之父牛顿,第一次提出了三体问题。此后的三百余年里,三体问题更是串联起无数如雷贯耳的名字:欧拉、拉格朗日、庞加莱、希尔伯特、开普勒…等等。

三体运动 “混沌” 模型示意图
三体运动 “混沌” 模型示意图

从某种意义上来讲,三体问题贯穿了整个物理学的发展历程。具体来讲,当 N = 1 时,单个质点的运动轨迹是匀速直线运动,这对应的是牛顿第一定律;当 N = 2 时,两个质点的相对位置始终在一条圆锥曲线上,这对应的是开普勒定律;当 N = 3 时,这就是著名的三体问题,此时,这三个质点的运动轨迹是不可预测的,而从数学的角度来看,三体问题没有解析通解,即:我们没有办法用一个通用的公式来描述其运动轨迹。一个最浅显的例子是,在三维空间中描述位置需要 x、y、z 三个参数,因此,每一个质点可以写出 3 个二阶微分方程或者 6 个 一阶微分方程。那么,当有三个这样的质点的时候,最多的时候会得到 18 个一阶微分方程。可以预见,求解三体问题,等价于求解这样 18 个一阶微分方程构成的方程组,其难度可想而知。

三体运动 “三角形” 模型示意图
三体运动 “三角形” 模型示意图

不过,虽然三体问题没有解析通解,我们总是可以找到某个特定解。譬如,当三颗天体在一条直线上时,两侧的天体会围绕中心天体呈椭圆形的运动轨迹。我们最为熟悉的太阳系就是这种情形;如果三颗天体呈三角形分布,则它们会一起围绕三角形中心点旋转;除此以外,还可以是同一侧的两颗天体围绕第三颗天体呈椭圆形的运动轨迹,其可能性可以说是不一而足。从这个角度来讲,或许我们以后还会发现更多的特定解,但我们始终没有办法用一个完美的公式来描述所有可能的场景,这就是三体问题的复杂性所在。

三体运动 “8字形” 模型示意图
三体运动 “8字形” 模型示意图

回到刘慈欣老师的小说设定,三体星球是一个围绕半人马座 α 三合星系统公转的一个行星,由于这颗星球同时受到三个 “太阳” 的影响,使其呈现出一种在“恒纪元”和“乱纪元”交替往复的状态,为了在这样的环境中生存下去,三体人不得不通过 “脱水” 和 “浸泡” 的方式来维持生命。事实上,半人马座 α 三合星是真实存在的,甚至 2016 年科学家还在这个星系中发现了行星 “比邻星 b” 的踪迹。读到这里,我们不免会怀疑《三体》其实是一本纪实小说,难道这颗比邻星上真的有外星人吗?不同于小说中设定的三个太阳,真实的 “三体” 星球面临的最大威胁是 X 射线,据不完全统计,这颗比邻星上面承受的 X 射线是地球的四百倍。所以,就算真的有外星人,在如此强度的 X 射线面前,胜负还真的挺难说呢?

半人马座 α 三合星示意图
半人马座 α 三合星示意图

我最早接触的科幻小说,当属法国作家凡尔纳的《海底两万里》,可我并不是一个硬科幻爱好者,大概是因为高中时期的我对数学更感兴趣一点。因此,当我以一名程序员的视角来看三体这部作品的时候,我更多的是关注计算机和哲学两个维度。比如史强和汪淼进入三体游戏这一段,表面是在讲三体人如何 “给文明以岁月”,可我看到的其实是人类从古至今的文明演化历程,周文王、孔子、墨子、冯·诺依曼、牛顿、爱因斯坦…..人类正是依靠着知识和技艺的传承,一步步地走到了今天。譬如,《三体》中的关于 “人列计算机” 的构想可谓是天马行空,可仔细想来,这不过是早期晶体管计算机的具象化,人列计算机中的每一个士兵,本质上就是一个可以输出 0 和 1 的晶体管,正是这些 0 和 1 组成了各种各样的逻辑门。众所周知,逻辑门是构成计算机最基础的组件,常见的加法器、计数器、累加器等都和逻辑门有着千丝万缕的联系。

三体人列计算机中的逻辑门
三体人列计算机中的逻辑门

纵观古今,人类更关注如双子星一般耀眼、一时瑜亮的事物,以文学史度之,譬如盛唐有李杜、德国有歌德和席勒、法国有加缪和萨特、俄国有列夫·托尔斯泰和陀思妥耶夫斯基。我想,这或许和我们对宇宙的认知有关,在过去几千年的时间长河里,我们长期观察得天体只有太阳和月亮。因此,“三日凌空”、“三合星系统” 这种异象对我们来说极具诱惑。在关注三体问题得这段时间里,我正好在读一本关于分布式系统的书籍,我马上意识到,程序员世界里的三体问题其实就是 CAP 定理。因为它同时受到一致性( Consistency)、可用性(Availability) 和 分区容忍性(Partition Tolerance) 三个因素的影响,初始条件的选取会影响整体架构的设计和落地。当然,实际操作中它要比三体问题更简单一点,考虑 P 是客观存在的因素,我们其实只有 CP 和 AP 两种选择。

从三体问题到分布式系统
从三体问题到分布式系统

小说中设定三体人到达地球需要 400 年的时间,如果考虑到信息的传递同样需要时间,比如古代皇帝驾崩、颁布新政令的时候可能出现延迟,此时就会产生信息差。对应到分布式系统中,在处理主从切换的时候,可能会出现因为延迟而导致的不一致问题,试想一下,一个国家两个皇帝或者是一个系统中有两个 Master 节点,这并不比 “三日凌空” 好到哪里去。三体人为什么能实现真正的 “人列计算机” 呢?按照小说的设定,三体人具有思维透明的特点,这意味着三体人之间信息的交换是无损的、低延迟的。或许,我们会认为人类有城府、懂计谋,是因为人类懂得隐藏自身真实的想法。可是,你说有没有一种可能,三体人只是不擅说谎,他们完全懂得运用计谋,甚至这种计谋是浮在表面的 “阳谋” 。如果按照黑暗森林法则,整个宇宙本质上就是一款大型 “吃鸡” 游戏,三体人害怕地球人吗?确实怕,可令他们感到害怕的绝非人类本身,而是害怕人类将其坐标暴露给更高维度的文明。从这个角度来看,三体人的确没有说谎,甚至在有意无意的暗示人类。

奥日系列游戏中设想的黑暗森林
奥日系列游戏中设想的黑暗森林

三体人的 “脱水” 和 “浸泡” ,以程序员的视角来看,大约等同于序列化和反序列化。按照原著设定,当恒纪元到来的时候,三体人会通过 “浸泡” 的方式复活;当乱纪元到来的时候,三体人会通过 “脱水” 的方式冬眠。我认为,这里有一个非常深刻的话题,即探讨人的意识和肉体的关系。参照一般的理论,意识不但会认识到精神上的 “我” ,而且能认识到肉体上的 “我” ,并且还会把它们统一起来,构成这个世界上的 “我” 。那么,经历过 “脱水” 和 “浸泡” 这两道工序的三体人,是否还是原来的那个三体人呢?三体人经过 “脱水” 以后变成干纤维,肉体不复存在,意识又该何去何从?我们分辨一个人,到底是通过容貌、举止这些肉体上的特征,还是通过体验、感受这些意识上的特征?扩展到更大的层面上,公司和社会又分别通过什么来区分你?有时候,我们不得不接受来自自己或者时别人身上的变化,可能我们彼此的容貌没有任何变化,但我们从心理和情感上早已不再是当初的那个人,对此,你又将作何感想呢?我只知道,反序列化出的这个对象实例,肯定不是当初序列化时的那个对象实例。

Built with Hugo v0.126.1
Theme Stack designed by Jimmy
已创作 273 篇文章,共计 1032286 字