- 計算進化史:改變數學的命運
- (法)吉爾·多維克
- 8字
- 2019-01-05 10:13:44
第一篇 古老的起源
第1章 從史前數學到希臘數學
數學史往往是從公元前5世紀的希臘開始講起的。畢達哥拉斯創立了算術,泰勒斯和阿那克西曼德創立了幾何,奠定了古代數學的兩大分支。算術和幾何的創立,無疑是數學史上的重大突破。然而,這樣的講法卻忽略了一個重要的時代,也就是所謂的“史前”數學。人們并沒有等到公元前5世紀才開始解決數學問題,特別是那些日常面臨的具體數學問題。
會計師和土地測量師
“數學”活動最古老的痕跡之一是在美索不達米亞發現的一塊泥板,它可以追溯到公元前2500年。這塊泥板記錄了這樣一個計算:如果一個谷倉里有1152000份糧食,每個人分得7份,一共可以分給多少人呢?不出所料,結果是164571人,即用1152 000除以7得到的結果。看來,美索不達米亞的會計師在算術“誕生”之前很久就知道怎么做除法了。甚至,書寫完全有可能就是為了記賬才發明的——雖然這些事情很難說得準,但若真是如此,數字就比字母發明得還要早了。有些人也許不愿意接受這種推測,但我們所有的書寫文化,很可能都要歸功于不怎么浪漫的會計行當呢!
美索不達米亞和埃及的會計師不僅會做乘除法,而且掌握了許多其他的運算,比如解二次方程等。土地測量師則會計算矩形、三角形、圓形的面積。
“無窮”的闖入
會計師和土地測量師創造的技法構成了史前的算術和幾何。那么,公元前5世紀的希臘到底發生了什么特別的事情,獨獨讓這個時刻成為了數學史的開端呢?想要搞清楚這一點,讓我先舉個例子吧。畢達哥拉斯有個學生,姓名已然不可考了,但他解決了這樣一個問題:比如以米為單位,要找出一個等腰直角三角形,讓三條邊的長度都是自然數。因為三角形是等腰的,兩條短邊的長度一樣,我們就設這個長度為x,然后設長邊,也就是斜邊的長度為y。因為這又是一個直角三角形,根據畢達哥拉斯定理, y2就等于x2+x2。這個問題最終歸結為:找出兩個自然數x和y,使得2×x2=y2。讓我們來試試4以內所有x和y的可能性吧(見表1.1)。
表1.1 4以內x與y的所有可能性

