计算进化史

2+2=4 需要证明吗?可以用计算的方式证明素数有无穷多个吗?计算机可以代替人进行所有的数学证明吗?如果你思考过这些问题又没有明确的答案,那么可以看看这本《计算进化史》。


数学与算术的关系

数学与计算到底是什么关系?对于不同的人,可能答案会不一样。小学的时候,数学对我来说就是算术(计算),加减乘除、乘法口诀表到混合运算到简单的解方程,所有的东西都是算算算……;到了初中开始学习几何,才开始接触简单的公理、推理、证明;高中时代演绎、归纳成为挑战,而对计算的能力要求已然退居幕后;大学伊始,高数里的无穷∞ 、连续、断点、微分、积分对于没有准备的新生而言大多是挥之不去的梦魇。

为什么我们的数学学习生涯要这么设计?大概与人对数学的认知过程和方式有关吧。妈妈教我数数是从掰手指头开始的。美索不达米亚人的原始数学考虑的是:如果要把1152000份粮食分给164571个人,每个人能分几份;100步长、100步宽的田产与1000步长、10步宽的田产哪个面积大的问题;埃及人要考虑怎样丈量并切割出来的大石块砌成大金字塔而不会倒塌;秦始皇凿灵渠需要计算大小天平的尺寸来实现“三分入漓、七分入湘”。原始的数学一定是伴随着人类的实际需求而生的。


古典数学的诞生与第一次数学危机

大部分人在一生之中也不会真正去去考虑“如果我有无穷的钱,该怎么花光”这样的“实际”问题。只有在生产力发展到一定阶段,有一部分人可以从体力劳动里解放出来,专门思考“一尺之棰,日取其半,万世不竭”这样的问题,才会开始尝试把“数学”对象从对自然物体进行“算术”的过程分离出来,成为抽象而独立的概念。

数学的航船从勾股定理的诞生开始起航,遭遇到了毕达哥拉斯悖论,卷入了第一次数学危机的漩涡🌀,希帕索斯甚至为了无理数的发现付出了生命的代价,最终在欧多克索斯的拯救下得以摆脱危局。经过这次危机的洗礼,希腊人才不得不承认:直觉、经验乃至实验(任何实验都只能得到用有理数表示的量)都不是绝对可靠的,而推理论证才是可靠的,证明的思想在希腊人心中扎根,而计算作为推理构造的工具则应隐藏在幕后。进一步,希腊人发展了逻辑思想并加深了对数学抽象性、理想化等特征的认识。柏拉图强调数学要奠基于逻辑之上,必须要有准确的定义、清楚的假设和严格的证明,他的“应从自明的假设出发进行严格的证明”的思想成为古希腊公理方法的发端。

相比之下,包括中国在内的东方古代的数学家们将兴趣集中于计算,忽略了无理数概念所涉及的逻辑难点,固然没有碰上悖论的礁石,却也同时失去了发展数学逻辑体系的契机。中国传统数学以算为中心,却最终没有形成一个严密的公理化演绎体系,可称为憾事。


古典数学统治的负面影响与第二次数学危机

古希腊人在解决第一次数学危机的过程中,对无理量建立了严密的理论,并构建了几何学的大厦,而自欧氏之后,代数与几何被严格区分开来,由于几何拥有“严格”数学的基础,这就建立起古典数学中几何对算术(计算)的绝对优势。这种重几何、轻计算的思想使得算术、代数的发展受到极大的限制,以致于到19世纪时“geometrist”(几何学家)还是所有数学家的代名词。

实际上当毕达哥拉斯学派发现不可公度量的存在时,他们就已经面临“离散与连续”的难题。事实上,离散量对地球人而言是直观的,而连续、极限、无限这些概念甚至对于很多“考过”高等数学的人来说也是一道大槛。所以地球人花了近两千年去跨这道坎也不足为奇。

计算技术的发展是文艺复兴时期数学的重要成就,主要体现于代数学上的突飞猛进,符号体系的引入使得计算发生了重大的变革。而数学在天文学、力学研究中发挥的巨大作用使代数越来越成为解决问题的有效工具。笛卡尔创立的解析几何则改变了数学的面貌,把原来被古希腊人割裂开来的几何、数、形重新结合在一起,并直接促进了微积分的诞生!

“无穷小量究竟是否为0”的贝克莱悖论在微积分草创时代确实带来了第二次数学危机,然而,微积分在科学研究、数学应用(计算)中显示了巨大的威力,依靠这个强有力的工具,地球人解决了无数数学和物理上的难题,也使得人们有信心为其打下坚实的数学基础。

最终数学分析的基础依赖实数、实数依赖有理数、有理数依赖自然数的逐层构建,随分析的算术(计算)化,使微积分有了严格的基础。这个时期,计算又开始在数学的舞台上扮演重要的角色。


集合论、第三次数学危机和计算机计算时代的到来

当我们进入高中后,遇到的第一个数学概念就是:集合。集合是现代数学的基石,并在现代数学中占据统治地位。集合论的开创者康托尔的超限数理论引发了数学界的大战,而这涉及数学证明的方法问题。数学中常用的证明方法有两种:构造性证明和存在性证明。

本书用了大量篇幅介绍这两种证明的区别与联系,此处不再赘述。集合论的诞生从本质上揭示了无穷的特性,给数学开辟了广阔的新领域,促使了现代数学的形成,并用集合论的语言重述或解决了代数、几何、分析中长期存在的问题,并引出了实变函数、抽象代数、拓扑学等众多现代数学分支。

正当数学家们沉醉于数学绝对严格性的时候,罗素捅了大漏子,引发了第三次数学危机和新的大论战。以罗素为代表的逻辑主义、布劳威尔为代表的直觉主义和希尔伯特为代表的形式主义战作一团。1930年希尔伯特宣称:“把每个数学命题都变成一个可以具体表达和严格推导的公式,经过这样改造的数学所推导出来的结果无懈可击!”

然而,富有戏剧性的是在他发出这一结论的前一天,在另一个研讨会上,哥德尔发表了一项声明,使得在场的希尔伯特的学生冯.诺伊曼立刻意识到希尔伯特的纲领是没法实现了。哥德尔不完全性定理的推出结束了三大派的论战,而数理逻辑成了最后的赢家。

哥德尔、丘奇、图灵、克莱尼用各自的方式定义了一种语言来描述算法,最终他们的定义被证明具有等价性,而今天我们可以说,它们分别定义了一种“编程语言”。而在哥德尔发表声明现场的冯.诺伊曼则最终造出了可以运行“编程语言”的计算机,并开启了计算机计算的时代。


今天,我们每个人都离不开各式各样的计算设备,而计算设备和算法本身也在发生着飞速的变化,阿尔法狗已经击败了最强的人类围棋手,“机器会思考吗?”这个问题也许会在不远的奇点处给出我们答案!