计算,如何改变了数学的命运?_智能_好奇心日报

曾梦龙2017-05-04 18:58:56

“自 20 世纪 70 年代开始,数学方法的基石——证明的概念逐渐发生演变,让一个古老却有些被人忽视的数学概念重新回到了舞台中央,这就是‘计算’。”

作者简介:

吉尔•多维克(Gilles Dowek),法国数学家、逻辑学家和计算机科学家,法国国家计算机与自动化研究所机器证明处理系统、编程语言、航空系统安全专家,美国国家航空研究院顾问。多维克撰写过多部数学和计算机科学科普作品,曾荣获法国数学学会达朗贝尔奖和法兰西学术院哲学大奖。

译者简介:

劳佳,上海交通大学硕士,现任 SAP (美国)高级软件支持顾问。业余爱好语言、数学、设计,英、法双语译者,译著有《咨询的奥秘》《卓越程序员密码》《周末读完英国史》等。  

书籍摘录:

前言 数学踏上新的征程

人们常说,刚刚过去的一个世纪是数学真正的黄金时代。数学在 20 世纪的进步比先前所有的世纪加起来还要大。然而,刚刚开始的这个世纪也可能同样是数学发展的好时候。或许,数学在这个世纪的变迁会和 20 世纪一样巨大,甚至更为惊人。引发这种想法的信号之一是一场渐变:自 20 世纪 70 年代开始,数学方法的基石——证明的概念逐渐发生演变,让一个古老却有些被人忽视的数学概念重新回到了舞台中央,这就是“计算”。

计算能成为引发革命的导火索,这看起来有点不合常理。算法,比如做加法和做乘法的算法,常常被视为数学知识中最基础的一部分,做计算也经常被看成是缺乏创造性的枯燥工作。数学家们自己对计算也颇有成见,勒内·托姆就曾说过:“我的论述中很大一部分属于纯粹的猜想,大家基本上可以把它们看成是梦话。我接受这种定性……如今,世界上到处有这么多学者在做计算,难道有人做梦不是件好事吗?”用计算来做梦,大概还真有点难度啊……

来自:亚马逊

不幸的是,对计算的偏见恰恰根植于“数学证明”这一概念的定义里。确实,欧几里得以降,“证明”的定义就是利用公理和演绎规则构建的一套推理 。然而,要解决一个数学问题,仅仅需要构建一套推理吗?数学的实践难道没有告诉我们,解决问题需要把推理的步骤和计算的步骤巧妙地融合起来吗?公理化方法若局限在推理中,它所展现的数学视野恐怕也会十分狭隘。正是因为人们对约束过多的公理化方法多有批评,才让计算有机会重新出现在数学的舞台上。现在,已有一些研究工作(它们之间未必有关联)渐渐开始质疑推理高于计算的优势地位,并倡导一种更为平衡的观点,让两者互为补充。

这场革命让我们重新考量推理和计算之间的关系,同时也促使我们重新审视数学与物理学、生物学等自然科学之间的对话,特别是数学为何能在这些学科中发挥难以理解的强大作用这一古老问题,以及自然理论的逻辑形式这一全新问题。此外,这场革命给“分析判断”和“综合判断”等哲学概念带来了新的火花。它还让我们反思数学与计算机科学之间的关系,而且数学似乎是唯一一门不需要借助机器的科学,它为什么如此独特?

最后,最振奋人心的是,这场革命让我们隐约看到了一些解决数学问题的新方式,它摆脱了过去的技术强加给证明长度的枷锁——数学也许正踏上新的征程,去探索从未涉足的全新领域。

诚然,公理化方法的危机并不是凭空出现的。从 20 世纪上半叶起就有许多先兆,特别是两种理论——可计算性理论和构造性理论的出现。这两种理论本身虽然没有质疑公理化方法,却重新确立了计算在数学大厦中的地位。在讨论公理化危机之前,我们会简要回顾这两个概念的历史。不过,还是让我们先上溯远古,探寻计算这一概念的起源,看看古希腊人对数学的“发明”过程吧。

作者本人,来自:维基百科

第 1 章 从史前数学到希腊数学(节选)

最初的推理规则:哲学家与数学家

那么,到底什么是推理呢?如果我们知道所有的松鼠都属于啮齿目,所有的啮齿目动物都是哺乳动物,所有的哺乳动物都是脊椎动物,所有的脊椎动物都是动物,我们就可以推导出一个结论:所有的松鼠都是动物。推理让我们得到了这个结论,这背后是一套连续的推导:所有的松鼠都是哺乳动物,因此所有松鼠都是脊椎动物,因此所有的松鼠都是动物。

这个推理简单得不能再简单了,但它的结构和数学推理在本质上并无二致。无论哪种推理,都是由一系列命题构成的,每个命题都是用先前的命题通过逻辑得出的,也就是按照“演绎推理规则”构造的。在此情况下,我们把同一个规则连用了三次:如果我们已经知道所有的 Y 都是 X,所有的 Z 都是 Y,就可以推导出所有的 Z 都是 X 。

古希腊的哲学家为我们总结了最初的演绎规则,它可以让推理进行下去,也就是从已证的命题演绎出新的命题。例如,上述这条规则要归功于亚里士多德,他提出了一套叫作“三段论”的规则。三段论的另一种形式是“有些……是……”:如果知道所有的 Y 都是X,有些 Z 是 Y,我们就可以演绎出有些 Z 是 X 。