在所有這些情況里,2×x2都不等于y2。我們還可以在更大的數字范圍里繼續尋找,事實上,畢達哥拉斯學派很可能尋找了很久,卻沒能找到解。后來,他們終于相信這個解不存在。他們是怎么說服自己這個解不存在的呢?顯然不是試遍了所有的數對,因為這樣的數對有無窮多個。你就算試到1000甚至100萬,證實沒有數對能滿足條件,可你還是沒法保證在更大的數字里面不可能有解……讓我們來重新構建一個思路吧,也許畢達哥拉斯學派就是由此得出這個結論的。
首先,在找解的時候,我們只要在x和y至少有一個是奇數的情況里找就行了。因為比方說x =202, y =214是一組解,那么把兩個數都除以2就可以得到另一組解x=101, y=107。所以,至少要有一個數是奇數。再推廣一點,我們任取一組解,把兩個數反復除以2,總歸會得到一組至少有一個數是奇數的解。如果這個問題有解,就必然存在x和y中至少有一個是奇數的解。
第二個想法是把數對分成4類:
● 兩個數都是奇數;
● 第一個數是偶數,第二個數是奇數;
● 第一個數是奇數,第二個數是偶數;
● 兩個數都是偶數。
有了這兩個想法,我們就可以分4種情況證明,但這4種情況中沒有一個能夠構成x和y至少有一個是奇數的解,所以這個問題就沒有至少有一個數是奇數的解,也就是說,這個問題根本沒有解。
我們先從第一類開始:x和y都是奇數的解不存在。因為如果y是奇數,則y2也是奇數。它不可能等于2×x2,因為后者必然是偶數。這一論證也同樣適用于第二類,即x是偶數而y是奇數。第四類本身就不成立,因為根據定義,數對中的兩個數不可能都是偶數。現在只剩下第三類,即x是奇數而y是偶數。但在這種情況下,2×x2的一半是奇數,而y2的一半卻是偶數——這兩個數不可能相等。
一個平方數不可能是另外一個平方數的兩倍——這個由畢達哥拉斯學派在2500多年前得到的結果,迄今在數學上仍占有重要地位。它證明了,如果你畫一個短邊長度為1米的等腰直角三角形,那么以米為單位的話,斜邊的長度是。這個數稍大于1.414,卻無法通過兩個自然數y和x相除得到。由此,幾何揭示了一些不能通過自然數的四則運算,即加、減、乘、除得到的數。
幾個世紀之后,這個發現啟發數學家們構造出了新的數——實數。但畢達哥拉斯學派沒有走到這一步,他們還沒有準備好放棄自然數這個基本觀念。對他們而言,這個發現更像一場災難,而不是前進的動力。
這個問題的革命性不僅僅在于它對未來數學的巨大影響,還在于它本身的性質及其解決的方法。首先,與美索不達米亞泥板上銘刻的把1152000份糧食除以7份的問題相比,畢達哥拉斯學派的問題更為抽象:美索不達米亞的會計師關注的是糧食的份數,而畢達哥拉斯學派的問題僅涉及數字本身。同樣,這個問題的幾何形式并沒有談到三角形的田地,而就是三角形這個形狀。從三角形的田地到三角形,從糧食的份數到數字,邁向抽象這一步的意義不可小覷。田地的面積無非有幾平方千米。如果這個問題說的是三角形的田地而不是抽象的三角形,我們挨個嘗試x和y小于10000的所有數字,或許就能解決問題了。然而,抽象的三角形和田地不同,它的面積可以輕易大到上百萬甚至上億平方千米。
公元前5世紀的重大革命,就是抽象的數學對象與自然中的實際物體之間的分離,即使數學對象本身就是從實際物體中抽象出來的也不例外。
數學對象與自然物體之間的分離,讓一些人認為數學不適合描述自然物體。這種看法一直活躍到伽利略的時代(公元17世紀),直至數學物理的成就將其打消。然而直到今天,一些人的腦海里還殘留著數學與人文科學毫無關系的觀點。用瑪麗娜·雅蓋洛的話來說,數學在語言學中的作用就是“將語言學作為‘人文科學’故而本質上就不精確的那一面掩藏在數學公式里”。
自這場革命之后,數學研究的對象不再是必須與實際物體相關的幾何圖形和數字。研究對象性質的變化,最終引發了解決數學問題的方法的革命。讓我們再來比較一下美索不達米亞泥板上的問題和畢達哥拉斯學派的問題各自的解決方法吧:第一個問題是通過計算解決的——做一個簡單的除法就行了,而要解決第二個問題,就需要進行推理了。
要做除法,我們在小學里學過的算法就夠用了,美索不達米亞人也會做類似的計算。然而,要進行畢達哥拉斯學派的推理,沒有任何算法會教你把數對分成四組。畢達哥拉斯學派應該是發揮了想象力才得到了這個思路。也許有一個門徒明白了數字y不能是奇數;過了幾個星期或者幾個月,另一個門徒又取得了一些進展,發現x也不能是奇數;然后,幾個月甚至幾年都卡在這里,直到又有一個門徒有了新想法。美索不達米亞人在做除法時,他知道自己會得到什么樣的結果,甚至事先預知這個除法要算多久。反過來,當畢達哥拉斯學派的門徒面對算術問題時,他不可能知道要花多少時間才能找到一種能夠解決問題的推理,甚至不確信是不是有找到答案的那一天。
學生們有時會抱怨數學太難學——數學需要想象力,而且沒有系統化的方法來解決所有問題。這種說法確有其道理。數學對于專業數學家來說就更難,有些問題要花幾十年甚至幾百年才能解決。面對數學問題束手無策并不稀奇,數學家們也會在難題面前“卡殼”,有時甚至要到很久之后才能找到答案。但是,如果做個除法也要“卡殼”好幾個鐘頭,這就說不過去了——因為只要應用一個人所共知的算法就行了。
研究對象性質的變化是如何引發解決問題的方法發生變化的呢?換句話說,古希臘數學是如何完成從計算到推理的標志性轉變的呢?畢達哥拉斯學派的問題為什么就不能用計算解決呢?我們再來和美索不達米亞泥板上的問題比較一次吧。泥板上的問題針對的是一個特定的物品,即裝滿了糧食的谷倉,谷倉的體積是已知的。而在畢達哥拉斯學派的問題中,三角形是未知的——這正是我們需要去求解的對象。這個問題說的不是某個特定的三角形,而是會涉及所有可能的三角形。而且,由于三角形的尺寸沒有限制,問題會同時涉及無窮多個三角形。因此,在數學對象的性質發生變化的同時,“無窮”闖入了數學——方法的改變勢在必行,要用推理來代替計算。我們在前面已經提到,如果這個問題僅涉及有限個三角形,比如所有邊長小于10000米的三角形,那還是可以依靠計算來嘗試所有不超過10000的數對。當然,手動計算起來無疑十分麻煩,但問題還是可以有條不紊地得到解決。
在公元前5世紀的希臘發生的這場從計算到推理的轉變,被視為數學的誕生。
最初的推理規則:哲學家與數學家
那么,到底什么是推理呢?如果我們知道所有的松鼠都屬于嚙齒目,所有的嚙齒目動物都是哺乳動物,所有的哺乳動物都是脊椎動物,所有的脊椎動物都是動物,我們就可以推導出一個結論:所有的松鼠都是動物。推理讓我們得到了這個結論,這背后是一套連續的推導:所有的松鼠都是哺乳動物,因此所有松鼠都是脊椎動物,因此所有的松鼠都是動物。
這個推理簡單得不能再簡單了,但它的結構和數學推理在本質上并無二致。無論哪種推理,都是由一系列命題構成的,每個命題都是用先前的命題通過邏輯得出的,也就是按照“演繹推理規則”構造的。在此情況下,我們把同一個規則連用了三次:如果我們已經知道所有的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”,并讓兩者形成一個關系。同理,它也沒有辦法構造命題“直線?穿過了點A”。
我們現在明白了,為什么古希臘的數學家沒有使用同時代哲學家提出的邏輯來進行新生的算術和幾何推理——因為這些邏輯不夠豐富,做不到。在非常長一段時期內,如何構造一套豐富的、足以支撐數學推理的邏輯這一問題似乎并沒有引起多少人的興趣。除了個別人的幾次嘗試之外,比如17世紀萊布尼茨所做的研究,直到19世紀末的1879年,戈特洛布·弗雷格才重新拾起了這個問題,并提出了一套邏輯。但是,一直等到阿爾弗雷德·諾思·懷特海與伯特蘭·羅素在20世紀初提出類型論,并且大衛·希爾伯特在20世紀20年代提出了謂詞邏輯之后,這些工作才取得了具體的成果。
不過,我們還是先繼續看看古希臘的數學吧。雖然沒有顯式的演繹規則來構造數學推理,但這并沒有讓數學止步不前。直到19世紀,數學命題的語法和演繹規則只不過不那么明確而已。這種情況在科學史上屢見不鮮——在缺乏工具的時候,人們就會想方設法對付一下,而這些變通又常常為工具的出現奠定了基礎。
不過對于幾何而言,歐幾里得明確提出了“公理”的概念:這是無需證明的事實,也是構造證明的基礎。特別是著名的平行公理,用現代的形式表述是這樣的:過給定直線外一點,有且僅有一條直線與之平行。
長期以來,歐幾里得的專著《幾何原本》一直都被視為數學方法的原型:先提出公理,然后利用顯式或隱式的演繹規則,由公理證明定理。從這個角度來看,推理才是解決數學問題的唯一途徑,這也反映出古希臘數學家和哲學家對于推理的重視。
古希臘數學家利用公理化方法發現了一種新的數學。也許,他們還曾試圖理解這種新的數學是如何從美索不達米亞人和古埃及人更古老數學的發展而來的。如果古希臘人真的這樣做了,他們就應該會去思考如何將計算和推理融合起來。然而這并不是他們的目的——相反,他們將過去一抹而凈,完全拋棄了計算,而代之以推理。
正因如此,在古希臘之后,計算在數學大廈之中就難有立錐之地了。