數學與邏輯從畢達哥拉斯到圖靈的演化
0. 引言
寫《人機大戰簡史》的時候,我就一直在思考一個問題:一臺毫無智能的機器,何以經過執行一些操做,在一些方面就超越了擁有智能的人?限於篇幅和水平,我並無在那篇文章中展開討論。
死板的機器之因此體現出靈活的智能,是由於有一串嚴格的規則,指示它一步接着一步地執行操做。這些規則是智能的形式化體現,機器只是執行這些規則的裝置。雖然機器的執行速度一直在不斷提高,可是機器執行規則的本性並無什麼變化。人們又是如何想到智能活動能夠變成規則,而且規則能夠施加在機器之上的?帶着這個疑問,我又開始探索。
現代電子計算機以圖靈機爲理論原型。圖靈機是咱們所看到的讓機器具備智能的最直接的起點。然而,圖靈機並非圖靈的直接設計目標,而是他證實希爾伯特斷定問題的一個副產品。在證實的過程當中,圖靈使用的關鍵方法是康托爾提出來的。希爾伯特斷定問題,是爲了斷定可否使用弗雷格的邏輯規則從前提推導出結論。弗雷格但願利用邏輯來構造數學,但他的工做被羅素證實是不一致的。羅素和希爾伯特但願挽救弗雷格的工做,可他們的努力又被哥德爾推翻。在弗雷格以前,布爾證實了邏輯是數學的一個分支。這些邏輯與數學的工做,都是在萊布尼茨宏偉夢想以後。萊布尼茨是第一個明確表達出爲人類思想創建符號系統而且讓機器去處理這些符號的夢想的人,他的夢想植根於亞里士多德的公理體系,產生於由芝諾引發的數學危機中。亞里士多德的邏輯,又原由於畢達哥拉斯的一場危機。
從圖靈回溯到畢達哥拉斯,我思路逐漸清晰起來。無數哲學家、數學家、邏輯學家殫精竭慮,有困難就克服困難,沒有困難就製造困難再克服困難;遇到危機就化解危機,沒有危機就製造危機再化解危機。機器智能正是數學與邏輯一代一代演化的產物。全部這些數學與邏輯的演化,讓我逐漸意識到人的思想與機器操做之間的模糊界限。正是這種界限,讓人的思惟的可能得以機械化。思惟表明了人類特色,可人類居然將思惟機械化,這看似矛盾,倒是製造出智能的一條行得通的道路。
再正向梳理一遍,這場演化的主要線索以下:
1)
畢達哥拉斯學派的理論基礎被無理數的發現動搖,引起第一次數學危機,致使希臘數學從算術走向了推理證實的道路。
2)
亞里士多德提出三段論,創建起形式邏輯的公理體系,將邏輯規則的形式從內容中抽象出來。
3)
芝諾說阿基里斯追不上烏龜,最終引起第二次數學危機,期間牛頓和萊布尼茨發明微積分,符號的優點得以體現。
4)
萊布尼茨夢想創建人類的思想和知識的符號系統,並製造出能夠操做這些符號的工具。
5)
布爾證實了邏輯演繹能夠成爲數學的一個分支。
6)
弗雷格計劃在邏輯上構造數學,但遭到羅素的打擊,第三次數學危機爆發。
7)
康托爾在無窮中探索,找到了對角線法。
8)
羅素努力消除本身提出的悖論,與懷特海編寫數學原理鉅著。
9)
希爾伯特研究元數學,營救弗雷格的計劃。
10)
哥德爾發現一致性是不可證實的,你們仍是消停了吧。
11)
圖靈在證實希爾伯特斷定問題時順便提出了圖靈機,這成爲後來計算機的基本理論模型。
我將讀材料時所作的筆記整理出來,造成了這篇文章。這些故事都發生在《人機大戰簡史》一文所述事件發生以前,文章的題目就擬爲《人機大戰前傳》,副標題是數學與邏輯從畢達哥拉斯到圖靈的演化。
1. 畢達哥拉斯學派的理論基礎被無理數的發現動搖,引起第一次數學危機,致使希臘數學從算術走向了推理證實的道路。
在古代,數學是用來解決生活中的實際問題的,好比計算日曆、計算高度、計算距離、計算重量等,這些都屬於算術範圍。爲了進行度量,生活中不只會用到整數,還會用到分數。分數和整數統稱有理數。分數又能夠表示爲兩個整數的比。所以,在人們眼裏,整數是很是崇高和神祕的。
畢達哥拉斯(Pythagoras,公元前572年~前497年)和他的學派信仰「數即萬物」。他們發現了直角三角形兩直角邊的平方和等於斜邊平方(西方人稱之爲畢達哥拉斯定理,我國稱爲勾股定理);他們證實了三角形內角之和等於兩個直角;他們還研究了黃金分割等。畢達哥拉斯學派崇尚的數也是整數。他們相信,宇宙間各類關係均可以用整數或整數之比來表達。
然而,有一個名叫希帕索斯(Hippasus,約公元前500年)的學生髮現:正方形的邊長爲1,對角線卻不能用整數之比來表達。咱們今天固然知道,這個對角線是根2,是無理數。但對於畢達哥拉斯學派而言,這個發現倒是致命打擊。由於畢達哥拉斯學派理論中的全部命題都侷限於整數或整數的比例。一旦發現了有不受整數限制的無理數,他們的數學體系就崩潰了。因而,畢達哥拉斯學派規定了一條鐵律,禁止泄露根2的祕密。天真的希帕索斯無心間向別人談到了他的發現,卻因泄密被拋進了大海。
隨着時間的推移,無理數的存在逐漸成爲人所共知的事實。這引起了第一次數學危機。直到後來柏拉圖的學生對比例從新下定義,此次危機纔算化解。
經歷過這一次危機後,古希臘人在思想認識上發生了變革。首先,古希臘人發現幾何學的某些真理與算術無關,而數卻能夠由幾何量表示出來。因而,算術的地位受到挑戰,幾何學的地位開始上升。其次,古希臘人發現直覺和經驗不必定靠得住,推理證實才是可靠的。在古代埃及、巴比倫、中國、印度國家,並無經歷過這樣的危機和革命,也就繼續走着以算爲主,以用爲主的道路。
在畢達哥拉斯學派的理論基礎被無理數的發現所動搖以後,古希臘人開始從自明的公理出發,經過演繹推理研究,造成了歐幾里得《本來》的公理體系與亞里士多德的邏輯體系。
2. 亞里士多德提出三段論,創建起形式邏輯的公理體系,將邏輯規則的形式從內容中抽象出來。
亞里士多德(Aristotle,公元前384年~公元前322年)最初是以反面教材的形象被我認識的。他說太陽繞着地球轉,但哥白尼證實了地球繞着太陽轉;他說物體越重下落速度就越快,可是伽利略在比薩斜塔上拋了大小倆球;他說力是維持物體運動的緣由,但牛頓說力是改變物體運動狀態緣由。他研究形而上學,但黑格爾說辯證法不知高到哪裏去了。我一直以爲亞里士多德表明了古代人的愚昧。後來我漸漸知道,這只是體現了個人愚昧。
第一次數學危機事後,古希臘人拋棄了直覺和經驗,開始轉向推理和證實。因而,一些具體的測算工做就漸漸抽象成了純粹的思惟過程。然而在思惟過程當中,什麼叫證實、什麼叫定義、什麼是正確的、什麼是有效的,都成了新的問題。亞里士多德決定從基本的公理出發,推導出邏輯體系。
亞里士多德把矛盾律看成最基本的公理。矛盾律是說:「同一種性質既屬於又不屬於同一個東西,這是不可能的。這是一切原理中最肯定無疑的。所以,那些做論證的人把這當成一條最終意見。由於它依基本性就是其餘一切公理的來源。」本文後面還會屢次提到這個公理。
亞里士多德在對邏輯推理過程的研究中,得出了三段論法,並把它表達成一個公理系統。三段論是指由兩個廣泛前提,得出一個結論。下面是一個三段論的例子:
1)若是全部人都是會死的
2)而且全部希臘人都是人
3)那麼全部希臘人都是會死的
須要注意的有兩點:1)三段論是一種蘊涵,它自己並不要求前提真的成立,而是在假定前提爲真的前提下推導出結論。2)三段論是一種形式,它自己不要求每一個詞都是具體的,中間能夠引入變項。因而,亞里士多德能夠用字符來代替任何符合要求的詞項。這正是亞里士多德的偉大之處。三段論的模樣就能夠變成:
1)若是全部B是A,
2)而且全部C是B,
3)那麼全部C是A。
亞里士多德從三段論的定義出發點對全部的三段論進行研究,他不但寫出了全部有效的三段論,還證實了這些三段論爲何是有效的,更說明了爲何其餘三段論不能成立。三段論以及命題、證實、定義、演繹、概括、論辯、詭辯等課題的相關論著被彙編成書,取名《工具論》。這是最先的公理系統,爲後面的形式邏輯奠基了基礎,也樹立了榜樣。
亞里士多德開創了形式邏輯的先河。形式邏輯雖不是知識,倒是知識的工具。只要遵循了正確的邏輯形式,就能夠保證若是前提爲真,那麼結論也必然爲真。你甚至都不須要理解要論證的內容是什麼。這樣,就使得那機器只經過正確的形式就能進行正確的推理成爲了可能。
然而,到目前爲止,這僅僅是一種可能,甚至當時都沒有人想過是否是可能。
3. 芝諾說阿基里斯追不上烏龜,這最終引起第二次數學危機,期間牛頓和萊布尼茨發明微積分,符號的優點得以體現。
埃利亞的芝諾(Zeno of Elea,約公元前490~公元前425年)是一個自學成才的鄉里娃子。有一次他和小夥伴進雅典城,發現城裏人都在談論一些很高深的問題。他也參與進來,拋出了四個悖論,那些牛哄哄的智者當時就震驚了。
芝諾的一個悖論說:阿基里斯追不上烏龜。阿基里斯是《荷馬史詩》中的英雄, 最善長跑步。若是他想追上前面慢慢爬行的烏龜,他必須首先到達烏龜的出發點;而當他到達那一點時,烏龜又向前爬了;當他再次跑到烏龜新的出發點時,烏龜又離開新的出發點向前爬了。依此類推,每當他到達烏龜剛纔所在地地方,烏龜就又已經跑到前面去了。所以,烏龜老是跑在前面,阿基里斯怎麼能追上烏龜呢?
相似的悖論,芝諾還有好幾個。
憑藉常識,咱們固然不會相信芝諾的結論;憑藉咱們的數學知識,咱們也不難破解芝諾的悖論。但在當時,這些悖論詰難了時間和空間是否無限可分、運動是否連續的問題。這說明,希臘人已經看到「無窮小」與「很小」的矛盾,但他們沒法解決這些矛盾。實事上,希臘人在證實中早就排除了無窮小,就連亞里士多德也宣稱「實無限」是不合理的。
從那之後,無窮小的問題一直沒有解決。
一直到了十七世紀,笛卡爾和費馬分別證實幾何能夠還原爲代數,人們開始使用新的解析幾何方法。可是不少工做涉及到極限過程,如求曲線長度、曲線所包圍的面積等。另外,求速度、求切線斜率,以及求極大、極小值等也成了新的問題。十七世紀晚期,牛頓和萊布尼茨發明的微積分紅爲解決此類問題的一種好方法。因爲運算的完整性和應用範圍的普遍性,微積分造成了一門學科
然而,微積分的理論基礎並不牢固,其問題與芝諾的悖論相似——無窮小量到底是不是零。就連微積分的發明者們(牛頓和萊布尼茨)也都沒有給出一個確切的回答。數學界甚至哲學界對此開展長達一個半世紀的爭論,第二次數學危機終於被引爆。一直到十九世紀二十年代,一些數學家纔開始比較關注於微積分的嚴格基礎,此次危機纔算基本解決。
固然,本文的重點不是要討論這場危機的前因後果。講這段故事是爲了說明:此次危機過程當中產生了微積分方法;在發明微積分的過程當中,萊布尼茨使用了一種很高明的符號;而這些符號的妙處,促使萊布尼茨作出了更加宏偉的設想。
4. 萊布尼茨夢想創建人類的思想和知識的符號系統,並製造出能夠操做這些符號的工具。
萊布尼茨(Gottfried Wilhelm Leibniz,1646年~1716年)所生活的17世紀下半葉,歐洲科學技術迅猛發展,長度、面積、速度、斜率等問題的計算需求也在促令人們思考新的方法。萊布尼茨發現,計算面積和變化率的這兩個問題頗有表明性,許多不一樣種類的問題均可以還原成這兩類問題。萊布尼茨意識到,這兩類問題的數學計算實際上彼此相反,在很大程度上就像加法和減法,它們分別被稱做積分和微分。萊布尼茨還爲這些運算髮展出了一套恰當的符號系統。
當時,牛頓也在從事相同的工做。因而,兩人的追隨者們互相指控對方剽竊。如今咱們廣泛認爲,微積分是牛頓和萊布尼茨各自徹底獨立發明的。但在當時,雙方仍是展開了激勵的口誅筆伐。
對本文而言,萊布尼茨的符號的優越性是最重要的。好比置換法是微積分中的一個關鍵技巧,在牛頓的符號中使用就十分複雜,但在萊布尼茨的符號中,這種方法簡直是必然的。甚至有人指出,因爲盲目地追隨牛頓,英國對微積分的發展遠遠落後於歐洲大陸。萊布尼茨的符號令人不用過多思考就能夠進行復雜的運算,彷彿是那些符號本身在工做。
萊布尼茨發明這樣的符號並不偶然。他從小就學習亞里士多德的邏輯系統,對亞里士多德把概念分紅固定的「範疇」着了迷。他想尋求一張特殊的字母表,其元素表示的不是聲音,而是概念。有了這樣一個符號系統,他就能夠發展出一門語言,讓人只憑符號演算,就能夠肯定用這種語言寫成的哪些句子爲真,以及它們之間存在什麼樣的邏輯關係。微積分符號,就是一個例子,它不像一個語音符號那樣表明着毫無心義的聲音,而是表明着概念。
萊布尼茨認爲,除了他的微積分符號之外,算術和代數中所使用的特殊符號、化學和天文學中使用的符號都是這樣的範例。這說明一個真正的符號系統是多麼重要!萊布尼茨把這樣一個符號系統稱做一種文字,每個符號都以一種天然而恰當的方式表示出某個肯定的觀念。萊布尼茨認爲人類的整個知識領域能夠實施。
萊布尼茨開始了他的宏偉設想,他認爲咱們須要一種廣泛文字,即包含了人類所有思想領域的符號系統。他但願對廣泛的人工數學語言和演算規則進行一種百科全書式的彙編,任何知識均可以用這種數學語言表達出來,而演算規則將提示這些命題之間的邏輯關係。最後,他還夢想可以製造出這些演算機器,從而使心靈從創造性的思考中解放出來。他說:
「讓優秀的人像奴隸同樣把大量時間浪費在計算工做上是不值得的,若是使用機器,這些任務就能夠被安全地交給任何人去作。」
萊布尼茨本人雖然對廣泛文字傾注了大量的熱情和信心,但他卻沒有完成任何具體的工做,由於他的思想領先於他處的時代太多。可是,萊布尼茨留下了他的夢想——人類思想的真正的符號系統以及能夠操做這些符號的恰當工具的宏偉夢想,它指明瞭後來機器智能的一種技術方向,併成爲衡量後續發展的一根準繩。
5. 布爾證實了邏輯演繹能夠成爲數學的一個分支。
布爾(George Boole,1815年~1864年)出生在一個貧困家庭,自幼聰明過人,家裏卻沒錢讓他接受正規的教育。19歲的時候,布爾決定在老家創辦本身的學校,這是他們全家惟一的經濟來源。在這個時期,布爾開始研究代數方法,與一些頂級的數學家創建了聯繫,本身也成長爲一名數學家。
布爾逐漸認識到,在邏輯推理中,一些詞的重要性在於它所描述的全部個體的 「類」或「羣體」。好比,亞里士多德的邏輯中就有這樣一些句子:
1)全部的植物都是有生命的。
2)有些人說英語。
在這些句子中,「植物」、「有生命」、「人」就屬於類。布爾認識到,這種類型的推理能夠用一種關於這些類的代數來表示。因而,布爾開始用字母表示類,就像之前用字母表示數同樣。好比,用y表示「白的東西」,用x表示「綿羊」,則yx表示「白綿羊」;相似地,若是z表示「有角的東西」,則zyx表示「有角的白綿羊」。
布爾發現,這種類的運算相似於乘法運算。他還想,既然x表示綿羊的類,那xx表示什麼呢?它表示的是既是綿羊,又是綿羊的類,那固然仍是綿羊的類,因此xx=x。
布爾進一步思考:在普通代數中,何時方程xx=x成立呢?答案很顯然,當且僅當x爲0或1的時候。因而布爾得出了一個原理:若是隻限於0和1兩個值,那麼邏輯代數就成了普通代數。
爲了說明這一點,還必須對0和1當成符號,而且解釋成類。0和1在普通代數中的運算提供了線索,0x=0,1x=1。對於類而言,0能夠解釋爲沒有任何東西屬於它的類,1表示所要說的全體。布爾還對 和-作出解釋。x y表示或者在屬於x或者屬於y的類,x-y表示屬於x但不屬於y的類。這樣,邏輯代數也能夠處理加減法和乘法了。
咱們經過例子解釋一下布爾的邏輯代數如何工做。好比xx=x,變換一下,就獲得x(1-x)=0。這是一個讓布爾激動不已的方程,由於它用語言來解釋就是:沒有任何東西既屬於又不屬於一個給定的類x。換句話說,這個方程精確地表達了亞里士多德的矛盾律。
那麼三段論呢?仍是舉前文中舉過的例子:
1)若是全部B是A,
2)而且全部C是B,
3)那麼全部C是A。
第一個前提說B中的每個東西都是A,就等於說沒有東西屬於B卻不屬於A,也就是B(1-A)=0,或B=BA。同理,第二個前提能夠寫做C=CB。利用這些方程,咱們就獲得
C = CB = C(BA) = (CB)A = CA
這正是亞里士多德三段論但願獲得的結論。
布爾的邏輯體系不只包含了亞里士多德的邏輯,還遠遠超越了它。但這距離萊布尼茨表示出所有人類思想和知識的夢想仍然十分遙遠。例如這個句子:全部失敗的學生都是糊塗的或是懶惰的,布爾就不能區分學生的失敗究竟是由於糊塗,仍是懶惰。爲了區分這種狀況,咱們要請出弗雷格。
6. 弗雷格計劃在邏輯上構造數學,但遭到羅素的打擊,第三次數學危機爆發。
1879年,一本名叫《概念文字》的小冊子出版了,副標題是一種模仿算術語言構造的純思惟的形式語言。這本小冊子不厚,卻被譽爲也許是自古以來最重要的一部邏輯學著做。這本小冊子的做者就是弗雷格(Friedrich Ludwig Gottlob Frege,1848年~1925年)。
布爾證實了邏輯演繹是代數的一個分支,而弗雷格的計劃是以邏輯爲基礎把代數構造出來。
爲了實現他的邏輯系統,弗雷格必須引入本身的特殊符號來表示邏輯關係。弗雷格發現,有些命題是表示命題之間的關係的,而命題的關係也能夠用於分析命題的結構,這些關係便充當了他的邏輯基礎。弗雷格發現了「若是……那麼…….」、「且」、「非」等關係,他還定義了表示「全部」的全稱量詞和表示「存在」的存在量詞。這些關係用符號表示就是
¬ 非
∧ 且
∨ 或
⊃ 若是……那麼……
∀ 任何
∃ 存在
弗雷格引入了全稱量詞和存在量詞,還把若是、而且 、或等邏輯關係形式化,這樣就擴充了形式邏輯的功能。對於布爾所不能區分的那句命題「全部失敗的學生都是糊塗的或是懶惰的」,弗雷格就能夠表示爲:
(∀x)(F(x) ⊃S(x)∨L(x))
其中F(x)表示一個失敗的學生,S(x)表示x是糊塗的,L(x)表示x是懶惰的。
弗雷格不只是對邏輯進行一種數學處理,他實際上創建了一種新的語言。他以萊布尼茨的廣泛語言思想爲導向,只要恰當地選擇符號,語言就能夠得到力量。
布爾的邏輯是使用普通數學方法進行發展的另外一數學分支,其中就包括使用邏輯推理。但在弗雷格看來,用邏輯來發展邏輯有些循環,這是不可接受的。弗雷格的目標是代表一切數學如何可能被創建在邏輯的基礎之上,他必須找出不用邏輯來發展邏輯的方法。
弗雷格的方法就是用精確的語法或句法規則把概念文字發展成一種人工語言。這就使得把邏輯推理表示爲機械演算成爲可能,這些規則僅僅與符號排列的形式有關。這是第一次用精確的句法構造出形式化的語言。從這個觀點看,概念文字是咱們今天全部計算機程序設計語言的前身。
爲了證實一切數學均可以被當作邏輯的一個分支,弗雷格首先但願爲天然數提出一種純粹的邏輯理論。因而弗雷格但願使用邏輯術語來定義天然數,而後再用邏輯推導它們的性質。弗雷格的方法是使用集合的集合來定義天然數。好比,3這個數字是全部元素數爲3的集合的集合。弗雷格還寫了兩卷著做來闡述它如何利用邏輯發展出天然數。
弗雷格比布爾前進了一大步,他創建了第一個精密的數理邏輯體系,至少在原則上包含了數學家們一般使用的所有推理。可與萊布尼茨的夢想相比,弗雷格的工做仍然有兩個嚴重差距:首先,萊布尼茨的符號不只能進行邏輯演繹,還包含了科學與哲學的一切真理;其次,萊布尼茨設想的是成爲計算工具的語言,經過對符號直接操做而使邏輯推理自動進行。弗雷格的規則沒有爲斷定某個結論是否能夠從給定的前提出推導出來提供步驟。從弗雷格的前提出發,咱們能夠嘗試運行他的規則,以得到但願的結論。但若是嘗試失敗了,就沒有辦法知道是由於推理不夠完全,仍是由於結論根本就沒法得出。
弗雷格的概念文字徹底包含了普通數學中所用到的邏輯,因此用數學方法來研究數學也就成爲可能有了。可否找到一種計算方法,說明在弗雷格的邏輯中的一條推理是不是正確的呢?這種探究在持續了不少年以後,終於證實了:沒有這樣的通常方法。然而在證實過程當中,圖靈意外發現,他原則上能夠設計一種通用機器,它可以執行任何可能的計算。
在弗雷格所處的年代,他還看不了這麼遠,他也不會以爲那些會是本身工做的不足。然而弗雷格的災難仍是很快到來了。正當他利用邏輯發展出天然數的兩卷著做交付出版之際,他收到了一封來信。這封信中有一個悖論,指出他的工做是不一致的。弗雷格立刻意識到,他的邏輯系統能夠推導出矛盾。在數學中證實中若是陷入矛盾,只能說明該論證的前提是錯誤的。弗雷格放棄了畢生的努力,再也沒有從這個打擊中恢復過來。
信是羅素寫來的。他提出了一種自吞的集合。如何一個集合是它自身的一個成員,那麼就把這個集合稱做異常的;不然就把它稱做正常的。那麼,全部正常集合所組成的集合是正常的仍是異常的?答案應該非此即彼,但若是你說它是正常的,那麼它就是異常的;若是你說它是異常的,那麼它就是正常的。這是一個悖論。
羅素之因此能提出了這個悖論,使用的是對角線法。對角線法是一個神奇的方法,在本文中還會反覆出現,好幾我的都用它作出了顛覆性的工做。咱們先來介紹一下對角線法的發明人——康托爾。
7. 康托爾在無窮中探索,發明了對角線法。
無限是什麼?這個問題一直困擾着數學家、哲學家和神學家。人們一般認爲天然數的序列是經過一個過程產生出來的,即從1開始接二連三地加1。這樣一個不斷超越任何有限界限的過程,被亞里士多德稱做「潛無限」。亞里士多德不肯意認爲這個過程的終點是合理的,這將成爲一種完成的無限,或「實無限」。 亞里士多德的觀點極大地影響了當時和後來的哲學家,也難怪芝諾的悖論會難倒不少人。萊布尼茨卻贊同實無限,他認爲他的萊布尼茨級數就是一種實無限。
康托爾(Cantor,Georg Ferdinand Ludwig Philipp,1845年-1918年)努力創立一種關於無限的數學理論,這種理論認爲無限的大小是有區別的。康托爾開始研究在兩個不一樣的無限集之間的一一對應關係,他發現並非全部的無限集均可以與天然數創建一一對應,有理數集是能夠的,實數集就不行。他假定每個集合有惟一一個基數,若是兩個集合能夠一一對應起來,它們的基數就相等。無限集的基數稱爲超限數。
對角線法是在集合與其成員之間創建一一對應的方法。將元素做爲集合的標籤,利用對角線法,就能夠獲得一個新的集合,這個集合與那些已經貼了標籤的集合都不相同。利用這種方法,能夠證實一切天然數集所組成的集合的基數要大於天然數集的基數。人們後來證實這個基數就是實數集的基數。康托爾深信,天然數集的基數和實數集的基數之間不存在別的基數,這稱做連續統假設。但遺憾的是,康托爾雖然耗費了不少心血,但並無解決這個問題,他既沒有證實這個假設成立,也沒有證實這個假設不成立。
康托爾也面臨着不少反對意見,他們主要反對這樣一種觀念,即生活在有限世界的人類居然指望可以對無限作出有意義的斷言。康托爾超限數也引來一些麻煩,好比把康托爾的超限數都收在一個集合中,由全部基數組成的集合的基數是多少呢?它必須比全部的基數大,但這又怎麼可能一個基數比全部基數都大呢?
就在康托爾意識到這個悖論的時候,其餘數學家也發現了這樣或那樣的問題。而後,羅素登場,給了最爲致命的一擊。羅素考慮了這樣一個問題:是否在在一個全部集合的集合?若是在在這樣一個集合,對它應用對角線法會有什麼效果?固然,咱們會獲得一個不一樣於全部集合的集合。正是在考慮這種狀況時,羅素髮現了他那個關於由一切不是自身成員所組成集合的悖論。
利用康托爾的對角線法,羅素打擊了弗雷格的工做。可巧的是,羅素的工做也被人打擊了,人家利用的也是康托爾的對角線法。
8. 羅素努力消除本身提出的悖論,與懷特海編寫數學原理鉅著。
羅素(Bertrand Russell,1872年~1970年)一輩子成果顯赫。他有一句名言:「三種簡單而無比強烈的激情支配了個人一輩子:對愛的渴望、對知識的渴求、以及對人類苦難的難以遏制的憐憫。」 他是這樣說的,也是這樣作的。他渴望愛,一輩子四次結婚七次戀愛;他渴求知識,著書71部涉及哲學、邏輯學、數學、倫理學衆多領域,從沒寫太小說和詩歌也得到了諾貝爾文學獎;他憐憫大衆,普遍干預政治事件,曾兩度入獄。在羅素的諸多成果中,最出色的仍是邏輯學。
羅素公佈其集合悖論以後,許多數學家都對康托爾的超限數以及基礎研究的整個方向產生了史無前例的疑慮。弗雷格遭受這一打擊後,直接放棄了畢生的工做。但羅素沒有退卻,他仍然但願發展出一套符號邏輯體系,並利用這套體系實現弗雷格把算術還原爲純邏輯的計劃。
羅素的工做遭到一些同行的抨擊。他們嘲笑說:「很容易理解,要證實一個定理,知道它是什麼意思並非必要的,甚至也不是有用的。咱們能夠相像這樣一臺機器,咱們從一端輸入公理,從另外一端就能夠輸出定理,就像芝加哥那傳說中的機器同樣,豬活着進去,出來的就是火腿和香腸。數學家和這些機器都不須要知道本身正在作什麼。」 但他們沒有注意到,嚴肅地看待羅素的工做,將有可能把數學還原爲純粹計算,這正是萊布尼茨的夢想。
羅素悖論的禍根在於自指,也就是自已包含本身的 「怪圈」。若是要消除悖論,必需要消除怪圈。羅素與他的老師懷特海合著了三卷本鉅著《數學原理》,試圖從邏輯學、集合論和數論中驅除怪圈。《數學原理》精心設計了分層的結構,即有一個類型最低的集合,只能包含對象而不能包含集合作元素;高一層類型的集合,只能包含對象或最低類型的集合。這種分層結構雖然使用起來不方便,但卻避免了悖論。《數學原理》是一個里程碑式的成就,它一勞永逸地證實了,一個邏輯系統中對數學進行徹底的形式化是可行的,它正體現了那臺傳說中的芝加哥機器的精神。
弗雷格未完成的計劃看起來就要成功了。然而,就像羅素打擊弗雷格同樣,羅素也被人打擊了。一個年輕人的文章揭示了《數學原理》的公理系統中有不可彌補的漏洞。在講述這段故事以前,咱們必須先講一下大數學家希爾伯特,他試圖用另外一種方法挽救弗雷格的計劃,而他也被那個年輕人一塊兒打擊了。
9. 希爾伯特研究元數學,營救弗雷格的計劃。
羅素與懷特海著做《數學原理》一書的目的雖然是從邏輯學中推導出全部的數學,並且必定不能矛盾,可是沒有一我的確定,書中給出的方法是否自身是一致的。按照羅素和懷特海的方法,難道就永遠不會得出矛盾的結果嗎?這個問題也一直困擾着希爾伯特(David Hilbert,1862年~1943年)。
早在1898年,希爾伯特在上幾何課的時候,他就強調這門學科的本性是抽象的。他提出一套幾何學公理,從公理中經過純邏輯就推導出全部的定理,而沒必要必定要從圖形中看到。希爾伯特證實了他的公理是一致的,也就是說從公理中導不出矛盾。這樣,希爾伯特把歐幾里得幾何學的一致性歸結爲算術的一致性,而算術的一致性還沒有解決。
1900年,面向一個新的世紀,希爾伯特提出了23個用當時的方法很難解決的問題。這23個問題涵蓋了純粹數學和應用數學大量主題,成爲20世紀一代又一代的數學家殫精竭慮力圖攻克的難關。希爾伯特本人卻十分樂觀,他在演講中說:「在咱們中間,經常聽到這樣的呼聲:這裏有一個數學問題,去找出它的答案!你能經過純思惟找到它,由於在數學中沒有不可知。」 希爾伯特問題有些現已獲得圓滿解決,有些至今仍未解決。這足以體現希爾伯特對數學貢獻的廣度與深遠。
在希爾伯特的23個問題中,第二個問題就是爲實數的算術創建公理的一致性。之前對一致性的證實都是關於相對一致性的證實,也就是說它們都是把某一個公理集合的一致性歸結到另外一個集合的一致性。但希爾伯特地識到,對於算術,他已經抵達了邏輯的根底,必需要有新的方法。
從19世紀20年起,希爾伯特開始嚴肅對待他提出的一致性問題。他從《數學原理》的邏輯系統開始,想用純邏輯術語來定義數。雖然希爾伯特認可符號邏輯是相當重要的,但還他是快就放棄了這個目標,由於這種一致性證實想要確保的方法偏偏就是它所依賴的方法。這多少有點循環論證,你如何能用你的推理方法來證實你所用的這一套推理方法是正確的呢?這不是要你提着本身的鞋帶把本身舉起來嗎?
希爾伯特的新綱領將經過一種純形式的符號語言發展出數學與邏輯,這種語言能夠從內部和外部來看。從內部看,它就是數學,每一步演繹均可以徹底弄清楚。從外部看,它僅僅是許多公式和符號操做,它們能夠在不考慮意義的狀況下進行演算。這時,一致性證實的任務就是證實,從這種語言中導出的任何兩個公式都不會矛盾。
希爾伯特的想法是一種全新的數學,他稱爲元數學。一致性證實將在元數學裏完成。元數學方法卻要嚴格限於那些被希爾伯特稱爲「有限性」的無可爭議的方法。希爾伯特但願用這種方法,讓人們提着鞋帶把本身部分舉起來。
希爾伯特的新方法頗有但願會取得成功。當1930年希爾伯特退休的時候,他以天然科學與邏輯爲主題發表演講,強調了數學在科學中以及邏輯在數學中所扮演的極端重要的角色。帶着他一向的樂觀主義精神,他結尾道:「咱們必須知道,咱們將會知道。」
就在希爾伯特這個演講的前幾天,一位年輕人也在同一個地方作了一個報告,這標誌着希爾伯特元數學計劃的落空,也標誌着羅素數學原理大廈的動搖。這個年輕人就是哥德爾,一位被馮·諾伊曼稱做「里程碑」的人。
10. 哥德爾發現一致性是不可證實的,你們都消停了吧。
在希爾伯特教授邏輯課的時候,他所採用的邏輯演繹的基本規則來自弗雷格的《概念文字》和羅素與懷特海的《數學原理》。希爾伯特提出了這些規則之間是否是有間隙的問題。也就是說,演繹推理應該是正確的,但規則自己可能不足以保證從前提能得出結論。他相信不存在這樣的間隙,但要求對規則自己是完備的進行證實。換句話說,若是一個推理具備以下屬性:不論對公式中的字母作何種解釋,只要其前提是真陳述,則它的結論就是真的,那麼咱們就可用弗雷格-羅素-希爾伯特的規則從前提推導出結論。完成這項證實工做的,正是哥德爾(Kurt Gödel,1906年~1978年)。
哥德爾對完備性的證實使用了非有限性的方法,這實際上突破了希爾伯特對元數學中只能使用有限性方法的規定。哥德爾發現,數學研究中施加有限性方法能夠確保數學基礎的穩固,但數理邏輯的工做中沒有必要加這樣的限制,它不是這項工做的一部分。
希爾伯特所提出的23個問題中,第二個問題是對實數算術的一致性進行證實。當時,沒有人知道這樣一個證實會是什麼樣子,特別是不知道它如何才能擺脫循環論證。希爾伯特在20年代介紹了元數學綱領:一致性有待證實的公理將包含在一個形式邏輯系統內,而證實僅僅是有限數目的符號的一種排列而已。勝利彷佛遙遙在望。
哥德爾從外部而不是從內部考察一個形式邏輯系統的意思。羅素和懷特海已經代表,全部的普通數學均可以在這樣一個形式系統內部發展出來。希爾伯特在元數學中試圖用嚴格受限的數學方法從外部去研究這樣的系統。那麼,爲何元數學自身不能在一個形式邏輯系統內部發展出來呢?從外部看,這些系統包含着符號串之間的關係。從內部看,這些系統可以表達關於不一樣數學對象的命題。
哥德爾發現,天然數的命題是關於天然數的性質的,天然數不是命題,也不是它們的性質。一個天然數命題不是關於命題的,它僅僅是一個命題。這是問題所在。然而,只要能用天然數來表明命題,那一個天然數命題就能夠是關於一個天然數命題了。換句話說,編碼的概念是哥德爾構造的核心部分。在哥德爾編碼中,數是用來表明符號和符號序列的。每個天然數命題做爲一個特定的符號序列,就得到了一個可查詢的哥德爾數。這種編碼方式可使人們從兩種層次來理解命題:把它理解爲命題,或把它理解爲關於命題的命題。經過這樣的編碼,外部就被帶到了內部。
在哥德爾的證實中,最關鍵的一步在於他證實了:一個天然數做爲中可證命題的一個代碼,這一性質自己能夠在數學原理的公理系統PM中表示出來。根據這一事實,哥德爾能夠在PM中構造出一個命題A,該命題能夠斷言某一命題B在PM中是不可證的。哥德爾用康托爾的對角線法,讓被斷言的不可證實的命題和作出這一斷言的命題成爲同一個命題。換句話說,哥德爾發現了一個命題U,它有以下性質
1)U說某個特殊的命題在PM中不可證。
2)那個特殊的命題就是U自己
3)所以,U說U在PM中不可證。
假如PM是一致的,因此U。而U是不可證的,因此PM的一致性在PM中不可證。希爾伯特但願使用PM的一個有限的子集的有限性方法來證實PM的一致性,但哥德爾證實了,即便就PM的所有能力,也不足以證實其自身的一致性。
哥德爾不是指出《數學原理》的一個的不足,由於假設是那樣的話,後人還會去進一步完善,哥德爾證實了那是不可能的。它的證實還適用於任何一個企圖達到羅素爲本身所設的那個目標的公理系統。對於各類系統,都有一個基本方法變出他的這一套戲法。哥德爾展現了,不管什麼公理系統,可證實性老是比真理性弱。
哥德爾的證實是在1931年柯尼斯堡上發表的。那一週柯尼斯堡的主要活動並非哥德爾的報告,而是希爾伯特的演講。希爾伯特說:「咱們必須知道,咱們將會知道」。希爾伯特相信全部的數學問題都能獲得解答,但他顯然不知道就在同一個地方就在幾天前哥德爾所作的報告,已經宣稱了他的信念是徒勞的。
與哥德爾一同參加會議的還有馮·諾依曼。馮·諾依曼講的主題原本是希爾伯特綱領,可聽完哥德爾的報告後,馮·諾依曼馬上意識到希爾伯特綱領是不可能成功的。今後,馮·諾依曼放棄了邏輯學的研究。而當馮·諾依曼再次與邏輯打交道的時候,已是十多年以後作電子計算機了。這期間,他受到了圖靈的啓發。
11. 圖靈在證實希爾伯特斷定問題時順便提出了圖靈機,這成爲後來計算機的基本理論模型。
萊布尼茨曾經夢想把人的理性還原爲計算,而且有強大的機器可以執行這些計算。弗雷格給出了一個彷佛可以解釋人的一切演繹推理的規則系統。哥德爾證實了弗雷格的規則是完備的。希爾伯特也試圖但願找到清楚明白的程序,只要用符號系統寫出的某些前提和結論給定,那麼經過這些程序老是能夠斷定弗雷格的規則是否足夠保證結論可以從那些前提中導出。尋找這些程序的任務後來被稱爲希爾伯特的斷定問題。
固然,用於解決特定問題的程序在很大程度上就是由這些被稱爲算法的計算程序構成的。咱們先是學習數的加法、減乘除算法,而後又學習對代數表達式進行操做和解方程的算法。若是咱們又學習了微積分,那麼咱們就學會了使用萊布尼茨最先爲這門學科發展出來的算法。然而,希爾伯特但願找到一種範圍極廣的算法,從原則上講,解決他的斷定問題的算法,將把人的一切推理都還原爲冷冰冰的數學計算,它在很在程度上將實現萊布尼茨的夢想。
可人們很難相信有這樣的算法 。有數學家說:「固然不存在這樣的算法,這是很是幸運的,由於它若是存在,那麼咱們就能夠用一套機械的規則來解決一切數學問題,咱們數學家的活動也就將壽終正寢了。」在哥德爾的工做發表以後,人們更難相信這種算法是存在的。而圖靈開始思考,如何證實這樣的算法是不存在的。
圖靈知道,一種算法每每是經過一系列規則指定的。一我的能夠以一種精確的機械方式遵循這些規則,就像按菜譜作飯同樣。但圖靈關注的焦點不是這些規則,而是人在執行這些規則時實際所作的事情。圖靈發現,丟掉非本質的細節,人能夠被侷限在少數幾種極爲簡單的基本操做上,而不會改變最終的計算結果。接下來,圖靈要說明的是這我的能夠被一個可以執行這些基本操做的機器所替代。接下來只要證實僅僅執行這些操做的機器不可能斷定一個給定的結論是否能夠用弗雷格的規則從給定的前提中導出,他就能下結論:斷定問題的算法 是不存在的。
爲了說明人的操做能夠被機器所替代,圖靈開始了他那著名的紙帶遊戲。他發現計算過程有如下特色:
1)計算經過在一條劃劃分爲方格的紙帶上寫下符號來進行
2)執行計算的人在每一步都只注意其中一個方格中的符號
3)她(20世紀30年代作計算的基本都是女工 )的每一步將僅僅取決於這個符號和她的心靈狀態
4)她的下一步是這樣的:當前注意的方格里寫下一個符號,而後把注意力轉向到左邊或右邊的相鄰方格
如今就很容易看出,紙帶能夠在機器中來回移動,計算者的心靈狀態能夠用機器內部的不一樣佈局來表示。根據其內部佈局和當前注視的符號,機器將在紙帶上寫下一個符號,而後左移或右移。計處者的操做正好能夠用一個機器來替代。這個抽象的機器就是著名的圖靈機。
接下來圖靈就要證實斷定算法是不存在的。基於圖靈對計算概念的分析,經過某種算法程序可計算的任何東西均可以經過一臺機器來計算。所以,若是咱們能夠證實某項任務沒法用圖靈機來完成,咱們就能夠說,沒有任何算法程序能夠完成這項任務。有些輸入會使有些圖靈機停下來,而另外一些則不會。若是圖靈能找到圖靈機所不能解決的問題,就能夠推出斷定問題是不可解的。
圖靈固然找到了,幫助他的正是康托爾的對角線法。利用對角線法,咱們能夠構造出一個與圖靈機的任何停機集合都不一樣的天然數集合,咱們把它稱爲D。方法是這樣的:D將徹底由圖靈機的碼數組成。對於每一臺圖靈機來講,它的碼數屬於D,當且僅當它不屬於那臺機器的停機集合。這樣,D不是任何圖靈機的停機集合。
集合D的定義使它與任何圖靈機的停機集合都不一樣,但這與斷定問題有什麼關係?希爾伯特認爲,只要有一個數學問題能夠證實在算法上是不可解的,那麼斷定問題就是不可解的。集合D將爲咱們提供了這樣一個例子「找到一種算法,斷定一個給定的天然數是否屬於集合D。」這就是一個不可解的例子。
上述證實中,圖靈機是一個抽象模型,它只是這個證實的一個副產品。
後來,圖靈證實了許多複雜的數學計算均可在圖靈機上完成。不過,他在檢驗本身的工做的有效性方面所提出的最爲大膽、影響最爲深遠的思想倒是通用機。圖靈的通用機是一個概念裝置,它僅憑本身就能夠執行任何計算任務。它證實了一臺圖靈機單憑自身就能夠完成任何圖靈機可能作到的任何事情。圖靈的分析爲理解古代的計算技術提供了一種獨到而深入的角度,計算的概念不止算術和代數。同時,這種眼光預見到原則上可以計算的何可計算的東西的通用機。
圖靈設想,若是一臺通用計算機能夠被製造出來,那麼它就能夠玩象象棋這樣的遊戲,能夠像一個孩子那樣學習不少東西,而且最終展現出智能行爲。但咱們能造出這樣一種機器嗎?固然能夠!你的電腦、手機、平板電腦都是這樣機器,這樣的機器還在在於你的汽車、家電裏。事實上,如今這種機器已經無處不在了。
圖靈還提出了著名的圖靈測試——一我的在不接觸對方的狀況下,經過一種特殊的方式,和對方進行一系列的問答,若是在至關長時間內,他沒法根據這些問題判斷對方是人仍是計算機,那麼,就能夠認爲這個計算機具備同人至關的智力,即這臺計算機是智能的。
自此「人機大戰」成了人工智能的試金石,一幕幕地上演。
12. 結束語
機器之因此體現出智能,是由於有一串嚴格的規則指示它執行各類操做。這是兩千多年來一代又一代的哲學家、數學家和邏輯學家對人類的思惟進行思惟的結果。可能只有圖靈確切地相信他的工做能夠應用於咱們今天的計算機,其餘人沒有一個能想到本身的工做能夠被這樣應用。哥德爾不會想到本身的定理能夠在機器上獲得應用,希爾伯特和羅素的工做只是但願確保數學基礎,康托爾不會想到本身的對角線法顛覆了這麼多理論體系,弗雷格也不會想到他的規則能夠與計算機程序如此和諧,布爾不可能想到他的邏輯被用來設計複雜電路,萊布尼茨看得比較遠,可是他確定想不到他的夢想將以這樣的方式實現。而更遠的古希臘人,他們也不可能想到走向公理體系對後人會產生如此巨大的影響。
咱們今天,站在前人的貢獻上,卻沒能走得更遠。咱們只是把人類的智能加以機械化,把機器作得愈來愈快,讓機器簡單而粗暴地體現出愈來愈高的智能。
參考文獻
馬丁·戴維思《邏輯的引擎》
侯世達《集異璧》
陳波《思惟魔方》