亚里士多德并不是唯一一位对演绎规则感兴趣的古代哲学家。公元前 3 世纪的斯多葛学派提出了另一套规则。例如,如果有命题“如果 A,那么 B ”和命题 A,则有一条规则可以演绎出命题 B。

亚里士多德,来自:维基百科

这两派总结演绎规则的尝试,正值从计算转向推理的方法论革命之后,古希腊算术和几何的蓬勃发展时期。因此我们可以想见,古希腊的数学家会使用亚里士多德或者斯多葛的逻辑来进行推理。比如,在证明一个平方数不可能是另一个平方数的两倍时,就可以用到三段论。奇怪的是,事实并非如此,尽管古希腊哲学家和数学家很显然是志同道合的。比如,在公元前 3 世纪,欧几里得写了一篇专著,综合了他那个时代的几何知识。他的专著结构完全是演绎式的,其中提到的每一件事都给出了推理证明,但欧几里得却从来没有用到过亚里士多德或斯多葛的逻辑。

有几种假设可以来解释这件事。最可能的一种假设是说,数学家没有使用亚里士多德或斯多葛的逻辑,是因为它们太粗糙了。在斯多葛的逻辑中,可以用来推理的是“如果 A,那么 B ”形式的命题,其中 A 和 B 是所谓的“原子命题”,表述了一个简单事实,比如“苏格拉底必死”或者“天亮了”。于是,斯多葛逻辑的命题就是用“如果……那么……”“和”“或”等连词联系起来的一些原子命题。这是一种非常贫乏的语言设计,里面只有两种语法类别——原子命题和连词。它并没有考虑到原子命题,比如“苏格拉底必死”可以拆分成主词“苏格拉底”和谓词(或属性)“必死”。

亚里士多德的逻辑和斯多葛不同,它承认了“谓词”的概念。推理中出现的 X 、Y 、Z  表达就恰恰是谓词——松鼠、啮齿目、哺乳动物……然而,亚里士多德的逻辑中并没有“专有名词”,即指代个人或物体的名词,比如“苏格拉底”。这是因为,对于亚里士多德来说,科学并不关心苏格拉底这样的特定个人,而是仅仅关心广义的概念,比如“人”“必死”……所以,人们常常用来举例的三段论——“所有人都是必死的,苏格拉底是人,所以苏格拉底是必死的”——并不会出现在亚里士多德的逻辑中。对他来说,三段论应该是:“所有人都是必死的,所有哲学家都是人,所以所有哲学家都是必死的。”所以说,在亚里士多德的逻辑中,命题并不是由主词和谓词构成的,而是由两个谓词和一个泛指代词“所有”或“某些”构成的。

直到中世纪末,亚里士多德的逻辑才得到拓展,加入了专有名词“苏格拉底”等单称项。然而,即使有了这样的拓展,亚里士多德的逻辑对于表达某些数学表述来说还是太粗糙了。有了单称项“4”和谓词“偶数”,我们当然可以构造命题“4 是偶数”,但它却没有办法构造命题“4 比 5 小”,因为“偶数”只作用于单个对象,而谓词“比……小”与之不同,它要作用于两个对象,即“4”和“5”,并让两者形成一个关系。同理,它也没有办法构造命题“直线 l 穿过了点  A ”。

来自:亚马逊

我们现在明白了,为什么古希腊的数学家没有使用同时代哲学家提出的逻辑来进行新生的算术和几何推理——因为这些逻辑不够丰富,做不到。在非常长一段时期内,如何构造一套丰富的、足以支撑数学推理的逻辑这一问题似乎并没有引起多少人的兴趣。除了个别人的几次尝试之外,比如 17 世纪莱布尼茨所做的研究,直到 19 世纪末的 1879 年,戈特洛布·弗雷格才重新拾起了这个问题,并提出了一套逻辑。但是,一直等到阿尔弗雷德·诺思·怀特海与伯特兰·罗素在 20 世纪初提出类型论,并且大卫·希尔伯特在 20 世纪 20 年代提出了谓词逻辑之后,这些工作才取得了具体的成果。

不过,我们还是先继续看看古希腊的数学吧。虽然没有显式的演绎规则来构造数学推理,但这并没有让数学止步不前。直到 19 世纪,数学命题的语法和演绎规则只不过不那么明确而已。这种情况在科学史上屡见不鲜——在缺乏工具的时候,人们就会想方设法对付一下,而这些变通又常常为工具的出现奠定了基础。

不过对于几何而言,欧几里得明确提出了“公理”的概念:这是无需证明的事实,也是构造证明的基础。特别是著名的平行公理,用现代的形式表述是这样的:过给定直线外一点,有且仅有一条直线与之平行。

长期以来,欧几里得的专著《几何原本》一直都被视为数学方法的原型:先提出公理,然后利用显式或隐式的演绎规则,由公理证明定理。从这个角度来看,推理才是解决数学问题的唯一途径,这也反映出古希腊数学家和哲学家对于推理的重视。

古希腊数学家利用公理化方法发现了一种新的数学。也许,他们还曾试图理解这种新的数学是如何从美索不达米亚人和古埃及人更古老数学的发展而来的。如果古希腊人真的这样做了,他们就应该会去思考如何将计算和推理融合起来。然而这并不是他们的目的——相反,他们将过去一抹而净,完全抛弃了计算,而代之以推理。

正因如此,在古希腊之后,计算在数学大厦之中就难有立锥之地了。

题图为电影《模仿游戏》剧照,来自:豆瓣

喜欢这篇文章?去 App 商店搜 好奇心日报 ,每天看点不一样的。