日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

离散数学图灵机文章

發(fā)布時(shí)間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 离散数学图灵机文章 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

圖靈機(jī)與計(jì)算問(wèn)題(轉(zhuǎn)載)

2013年11月27日?? 綜合?? 共 21646字 ? 字號(hào)?小?中?大???評(píng)論關(guān)閉

張江(email:?jakezj@163.com)

自從20世紀(jì)30年代以來(lái),圖靈機(jī)、計(jì)算這些重要的概念在科學(xué)的天空中就一直閃爍著無(wú)限的光彩。尤其是近年來(lái)量子計(jì)算機(jī)、生物計(jì)算機(jī)、DNA計(jì)算等領(lǐng)域的創(chuàng)新工作引起了世人的廣泛關(guān)注。我們不禁問(wèn)這樣的問(wèn)題,國(guó)外究竟為什么能發(fā)明出這些各式各樣的計(jì)算機(jī)呢?這些意味著什么呢?其實(shí)這一切的源頭都來(lái)源于計(jì)算理論。國(guó)內(nèi)在介紹計(jì)算理論方面的教材雖然有不少,但一般都比較深?yuàn)W難懂。所以我覺(jué)得很有必要對(duì)這些內(nèi)容進(jìn)行科普。于是嘗試寫下這么一篇文章,希望我的文章能夠讓你更加清楚、透徹的理解圖靈機(jī)、計(jì)算等等一些基本而重要的概念,并洞悉到這些概念的本質(zhì)和深遠(yuǎn)涵義。?
本篇文章大體上可以分成四部分:首先給大家講一講關(guān)于圖靈、哥德?tīng)柕瓤茖W(xué)家的故事;然后正式引入圖靈機(jī)的概念,為了對(duì)這個(gè)概念有比較直觀的理解,我采用了一個(gè)人工生命:“小蟲”的比喻來(lái)敘述。接下來(lái),文章介紹了跟圖靈機(jī)有關(guān)的概念:什么是模擬,什么是“萬(wàn)能計(jì)算機(jī)”等等;最后是關(guān)于圖靈停機(jī)問(wèn)題的探討,我個(gè)人認(rèn)為很有可能未來(lái)對(duì)科學(xué)的重大突破都來(lái)源于對(duì)圖靈停機(jī)問(wèn)題的深入理解。在行文過(guò)程中,我除了用自己的方式介紹一些現(xiàn)有的基本概念之外(為了盡量表達(dá)得清楚明白,我不得不放棄理論論證的嚴(yán)格性),還探討了很多我認(rèn)為別人沒(méi)有探討的問(wèn)題,這些問(wèn)題多是我自己的思考結(jié)果,而它們沒(méi)有經(jīng)過(guò)科學(xué)的驗(yàn)證。在這部分內(nèi)容上我都標(biāo)上了*號(hào),希望你能有選擇的看待這些問(wèn)題和觀點(diǎn)。?
一、故事?
任何科學(xué)思想、科學(xué)概念的誕生都有它的背景,在背景中往往有很多迷人的故事。

計(jì)算理論可以追溯到1900年,當(dāng)時(shí)著名的大數(shù)學(xué)家希爾伯特在世紀(jì)之交的數(shù)學(xué)家大會(huì)上給國(guó)際數(shù)學(xué)界提出了著名的23個(gè)數(shù)學(xué)問(wèn)題。其中第十問(wèn)題是這樣的:存在不存在一種有限的、?機(jī)械的步驟能夠判斷“丟番圖方程”是否存在解?這里就提出來(lái)了有限的、機(jī)械的證明步驟的問(wèn)題,用今天的話說(shuō)就是算法。但在當(dāng)時(shí),人們還不知道“算法”是什么。實(shí)際上,當(dāng)時(shí)數(shù)學(xué)領(lǐng)域中已經(jīng)有很多問(wèn)題都是跟“算法”密切相關(guān)的,因而,科學(xué)的?“算法”?定義呼之欲出。之后到了30年代的時(shí)候,終于有兩個(gè)人分別提出了精確定義算法的方法,一個(gè)人是圖靈,一個(gè)人是丘奇。而其中圖靈提出來(lái)的圖靈機(jī)模型直觀形象,于是很快得到了大家的普遍接受。??不知道你是否聽(tīng)說(shuō)過(guò)圖靈這個(gè)名字。可能有些人知道牛頓,知道愛(ài)因斯坦,甚至知道馮?諾依曼,但不知道圖靈。然而圖靈的貢獻(xiàn)絕對(duì)不亞于這些科學(xué)大師。圖靈最大的貢獻(xiàn)就是把?算法這樣一個(gè)基本的、深刻的概念用他的圖靈機(jī)模型講清楚了。正是因?yàn)閳D靈奠定的理論基?礎(chǔ),人們才有可能發(fā)明20世紀(jì)以來(lái)甚至是人類有史以來(lái)最偉大的發(fā)明:計(jì)算機(jī)。因此人們?稱圖靈為:計(jì)算機(jī)理論之父。??圖靈生活的年代經(jīng)歷了第二次世界大戰(zhàn)。在二戰(zhàn)期間他曾經(jīng)為英國(guó)政府效力成功破譯了德國(guó)的密碼,因而為英國(guó)做出了突出貢獻(xiàn)。其實(shí)也正是因?yàn)槎?zhàn),英國(guó)政府才肯掏錢讓圖靈?制造最原始的計(jì)算機(jī),當(dāng)然這種計(jì)算機(jī)是專門用來(lái)破譯密碼用的,而不是我們現(xiàn)在用的通用?計(jì)算機(jī)。(有一部片子叫《密碼迷情》英文名是《enigma》就是根據(jù)圖靈當(dāng)時(shí)破譯德國(guó)密碼?的故事改編的,大家有興趣可以去找一找。)??圖靈這個(gè)人很古怪,只喜歡自己一個(gè)人悶頭研究,不喜歡與別人交流。并且據(jù)說(shuō)他還是?一個(gè)同性戀者。要知道在當(dāng)時(shí)的英國(guó),同性戀行為可是大逆不道的。最后,在他事業(yè)剛剛達(dá)到頂風(fēng)的時(shí)候,他自殺了。為了紀(jì)念這個(gè)偉大的學(xué)者,計(jì)算機(jī)界設(shè)立了最高榮譽(yù)獎(jiǎng):ACM?圖靈獎(jiǎng)。??

圖靈機(jī)的產(chǎn)生一方面奠定了現(xiàn)代數(shù)字計(jì)算機(jī)的基礎(chǔ)(要知道后來(lái)馮諾依曼就是根據(jù)圖靈?的設(shè)想才設(shè)計(jì)出第一臺(tái)計(jì)算機(jī)的)。另一方面,根據(jù)圖靈機(jī)這一基本簡(jiǎn)潔的概念,我們還可?以看到可計(jì)算的極限是什么。也就是說(shuō)實(shí)際上計(jì)算機(jī)的本領(lǐng)從原則上講是有限制的。請(qǐng)注意,這里說(shuō)到計(jì)算機(jī)的極限并不是說(shuō)它不能吃飯、掃地等硬件方面的極限,而是僅僅就從信息處?理這個(gè)角度,計(jì)算機(jī)也仍然存在著極限。這就是圖靈機(jī)的停機(jī)問(wèn)題。這個(gè)問(wèn)題在圖靈看來(lái)更?加重要,在他當(dāng)年的論文中,其實(shí)他是為了論證圖靈停機(jī)問(wèn)題才“捎帶手”提出了圖靈機(jī)模?型的。??
提到了圖靈停機(jī)問(wèn)題,我不禁又要提一提哥德?tīng)柖ɡ怼⒘_素悖論、康托爾的集合論等?等一系列大事兒。早在19世紀(jì)末的時(shí)候,康托爾為集合論做了奠基性的研究。要知道,數(shù)?學(xué)雖然五花八門,但是人們發(fā)現(xiàn),運(yùn)用集合這個(gè)概念可以概括所有的數(shù)學(xué),也就是說(shuō)集合是一切數(shù)學(xué)的基礎(chǔ)。因而如果為集合論奠定了公理化的基礎(chǔ),也就等于為數(shù)學(xué)奠定了基礎(chǔ)。康?托爾就是做了這方面的貢獻(xiàn)。另外,他為了證明實(shí)數(shù)的個(gè)數(shù)比自然數(shù)多這個(gè)結(jié)論,發(fā)明了一?種被稱為“對(duì)角線刪除”的證明方法。沒(méi)想到的是,這個(gè)方法影響非常深廣,直到后來(lái)的圖?靈停機(jī)問(wèn)題、哥德?tīng)柖ɡ砥鋵?shí)都是該方法的不同延伸。??

19世紀(jì)末的人們忙于為基于集合論的數(shù)學(xué)建立公理體系大廈。然而就當(dāng)這座大廈即將?完工的時(shí)候,一件可怕的事情發(fā)生了,羅素提出來(lái)的羅素悖論粉碎了數(shù)學(xué)家的夢(mèng)想。關(guān)于羅?素悖論的一個(gè)通俗化版本是:“村子里有一個(gè)理發(fā)師,他給自己定了一條規(guī)矩:‘不給那些所有給自己理發(fā)的人理發(fā)’。現(xiàn)在就要問(wèn),這個(gè)理發(fā)師該不該給自己理發(fā)?”。如果你嘗試回答?這個(gè)問(wèn)題就會(huì)發(fā)現(xiàn)奇怪的事情:這個(gè)問(wèn)題本身似乎是不可能的!正是因?yàn)檫@種奇怪的邏輯,?哲學(xué)家羅素才顛覆了整個(gè)數(shù)學(xué)大廈的基礎(chǔ)!??
因?yàn)榧险撝写嬖谥?#xff0c;所以整個(gè)數(shù)學(xué)體系存在著根本性的矛盾,然而具有諷刺意 味的是,數(shù)學(xué)一直以嚴(yán)格著稱!這種感覺(jué)就好像正當(dāng)你得意洋洋的時(shí)候有人突然閃了你一個(gè)?耳光!人們?cè)谝魂嚮艁y之后開(kāi)始逐漸穩(wěn)下陣角尋找避免羅素悖論產(chǎn)生的方法,并總希望通過(guò)細(xì)心的選擇數(shù)學(xué)公理能夠?qū)㈩愃屏_素悖論這樣的怪物一勞永逸的排除精確數(shù)學(xué)體系之外。這?就是后來(lái)希爾伯特提出來(lái)一套數(shù)學(xué)綱領(lǐng)的原因,他希望找到一套公理體系能夠排除悖論,并?挽救純粹而美麗無(wú)暇的數(shù)學(xué)。雖然希爾伯特沒(méi)能完成他的夢(mèng)想,但他堅(jiān)信夢(mèng)想是對(duì)的。??
然而,沒(méi)過(guò)多少年,一個(gè)名不見(jiàn)經(jīng)傳的年輕邏輯學(xué)家哥德?tīng)柼岢鰜?lái)的定理卻徹底粉碎?了希爾伯特的夢(mèng)。這就是后來(lái)著名的哥德?tīng)柖ɡ?#xff01;該定理大致上說(shuō):任何一個(gè)數(shù)學(xué)的公理化?體系都不是“完美的”。換個(gè)角度說(shuō),任何數(shù)學(xué)公理化系統(tǒng)都是死的,它總需要人為地從外界注入新的公理進(jìn)去才能讓它日趨完善,而它自己并不能完全自動(dòng)避免矛盾產(chǎn)生。哥德?tīng)柖?理可以說(shuō)整個(gè)扭轉(zhuǎn)了人們的世界觀。因?yàn)楸徽J(rèn)為最“完美”最“純粹”的數(shù)學(xué)都是不完全的,?那么純粹完美的世界也應(yīng)該不存在。哥德?tīng)柖ɡ磉€指出了“理性”和“分析”方法的極限。?這才是后來(lái)人們步入到了“綜合”時(shí)代的部分原因。更有趣的是,哥德?tīng)栍脕?lái)證明他定理的?方法正和康托爾證明實(shí)數(shù)比自然數(shù)多、圖靈停機(jī)問(wèn)題以及羅素悖論的方法是一脈相承的。??所有這些都是20世紀(jì)上半個(gè)世紀(jì)發(fā)生的大事,后來(lái)發(fā)生了什么?計(jì)算機(jī)出現(xiàn)了、信息?時(shí)代來(lái)臨了,似乎科學(xué)技術(shù)是萬(wàn)能的,它們總會(huì)改善我們的生活,滿足我們的欲望。漸漸的,?人們似乎淡忘了圖靈、歌德?tīng)枴⒖低袪柕鹊却髱焸兊乃枷肓恕H欢陙?lái)隨著復(fù)雜性科學(xué)的?研究,人們卻又有了重拾這些相對(duì)古老而根本問(wèn)題的跡象了!??
二、圖靈機(jī)??
下面言歸正傳,我們開(kāi)始講圖靈機(jī)的概念。我先把圖靈機(jī)的模型給你,雖然有些無(wú)趣,?不過(guò)請(qǐng)堅(jiān)持看下去,我會(huì)在下面運(yùn)用大家比較好理解的形式重新解釋的。在這里你僅僅需要?認(rèn)識(shí)它的輪廓。一個(gè)圖靈機(jī)是形如下面的一個(gè)裝置:??

??

這個(gè)裝置由下面幾個(gè)部分組成:一個(gè)無(wú)限長(zhǎng)的紙帶,一個(gè)讀寫頭。(中間那個(gè)大盒子),?內(nèi)部狀態(tài)(盒子上的方塊,比如A,B,E,H),另外,還有一個(gè)程序?qū)@個(gè)盒子進(jìn)行控制。這?個(gè)裝置就是根據(jù)程序的命令以及它的內(nèi)部狀態(tài)進(jìn)行磁帶的讀寫、移動(dòng)。??
它工作的時(shí)候是這樣的:從讀寫頭在紙帶上讀出一個(gè)方格的信息,并且根據(jù)它當(dāng)前的內(nèi)?部狀態(tài)開(kāi)始對(duì)程序進(jìn)行查表,然后得出一個(gè)輸出動(dòng)作,也就是是否往紙帶上寫信息,還是移?動(dòng)讀寫頭到下一個(gè)方格。程序也會(huì)告訴它下一時(shí)刻內(nèi)部狀態(tài)轉(zhuǎn)移到哪一個(gè)。??
具體的程序就是一個(gè)列表,也叫做規(guī)則表,是這樣的:??

?

因此,圖靈機(jī)只要根據(jù)每一時(shí)刻讀寫頭讀到的信息和當(dāng)前的內(nèi)部狀態(tài)進(jìn)行查表就可以確?定它下一時(shí)刻的內(nèi)部狀態(tài)和輸出動(dòng)作了。??
圖靈機(jī)就是這么簡(jiǎn)單!不可思議吧?而只要你變化它的程序(也就是上面的規(guī)則表),?那么它就可能為你做任何計(jì)算機(jī)能夠完成的工作。因此可以說(shuō),圖靈機(jī)就是一個(gè)最簡(jiǎn)單的計(jì)?算機(jī)模型!??
也許,你會(huì)覺(jué)得圖靈機(jī)模型太簡(jiǎn)單,怎么可能完成計(jì)算機(jī)的復(fù)雜任務(wù)呢?問(wèn)題的關(guān)鍵是?如何理解這個(gè)模型。??

三、如何理解圖靈機(jī)???

1、小蟲的比喻??

我們不妨考慮這樣一個(gè)問(wèn)題。假設(shè)一個(gè)小蟲在地上爬,那么我們應(yīng)該怎樣從小蟲信息?處理的角度來(lái)建立它的模型???
首先,我們需要對(duì)小蟲所在的環(huán)境進(jìn)行建模。我們不妨就假設(shè)小蟲所處的世界是一個(gè)無(wú)?限長(zhǎng)的紙帶,這個(gè)紙帶上被分成了若干小的方格,而每個(gè)方格都僅僅只有黑和白兩種顏色。?
很顯然,這個(gè)小蟲要有眼睛或者鼻子或者耳朵等等感覺(jué)器官來(lái)獲得世界的信息,我們不妨把?模型簡(jiǎn)化,假設(shè)它僅僅具有一個(gè)感覺(jué)器官:眼睛,而且它的視力短得可憐,也就是說(shuō)它僅僅能夠感受到它所處的方格的顏色。因而這個(gè)方格所在的位置的黑色或者白色的信息就是小蟲?的輸入信息。??
另外,我們當(dāng)然還需要為小蟲建立輸出裝置,也就是說(shuō)它能夠動(dòng)起來(lái)。我們?nèi)匀豢紤]最?簡(jiǎn)單的情況:小蟲的輸出動(dòng)作就是往紙帶上前爬一個(gè)方格或者后退一個(gè)方格。??
僅僅有了輸入裝置以及輸出裝置,小蟲還不能動(dòng)起來(lái),原因很簡(jiǎn)單,它并不知道該怎樣?在各種情況下選擇它的輸出動(dòng)作。于是我們就需要給它指定行動(dòng)的規(guī)則,這就是程序!假設(shè)?我們記小蟲的輸入信息集合為I={黑色,白色},它的輸出可能行動(dòng)的集合就是:O={前移,后移},那么程序就是要告訴它在給定了輸入比如黑色情況下,它應(yīng)該選擇什么輸出。因而,?一個(gè)程序就是一個(gè)從I集合到O集合的映射。我們也可以用列表的方式來(lái)表示程序,比如:??
程序1:??
輸入?輸出??
黑色?前移??
白色?后移??
這個(gè)程序非常簡(jiǎn)單,它告訴小蟲當(dāng)讀到一個(gè)黑色方格的時(shí)候就往前走一個(gè)方格,當(dāng)讀到?一個(gè)白色方格的時(shí)候就后退一個(gè)格。??
我們不妨假設(shè),小蟲所處的世界的一個(gè)片斷是:黑黑黑白白黑白……,小蟲從左端開(kāi)?始。??
那么小蟲讀到這個(gè)片斷會(huì)怎樣行動(dòng)呢?它先讀到黑色,然后根據(jù)程序前移一個(gè)方格,?于是就會(huì)得到另外一個(gè)黑色信息,這個(gè)時(shí)候它會(huì)根據(jù)程序再次前移一個(gè)方格,仍然是黑色,?再前移,這個(gè)時(shí)候就讀到白色方格了,根據(jù)程序它應(yīng)該后退一個(gè)格,這個(gè)時(shí)候輸入就是黑色了,前移,白色,后移……,可以預(yù)見(jiàn)小蟲會(huì)無(wú)限的循環(huán)下去。??
然而,現(xiàn)實(shí)世界中的小蟲肯定不會(huì)這樣傻的在那里無(wú)限循環(huán)下去。我們還需要改進(jìn)這個(gè)?最簡(jiǎn)單的模型。首先,我們知道小蟲除了可以機(jī)械地在世界上移動(dòng)以外,還會(huì)對(duì)世界本身造?文本框:?……文本框:?開(kāi)始?成影響,因而改變這個(gè)世界。比如蟲子看到旁邊有食物,它就會(huì)把那個(gè)東西吃掉了。在我們這個(gè)模型中,也就相當(dāng)于我們必須假設(shè)小蟲可以改寫紙帶上的信息。因而,小蟲可能的輸出?動(dòng)作集合就變成了:O={前移,后移,涂黑,涂白}。這個(gè)時(shí)候,我們可以把程序1改為比?如:??
程序2:??
輸入?輸出??
黑 ? ? 前移??
白 ? ? 涂黑??
紙帶是黑黑白白黑……,小蟲會(huì)怎樣行動(dòng)呢?下面的圖表示出了這個(gè)例子中每一步小蟲?的位置(標(biāo)有圓點(diǎn)的方格就是小蟲的當(dāng)前位置),以及紙帶的狀況。??
開(kāi)始:小蟲在最左邊的方格,根據(jù)程序的第一行,讀入黑色應(yīng)該前移。??
第二步:仍然讀入黑,根據(jù)程序的第一行,前移。??
第三步:這個(gè)時(shí)候讀入的是白色,根據(jù)程序的第二行,應(yīng)該把這個(gè)方格涂黑,而沒(méi)有其他的動(dòng)作。假設(shè)這張圖上方格仍然沒(méi)有涂黑,而在下一時(shí)刻才把它表示出來(lái)。??
第四步:當(dāng)前方格已經(jīng)是黑色的,因此小蟲讀入黑色方格,前移。??
第五步:讀入白色,涂黑方格,原地不動(dòng)。??
第六步:當(dāng)前的方格已經(jīng)被涂黑,繼續(xù)前移。??
第七步:讀入黑色,前移??
小蟲的動(dòng)作還會(huì)持續(xù)下去……。我們看到,小蟲將會(huì)不停的重復(fù)上面的動(dòng)作不斷往前走,?并會(huì)把所有的紙帶涂黑。??
顯然,你還可以設(shè)計(jì)出其他的程序來(lái),然而無(wú)論你的程序怎么復(fù)雜,也無(wú)論紙帶子的情況如何,小蟲的行為都會(huì)要么停留在一個(gè)方格上,要么朝一個(gè)方向永遠(yuǎn)運(yùn)動(dòng)下去,或者就是?在幾個(gè)方格上來(lái)回打轉(zhuǎn)。然而,無(wú)論怎樣,小蟲比起真實(shí)世界中的蟲子來(lái)說(shuō),還有一個(gè)致命?的弱點(diǎn):那就是如果你給它固定的輸入信息,它都會(huì)給你固定的輸出信息!因?yàn)槲覀冎莱?序是固死的,因此,每當(dāng)黑色信息輸入的時(shí)候,無(wú)論如何它都僅僅前移一個(gè)方格,而不會(huì)做?出其他的反應(yīng)。它似乎真的是機(jī)械的! ?

如果我們進(jìn)一步更改小蟲模型,那么它就會(huì)有所改進(jìn),至少在給定相同輸入的情況下,?小蟲會(huì)有不同的輸出情況。這就是加入小蟲的內(nèi)部狀態(tài)!我們可以作這樣的一個(gè)比喻:假設(shè)?黑色方格是食物,蟲子可以吃掉它,而當(dāng)吃到一個(gè)食物后,小蟲子就會(huì)感覺(jué)到飽了。當(dāng)讀入的信息是白色方格的時(shí)候,雖然沒(méi)有食物但它仍然吃飽了,只有當(dāng)再次讀入黑色時(shí)候它才會(huì)?感覺(jué)到自己饑餓了。因而,我們說(shuō)小蟲具有兩個(gè)內(nèi)部狀態(tài),并把它內(nèi)部狀態(tài)的集合記為:?
S={饑餓,吃飽}。這樣小蟲行為的時(shí)候就會(huì)不僅根據(jù)它的輸入信息,而且也會(huì)根據(jù)它當(dāng)前?的內(nèi)部狀態(tài)來(lái)決定它的輸出動(dòng)作,并且還要更改它的內(nèi)部狀態(tài)。而它的這一行動(dòng)仍然要用程?序控制,只不過(guò)跟上面的程序比起來(lái),現(xiàn)在的程序就更復(fù)雜一些了,比如:??
程序3:??
輸入?當(dāng)前內(nèi)部狀態(tài)?輸出?下時(shí)刻的內(nèi)部狀態(tài)??
黑 ? ? ? 饑餓 ? ? ? ? ? ? 涂白 ? ? ? ? 吃飽??
黑 ? ? ? ?吃飽 ? ? ? ? ? ?后移 ? ? ? ? 饑餓??
白 ? ? ? ?饑餓 ? ? ? ? ? ?涂黑 ? ? ? ? 饑餓??
白 ? ? ? ?吃飽 ? ? ? ? ? ?前移 ? ? ? ? ?吃飽??
這個(gè)程序復(fù)雜多了,有四行,原因是你不僅需要指定每一種輸入情況下小蟲應(yīng)該采取?的動(dòng)作,而且還要指定在每種輸入和內(nèi)部狀態(tài)的組合情況下小蟲應(yīng)該怎樣行動(dòng)。看看我們的?蟲子在讀入黑白白黑白……這樣的紙帶的時(shí)候,會(huì)怎樣?仍然用下面的一系列圖來(lái)表示,灰?
色的圓點(diǎn)表示饑餓的小蟲,白色的圓點(diǎn)表示它吃飽了。為了清晰,我們把小蟲將要變成的狀?態(tài)寫到了圖的下一行。??
假定它仍然從左端開(kāi)始,而且開(kāi)始的時(shí)候小蟲處于饑餓狀態(tài)。這樣讀入黑色,當(dāng)前饑?餓狀態(tài),根據(jù)程序第一行,把方格涂白,并變成吃飽(這相當(dāng)于把那個(gè)食物吃了,注意吃完?后,小蟲并沒(méi)動(dòng))。??
第二步:當(dāng)前的方格變成了白色,因而讀入白色,而當(dāng)前的狀態(tài)是吃飽狀態(tài),那么根?據(jù)程序中的第四條前移,仍然是吃飽狀態(tài);

第三步:讀入白色,當(dāng)前狀態(tài)是吃飽,因而會(huì)重復(fù)第二步的動(dòng)作。??
涂白方格,變成吃飽:?前移,仍然吃飽:?前移,保持吃飽?

第四步:仍然重復(fù)上次的動(dòng)作。??
第五步:讀入黑色,當(dāng)前狀態(tài)是吃飽,這時(shí)候根據(jù)程序的第二行應(yīng)該后移方格,并轉(zhuǎn)?入饑餓狀態(tài);??
第六步:讀入白色,當(dāng)前饑餓狀態(tài),根據(jù)程序第三行應(yīng)該涂黑,并保持饑餓狀態(tài)(各?位注意,這位小蟲似乎自己吐出了食物!);??
第七步,讀入黑色,當(dāng)前饑餓,于是把方格涂白,并轉(zhuǎn)入吃飽狀態(tài)(呵呵,小蟲把剛?剛自己吐出來(lái)的東西又吃掉了!)。??
第八步,讀入白色,當(dāng)前吃飽,于是前移,保持吃保狀態(tài)。??
這時(shí)候跟第四步的情況完全一樣了,因而小蟲會(huì)完全重復(fù)5、6、7、8步的動(dòng)作,并永?遠(yuǎn)循環(huán)下去。似乎最后的黑色方格是一個(gè)門檻,小蟲無(wú)論如何也跨越不過(guò)去了。??
小蟲的行為比以前的程序復(fù)雜了一些。盡管從長(zhǎng)期來(lái)看,它最后仍然會(huì)落入機(jī)械的循環(huán)?或者無(wú)休止的重復(fù)。然而這從本質(zhì)上已經(jīng)與前面的程序完全不同了,因?yàn)楫?dāng)你輸入給小蟲白?色信息的時(shí)候,它的反應(yīng)是你不能預(yù)測(cè)的!它有可能涂黑方格也有可能前移一個(gè)。當(dāng)然前提
是你不能打開(kāi)小蟲看到它的內(nèi)部結(jié)構(gòu),也不能知道它的程序,那么你所看到的就是一個(gè)不能?預(yù)測(cè)的滿地亂爬的小蟲。如果小蟲的內(nèi)部狀態(tài)數(shù)再增多呢,那么它的行為會(huì)更加的不可預(yù)測(cè)!??
好了,如果你已經(jīng)徹底搞懂了我們的小蟲是怎么工作的,那么你已經(jīng)明白了圖靈機(jī)的工?作原理了!因?yàn)閺谋举|(zhì)上講,最后的小蟲模型就是一個(gè)圖靈機(jī)!??

2、如何理解圖靈機(jī)模型*??
剛才用小蟲說(shuō)明了圖靈機(jī)的工作原理,相信你的第一個(gè)反映就是,這樣的模型太簡(jiǎn)單了!?
他根本說(shuō)明不了現(xiàn)實(shí)世界中的任何問(wèn)題!下面,我就要試圖說(shuō)服你,圖靈機(jī)這個(gè)模型是偉大?的!??
首先,我想說(shuō)的是,其實(shí)我們每一個(gè)會(huì)決策、會(huì)思考的人就可以被抽象的看成一個(gè)圖靈?機(jī)。??
?前移,保持吃飽:?涂白,轉(zhuǎn)入吃飽:?……:?前移,保持吃飽:?后移,變成饑餓:?涂黑,保持饑餓
為什么可以做這種抽象呢?首先我們可以考慮擴(kuò)展剛才說(shuō)的小蟲模型。因?yàn)樾∠x模型是?
以一切都簡(jiǎn)化的前提開(kāi)始的,所以它的確是太太簡(jiǎn)單了。然而,我們可以把小蟲的輸入集合、?輸出行動(dòng)集合、內(nèi)部狀態(tài)集合進(jìn)行擴(kuò)大,這個(gè)模型就一下子實(shí)用多了。首先,小蟲完全可以處于一個(gè)三維的空間中而不是簡(jiǎn)簡(jiǎn)單單的紙帶。并且小蟲的視力很好,它一下子能讀到方圓?500米的信息,當(dāng)然,小蟲也可以擁有其他的感覺(jué)器官,比如嗅覺(jué)、聽(tīng)覺(jué)等等,而這些改變?都僅僅是擴(kuò)大了輸入集合的維數(shù)和范圍,并沒(méi)有其他更本質(zhì)的改變。同樣道理,小蟲可能的?輸出集合也是異常的豐富,它不僅僅能移動(dòng)自己,還可以盡情的改造它所在的自然界。進(jìn)一?步的,小蟲的內(nèi)部狀態(tài)可能非常的多,而且控制它行為的程序可能異常復(fù)雜,那么小蟲會(huì)有?什么本事呢?這就很難說(shuō)了,因?yàn)殡S著小蟲內(nèi)部的狀態(tài)數(shù)的增加,隨著它所處環(huán)境的復(fù)雜度?的增加,我們正在逐漸失去對(duì)小蟲行為的預(yù)測(cè)能力。但是所有這些改變?nèi)匀粵](méi)有逃出圖靈機(jī)?的模型:輸入集合、輸出集合、內(nèi)部狀態(tài)、固定的程序!就是這四樣?xùn)|西抓住了小蟲信息處?理的根本。??
我們?nèi)四懿荒芤脖贿@樣的抽象呢?顯然,輸入狀態(tài)集合就是你所處的環(huán)境中能夠看到、?聽(tīng)到、聞到、感覺(jué)到的所有一起,可能的輸出集合就是你的每一言每一行,以及你能夠表達(dá)?出來(lái)的所有表情動(dòng)作。內(nèi)部狀態(tài)集合則要復(fù)雜得多。因?yàn)槲覀兛梢园讶我庖粋€(gè)神經(jīng)細(xì)胞的狀?態(tài)組合看作是一個(gè)內(nèi)部狀態(tài),那么所有可能的神經(jīng)細(xì)胞的狀態(tài)組合將是天文數(shù)字!??
似乎你會(huì)說(shuō),這個(gè)模型根本不對(duì),還有很多思維本質(zhì)的東西沒(méi)有概括進(jìn)去。比如記憶?問(wèn)題,人有記憶,圖靈機(jī)有么?其實(shí),只要圖靈機(jī)具有了內(nèi)部狀態(tài),它就相應(yīng)的具有了記憶。?
比如上面講到的具有饑餓和吃飽兩種狀態(tài)的小蟲就會(huì)記住它所經(jīng)歷過(guò)的世界:如果吃到食物?就用吃飽狀態(tài)來(lái)“記住”吃過(guò)的食物。什么是記憶呢?假如你經(jīng)歷了一件事情并記住了它,?那么只要你下一次的行動(dòng)在相同條件下和你記住這件事情之前的行動(dòng)不一樣了,就說(shuō)明該事?情對(duì)你造成了影響,也就說(shuō)明你確實(shí)記住了它。??
學(xué)習(xí)的問(wèn)題反映在模型中了么?學(xué)習(xí)是怎么回事兒呢?似乎圖靈機(jī)模型中不包括學(xué)習(xí),因?yàn)閷W(xué)習(xí)就意味著對(duì)程序的改變,而圖靈機(jī)是不能在運(yùn)行過(guò)程中改變它的程序的。然而,?我們不難假設(shè),你實(shí)際上并不能打開(kāi)一個(gè)人的腦袋來(lái)看,所以它的實(shí)際程序規(guī)則你是不知道?
的。很有可能一個(gè)圖靈機(jī)的規(guī)則沒(méi)有改變,只不過(guò)激活了它的某些內(nèi)部狀態(tài),因而它的行為?發(fā)生了本質(zhì)上的變化,盡管給它相同的輸入,它給出了完全不同的輸出,因而在我們看來(lái),?它似乎會(huì)學(xué)習(xí)了!而實(shí)際上,這個(gè)圖靈機(jī)的程序一點(diǎn)都沒(méi)變。??
還有很多很多現(xiàn)象似乎都能被圖靈機(jī)包括,什么是人類的情緒、情感?你完全可以把?它看作是某種內(nèi)部狀態(tài),因而處于心情好的情緒下,你的輸入輸出是一套規(guī)則,而心情不好?的時(shí)候則完全是另一套。這仍然沒(méi)有逃出圖靈機(jī)的模型范圍。??
接下來(lái)的問(wèn)題就是我們?nèi)说乃季S究竟是不是和圖靈機(jī)一樣遵循固定的程序呢?這個(gè)問(wèn)?題似乎初看是不可能的,因?yàn)槿说男袨樘还潭?#xff01;你不可預(yù)言它!然而我會(huì)爭(zhēng)辯道,無(wú)論?如何神經(jīng)元傳遞信息、變化狀態(tài)的規(guī)律都是固定的,可以被程序化的,那么作為神經(jīng)元的整?
體:腦的運(yùn)作必然也要遵循固定的規(guī)則也就是程序了。那么,如果是這樣,正如圖靈相信的,?人腦也不會(huì)超越圖靈機(jī)這個(gè)模型,所以,人工智能也必然是可能的!然而,我認(rèn)為針對(duì)這個(gè)?問(wèn)題的答案很有可能沒(méi)有這么簡(jiǎn)單,我們將在最后詳細(xì)討論這個(gè)問(wèn)題。??
無(wú)論如何,我相信你已經(jīng)能夠體會(huì)到了,圖靈機(jī)模型實(shí)際上是非常強(qiáng)有力的!??
三、計(jì)算??
1、什么是計(jì)算??
說(shuō)了這么多,雖然也許你已經(jīng)了解到了圖靈機(jī)的威力,也許還將信將疑,然而,你肯定?仍然看不出來(lái)圖靈機(jī)和計(jì)算有什么關(guān)系。而實(shí)際上,圖靈機(jī)是一個(gè)理論計(jì)算機(jī)模型,它最主?要的能耐還是在于計(jì)算上!所以,下面我們就來(lái)看看什么是計(jì)算!??
我可以先給出一個(gè)很摩登的對(duì)計(jì)算概念的理解:廣義上講,一個(gè)函數(shù)變化如把x變成了?f(x)就是一個(gè)計(jì)算!如果我們把一切都看作是信息,那么更精確的講,計(jì)算就是對(duì)信息的變?換!如果采用這種觀點(diǎn),你會(huì)發(fā)現(xiàn),其實(shí)自然界充滿了計(jì)算!如果我們把一個(gè)小球扔到地上小球又彈起來(lái)了,那么大地就完成了一次對(duì)小球的計(jì)算。因?yàn)槟阃耆梢园研∏虻倪\(yùn)動(dòng)都抽?象成信息,它無(wú)非是一些比如位置、速度、形狀等等能用信息描述的東西嘛,而大地把小球?彈起來(lái)就無(wú)非是對(duì)小球的這些信息進(jìn)行了某種變換,因而大地就完成了一次計(jì)算!你可以把?整個(gè)大地看作是一個(gè)系統(tǒng),而扔下去的小球是對(duì)這個(gè)系統(tǒng)的輸入,那么彈回來(lái)的小球就是該?系統(tǒng)的輸出,因而也可以說(shuō),計(jì)算就是某個(gè)系統(tǒng)完成了一次從輸入到輸出的變換!??這樣理解不要緊,你會(huì)發(fā)現(xiàn),現(xiàn)實(shí)世界到處都是計(jì)算了!因?yàn)槲覀兺耆梢园阉械淖匀唤绱嬖诘倪^(guò)程都抽象成這樣的輸入輸出系統(tǒng),所有的大自然存在的變量都看作是信息,因?而計(jì)算無(wú)處不在!也的確,正是采取了這樣的觀點(diǎn),國(guó)外才有可能發(fā)明什么DNA計(jì)算機(jī)、?生物計(jì)算機(jī)、量子計(jì)算機(jī)這些新鮮玩藝!因?yàn)槿思野袲NA的化學(xué)反應(yīng)、量子世界的波函數(shù)?變換都看作是計(jì)算了,自然就會(huì)人為地把這些計(jì)算組合起來(lái)構(gòu)成計(jì)算機(jī)了。然而,似乎我們?的理論家們還在力圖證明關(guān)于圖靈機(jī)的某個(gè)定理呢,卻完全沒(méi)有意識(shí)到計(jì)算其實(shí)就是這樣簡(jiǎn)?單!??
下面回到圖靈機(jī)!為什么說(shuō)圖靈機(jī)是一個(gè)計(jì)算的裝置呢?很簡(jiǎn)單,圖靈機(jī)也是一個(gè)會(huì)對(duì)?輸入信息進(jìn)行變換給出輸出信息的系統(tǒng)。比如前面說(shuō)的小蟲,紙帶上的一個(gè)方格一個(gè)方格的?顏色信息就是對(duì)小蟲的輸入,而小蟲所采取的行動(dòng)就是它的輸出。不過(guò)這么看,你會(huì)發(fā)現(xiàn),?似乎小蟲的輸出太簡(jiǎn)單了。因?yàn)樗鼉H僅就有那么幾種簡(jiǎn)單的輸出動(dòng)作。然而,不要忘了,復(fù)?雜性來(lái)源于組合!雖然每一次小蟲的輸出動(dòng)作很簡(jiǎn)單,然而當(dāng)把所有這些輸出動(dòng)作組合在一?起,就有可能非常復(fù)雜!比如我們可以把初始時(shí)刻的紙帶看作是輸入信息,那么經(jīng)過(guò)任意長(zhǎng)?的時(shí)間比如說(shuō)100年后,小蟲通過(guò)不斷的涂抹紙帶最后留下的信息就是輸出信息了。那么小?蟲完成的過(guò)程就是一次計(jì)算。事實(shí)上,在圖靈機(jī)的正規(guī)定義中,存在一個(gè)所謂的停機(jī)狀態(tài),?當(dāng)圖靈機(jī)一到停機(jī)狀態(tài),我們就認(rèn)為它計(jì)算完畢了,因而不用費(fèi)勁的等上100年。??
2、計(jì)算的組合??
更有意思的是,我們可以把若干個(gè)計(jì)算系統(tǒng)進(jìn)行合并構(gòu)成更大的計(jì)算系統(tǒng)。比如還是那?個(gè)小球吧,如果往地上放了一個(gè)蹺蹺板,這樣小球掉到地上會(huì)彈起這個(gè)蹺蹺板的另一端,而?蹺蹺板的另一邊可能還是一個(gè)小球,于是這個(gè)彈起的小球又會(huì)砸向另一個(gè)蹺蹺板……。??
我們自然可以通過(guò)組合若干圖靈機(jī)完成更大更多的計(jì)算,如果把一個(gè)圖靈機(jī)對(duì)紙帶信息?變換的結(jié)果又輸入給另一臺(tái)圖靈機(jī),然后再輸入給別的圖靈機(jī)……,這就是把計(jì)算進(jìn)行了組?合!也許你還在為前面說(shuō)的無(wú)限多的內(nèi)部狀態(tài),無(wú)限復(fù)雜的程序而苦惱,那么到現(xiàn)在,你不?難明白,實(shí)際上我們并不需要寫出無(wú)限復(fù)雜的程序列表,而僅僅將這些圖靈機(jī)組合到一起就?可以產(chǎn)生復(fù)雜的行為了。??
有了圖靈機(jī)的組合,我們就能夠從最簡(jiǎn)單的圖靈機(jī)開(kāi)始構(gòu)造復(fù)雜的圖靈機(jī)。那么最簡(jiǎn)單?的圖靈機(jī)是什么呢?我們知道最簡(jiǎn)單的信息就是0和1,而最簡(jiǎn)單的計(jì)算就是對(duì)0或1進(jìn)行?布爾運(yùn)算。而布爾運(yùn)算本質(zhì)上其實(shí)就三種:與、或、非。從最簡(jiǎn)單的邏輯運(yùn)算操作最簡(jiǎn)單的?
二進(jìn)制信息出發(fā)我們其實(shí)可以構(gòu)造任意的圖靈機(jī)!這點(diǎn)不難理解:任何圖靈機(jī)都可以把輸入、?輸出信息進(jìn)行01的編碼,而任何一個(gè)變換也可以最終分解為對(duì)01編碼的變換,而對(duì)01編?碼的所有計(jì)算都可分解成前面說(shuō)的三種運(yùn)算。也許,現(xiàn)在你明白了為什么研究計(jì)算機(jī)的人都?要去研究基本的布爾電路。奧秘就在于,用布爾電路可以組合出任意的圖靈機(jī)!??
3、征服無(wú)限的方法!??

回憶你小時(shí)候是如何學(xué)會(huì)加法運(yùn)算的。剛開(kāi)始的時(shí)候,你僅僅會(huì)死記硬背。比如你記住?了1+1=2,記住了2+4=6,……。然而無(wú)論你記住多少固定數(shù)字的運(yùn)算,你都不叫學(xué)會(huì)了加法。原因很簡(jiǎn)單,假如你記住了n對(duì)數(shù)的加法,那么我總會(huì)拿出第n+1對(duì)數(shù)是你沒(méi)有記住?的,因此你還是不會(huì)計(jì)算。原則上。自然數(shù)的個(gè)數(shù)是無(wú)窮的,所以任何兩個(gè)數(shù)的加法可能結(jié)果也是無(wú)窮的,而如果采用死記硬背的方法,我們頭腦怎么可能記住無(wú)窮數(shù)字的計(jì)算法則?呢?但是隨著年齡的增長(zhǎng),你畢竟還是最終學(xué)會(huì)了加法運(yùn)算!說(shuō)來(lái)奇怪,你肯定明白其實(shí)加?
法運(yùn)算并不需要記住所有數(shù)字的運(yùn)算結(jié)果,而僅僅需要記住10以內(nèi)的任意兩個(gè)數(shù)的和,并?且懂得了進(jìn)位法則就可以了。??
你是怎么做到的呢?假設(shè)要計(jì)算32+69的加法結(jié)果,你會(huì)把32寫到一行,把69寫到?下一行,然后把他們對(duì)齊。于是你開(kāi)始計(jì)算2+9=11,進(jìn)一位,然后計(jì)算3+6=9,再計(jì)算9+1=10?再進(jìn)一位,最后,再把計(jì)算的這些每一位的結(jié)果都拼起來(lái)就是最終的答案101。這個(gè)簡(jiǎn)單例?
子給我們的啟發(fā)就是:作加法的過(guò)程就是一個(gè)機(jī)械的計(jì)算過(guò)程,這里輸入就是32和69這兩?個(gè)數(shù)字,輸出就是101。而你的程序規(guī)則就是具體的把任意兩個(gè)10以內(nèi)的數(shù)求和。這樣,?根據(jù)固定的加法運(yùn)算程序你可以計(jì)算任兩個(gè)數(shù)的加法了。??
不知你發(fā)現(xiàn)了沒(méi)有,這個(gè)計(jì)算加法的方法能夠讓你找到運(yùn)用有限的規(guī)則應(yīng)對(duì)無(wú)限可能情?況的方法!我們剛才說(shuō)了,實(shí)際上自然數(shù)是無(wú)限的,這樣,所有可能的加法結(jié)果也是無(wú)限的。?
然而運(yùn)用剛才說(shuō)的運(yùn)算方法,無(wú)論輸入的數(shù)字是多少,只要你把要計(jì)算的數(shù)字寫下來(lái)了,就?一定能夠計(jì)算出最終的結(jié)果,而無(wú)需死記硬背所有的加法!??
因而,可以說(shuō)計(jì)算這個(gè)簡(jiǎn)單的概念,是一種用有限來(lái)應(yīng)對(duì)無(wú)限的方法!我們?cè)倏匆粋€(gè)?例子:假如給你一組數(shù)對(duì):1,2?3,6?5,10?18,36,就這4對(duì),這時(shí)問(wèn)你102對(duì)應(yīng)的數(shù)是多?少?很顯然,如果僅僅根據(jù)你掌握的已知數(shù)對(duì)的知識(shí),是不可能知道答案的,因?yàn)槟愕闹R(shí)庫(kù)里面沒(méi)有存放著102對(duì)應(yīng)數(shù)字的知識(shí)。然而,如果你掌握了產(chǎn)生這組數(shù)對(duì)的程序法則,也?就是看到如果第一個(gè)數(shù)是x,那么第二個(gè)數(shù)就是2x的話,你肯定一下子就算出102對(duì)應(yīng)的?是204了。也就是說(shuō),你實(shí)際上運(yùn)用2x這兩個(gè)字符就記住了無(wú)限的諸如1,2?3,6?102,204?
所有這樣的數(shù)對(duì)。??
這看起來(lái)似乎很奇怪。我怎么可能運(yùn)用有限的字符來(lái)應(yīng)對(duì)無(wú)限種可能呢?實(shí)際上,當(dāng)?沒(méi)有人問(wèn)你問(wèn)題的時(shí)候,你存儲(chǔ)的2x什么也沒(méi)有,而當(dāng)我問(wèn)你102對(duì)應(yīng)的是多少?我就相?當(dāng)于給你輸入了信息:102,而你僅僅是根據(jù)這個(gè)輸入信息102進(jìn)行一系列的加工變換得到了輸出信息204。因而輸入信息就好比是原材料,而你的程序規(guī)則就是加工的方法,只有在?原材料上進(jìn)行加工,你才能輸出最終產(chǎn)品。??
這讓我不禁想起了專家系統(tǒng)方法。其實(shí)專家系統(tǒng)就是一個(gè)大的規(guī)則庫(kù)。也就相當(dāng)于存?儲(chǔ)了很多很多的1,2?3,6?5,10這樣特殊的規(guī)則對(duì)。而無(wú)論它存儲(chǔ)的東西再多,總歸會(huì)是有限?的,你只要找到一個(gè)它沒(méi)有存儲(chǔ)到的問(wèn)題,它就無(wú)能為力了。因而專家系統(tǒng)就會(huì)在你問(wèn)到?102對(duì)應(yīng)是多少的時(shí)候失敗!如何解決問(wèn)題?人們想出了很多方法,就比如元規(guī)則的方法,?其實(shí)元規(guī)則就相當(dāng)于剛才所說(shuō)的計(jì)算加法的程序,或者2x這樣的東西。運(yùn)用元規(guī)則的確可?以應(yīng)對(duì)無(wú)限種情況了。所以,這就是為什么你問(wèn)計(jì)算機(jī)任何兩個(gè)數(shù)相加是多少,它總能給 你正確的答案的原因,雖然它不必記住所有這些加法對(duì)的信息。??然而僅僅是元規(guī)則就能解決所有問(wèn)題么???
假如給你三組數(shù)對(duì),排列成一個(gè)表:??
1,2?3,6?4,8?100,200??
3,9?2,6?8,24?100,300??
1,4?2,8?3,12?100,400??
那么問(wèn)你在第6行上,3這個(gè)數(shù)字對(duì)應(yīng)的是多少?我們先要找出第一行的規(guī)律是2x沒(méi)?有疑問(wèn),第二行呢?是3x,第三行是4x,那么第6行就應(yīng)該是7x了,因而在第6行上3?

應(yīng)該對(duì)應(yīng)的是21了!這里跟前面不太一樣的是,雖然我們得到了每一行的規(guī)則比如第一行?的2x,但是隨著行數(shù)的增加,這個(gè)規(guī)則本身也變化了,因而第2行是3x,第3行是4x等等,?因而我們又得到了一個(gè)規(guī)則本身的規(guī)則,即如果行數(shù)是n的話,那么這一行的規(guī)則就是?(n+1)x。我們顯然能夠根據(jù)輸入的n和x計(jì)算出數(shù)值。把這個(gè)道理放到專家系統(tǒng)里面,這種?原理就是元規(guī)則的規(guī)則,元規(guī)則的元規(guī)則……,應(yīng)該是無(wú)窮的!然而專家系統(tǒng)本身并不會(huì)自動(dòng)的歸納這些規(guī)則,人必須事先把這些元規(guī)則寫到程序里,這也就是專家系統(tǒng)最大的弊端。?
而我們?nèi)怂坪蹩偰茉谝恍﹤€(gè)別的事件中歸納出規(guī)則。進(jìn)一步問(wèn),機(jī)器可以歸納么?這就相當(dāng)?于說(shuō):可以為歸納方法編出程序么?這也是一個(gè)很有趣的問(wèn)題,下面將要詳細(xì)討論!可以設(shè)?想,假如我們找到了真正歸納的方法,那么編寫出這樣的程序,它就會(huì)一勞永逸的自己進(jìn)行?學(xué)習(xí)歸納了。我們完全再也不用給他編制程序和規(guī)則了。這正是人工智能的終極目標(biāo)!??
4、歸納*??
記得金大俠在他的一本武俠小說(shuō):《倚天屠龍記》中曾講述了這樣一段故事:武林泰斗?張三豐在情急之下要把他新創(chuàng)的武功“太極拳”傳授給新起之秀張無(wú)忌。張無(wú)忌除了有一身?精湛的“內(nèi)功修為”以外還對(duì)武學(xué)具有極高的悟性。因而當(dāng)張三豐給他打過(guò)一趟太極拳以后,?
他就把所有的招式全部記下來(lái)了并且當(dāng)場(chǎng)把所學(xué)的太極拳重新再打給張三豐看。在張無(wú)忌練?拳的過(guò)程中,張三豐反復(fù)問(wèn)他一個(gè)問(wèn)題:“你已經(jīng)忘掉幾招了?”。他的回答令其他人異常不?解,因?yàn)樗皆谀抢锎μ珮O拳的奧秘,忘記的招數(shù)也越來(lái)越多。旁邊的人不明白,這樣的?學(xué)法忘的這么快,怎么可能學(xué)會(huì)武功呢?然而,沒(méi)過(guò)多長(zhǎng)時(shí)間,張無(wú)忌說(shuō)已經(jīng)忘掉了所有的?招式。張三豐笑著說(shuō):“不錯(cuò),你終于學(xué)會(huì)了‘太極拳’”。??
從這個(gè)例子中,我們看到了什么?張無(wú)忌之所以能學(xué)會(huì)太極拳,正是因?yàn)樗呀?jīng)能夠從?具體的一招一式之中抽象出了更高一層次的武學(xué)規(guī)律,因而,當(dāng)他把所有的有形的武功招數(shù)?都忘記的時(shí)候,已經(jīng)掌握了太極拳的精髓。而太極武功講究的就是借力打力,以柔克剛。說(shuō)?白了就是事先并沒(méi)有固定招式存在,而等到敵人向我進(jìn)攻的時(shí)候我再動(dòng)態(tài)的生成破解的招?術(shù)。??
用到圖靈機(jī)模型中,我們不難發(fā)現(xiàn),如果把具體的武功招術(shù)比喻成一些輸入,而應(yīng)對(duì)招?術(shù)比喻成圖靈機(jī)的輸出,那么太極所講究的借力打力、以柔克剛的方法其實(shí)就是類似上節(jié)講?過(guò)的2x這樣的圖靈程序!因而張無(wú)忌學(xué)太極拳的過(guò)程就是從特殊的輸入輸出提升到了一般?
的算法的過(guò)程。也可以說(shuō),張無(wú)忌運(yùn)用了歸納學(xué)習(xí)法!??
然而,仔細(xì)觀察上一節(jié)的敘述,我們會(huì)發(fā)現(xiàn)。雖然圖靈機(jī)能夠?qū)?x這樣的法則計(jì)算得?出結(jié)果,但是抽象出2x本身并不是機(jī)器自動(dòng)產(chǎn)生的,而是需要我們外在的人編程進(jìn)去。那?么,面對(duì)這樣的問(wèn)題,究竟圖靈機(jī)能不能像張無(wú)忌一樣進(jìn)行歸納思維呢???
可以設(shè)想,如果計(jì)算機(jī)真有了張無(wú)忌那兩下子,我們?nèi)祟惪梢∈聝憾嗔?#xff01;我們甚至不?需要為計(jì)算機(jī)編程序,它就會(huì)自動(dòng)的從若干個(gè)具體事例中歸納出一般的通用規(guī)律來(lái)。然而,?究竟計(jì)算機(jī)能不能具有真正的歸納能力呢?讓我們來(lái)仔細(xì)考慮一下這個(gè)問(wèn)題。??
我們說(shuō)如果計(jì)算機(jī)能自動(dòng)歸納,也就意味著我們可以為歸納方法來(lái)編寫一段程序P。這?個(gè)程序可以理解為輸入的是一些特殊的數(shù)對(duì),輸出的是能夠生成這些數(shù)對(duì)的程序。也就是說(shuō)?輸入具體的“招術(shù)”,輸出的是這些“招術(shù)”的一般規(guī)律。如果說(shuō)程序P真正可以自己歸納,?那么P就必然可以歸納出所有的規(guī)律。我們已經(jīng)討論過(guò)了,其實(shí)任何一個(gè)程序都能夠被看?作是對(duì)輸入的一個(gè)變換而得到輸出。那么程序P自然也是。假設(shè)這些對(duì)子(a,b),(c,d),(e,f),……?都是程序P的輸入輸出對(duì),那么我們挑選出前1000個(gè)(總而言之是足夠多的對(duì)子)。把這?1000個(gè)特殊情況輸入到P中,那么P就應(yīng)該能夠產(chǎn)生這些對(duì)子的共性,也就是P自己這個(gè)?程序了!換句話說(shuō),程序P產(chǎn)生了它自己,P自己把自己給歸納出來(lái)了!這似乎陷入了怪圈?之中!另外,我們?nèi)祟愒O(shè)計(jì)出來(lái)P,如果P可以歸納所有的規(guī)律,那么P能否也能歸納出“人?歸納P”本身這個(gè)規(guī)律呢?仍然是怪圈問(wèn)題!這樣的問(wèn)題似乎還有很多。反過(guò)來(lái)講,如果假?設(shè)歸納出所有規(guī)律的程序P不存在,那么為什么我們?nèi)祟惪偰軞w納出規(guī)律呢?什么樣的具體問(wèn)題是可歸納的,什么問(wèn)題是不可歸納的?然而這些看起來(lái)非常重要的問(wèn)題在目前還沒(méi)有 統(tǒng)一的答案!??
我們還將會(huì)看到很多問(wèn)題都涉及到邏輯中的怪圈,而由于計(jì)算理論已經(jīng)觸及了邏輯、信?息的根本,所以把一些問(wèn)題引向邏輯怪圈并不奇怪。

四、模擬?
1、什么是模擬??
什么是模擬?又是一個(gè)基本的問(wèn)題,愛(ài)因斯坦說(shuō)過(guò),越是基本的概念就越是難以刻畫清楚。模擬這個(gè)概念就是一個(gè)很難說(shuō)清的問(wèn)題。?
如果你站在一個(gè)朋友面前,沖著他做了一些鬼臉。那么他也會(huì)學(xué)著你的動(dòng)作沖你做鬼臉,那么他就對(duì)你進(jìn)行了模擬。?
很明顯,在你和你朋友之間存在著一系列的對(duì)應(yīng)關(guān)系:你的手對(duì)應(yīng)他的手,你的眼睛對(duì)應(yīng)它的眼睛,你的嘴巴對(duì)應(yīng)他的嘴巴……。而且你的手、眼睛、嘴巴做出來(lái)的動(dòng)作也會(huì)對(duì)應(yīng)他的手、眼睛、嘴巴做出來(lái)的動(dòng)作。因而,模擬的關(guān)鍵是對(duì)應(yīng)!如果集合A中的元素可
以完全對(duì)應(yīng)B中的元素,那么A就可以模擬B。?
仍然用你沖你的朋友做鬼臉的例子,假如這次你做出的鬼臉以及動(dòng)作沒(méi)有被他立即模仿而是被他用某種符號(hào)語(yǔ)言記錄到了日記本上了。比如:“X年X月X日,瘋子X(jué)X沖我做了一個(gè)鬼臉:他伸出了左手食指放到了右眼下面往下拉他臉上的肉,并且吐出了他長(zhǎng)長(zhǎng)的舌
頭!”。過(guò)了N多天后,你的這位朋友掏出了日記本,按照上面的描述沖著大家做了這個(gè)鬼臉。很顯然他仍然模擬了你當(dāng)時(shí)的動(dòng)作。那么,你朋友日記本上的那段對(duì)話描述是不是對(duì)你鬼臉動(dòng)作的模擬呢?似乎答案是否,因?yàn)檫@段文字跟你沒(méi)有半點(diǎn)相像。然而你的朋友正是根據(jù)這段描述才做出了對(duì)鬼臉動(dòng)作的模擬。也就是說(shuō),他把那段文字翻譯成了他的動(dòng)作,而他這個(gè)動(dòng)作就是對(duì)你的模擬。這個(gè)翻譯的過(guò)程很顯然就是某種信息的變換,我們完全可以把它理解為一個(gè)計(jì)算的過(guò)程,也就是可以用圖靈機(jī)來(lái)實(shí)現(xiàn)的算法過(guò)程。所以,我們說(shuō)日記本上的那段指令也構(gòu)成了對(duì)你鬼臉動(dòng)作的模擬,原因是這些信息也與你的鬼臉動(dòng)作構(gòu)成了對(duì)應(yīng)。具體的,我們可以用下面的圖表示:?
這里A是你的鬼臉動(dòng)作,B是你朋友做出來(lái)的鬼臉動(dòng)作,C是日記本上的描述。你朋友的動(dòng)作B模擬了你的動(dòng)作A,而B的動(dòng)作信息是通過(guò)執(zhí)行C上的描述得到的,也就是說(shuō)存在著一個(gè)從C到B上信息的變換。這樣我們認(rèn)為C也對(duì)A進(jìn)行了模擬。?
2、圖靈機(jī)之間的模擬?
下面來(lái)考慮圖靈機(jī)之間的模擬。按照前面的定義,一臺(tái)圖靈機(jī)包括:輸入集合I,輸出集合O,內(nèi)部狀態(tài)集合S,程序規(guī)則表T四個(gè)要素。那么如果兩個(gè)圖靈機(jī)之間的這些元素都存在剛才說(shuō)的對(duì)應(yīng)關(guān)系,就認(rèn)為兩個(gè)圖靈機(jī)可以相互模擬了。然而圖靈機(jī)的功能是完成對(duì)輸入信息進(jìn)行變換得到輸出信息的計(jì)算。我們關(guān)心的也僅僅是輸入輸出之間的對(duì)應(yīng)關(guān)系。因而一臺(tái)圖靈機(jī)A如果要模擬B并不一定要模擬B中的所有輸入、輸出、內(nèi)部狀態(tài)、程序規(guī)則文本框: A文本框: B文本框: C文本框: 模擬文本框: 變換文本框: 模擬表這些元素,而只要在給定輸入信息的時(shí)候,能夠模擬B的輸出信息就可以了。?
因此,我們可以用下面的圖來(lái)表示圖靈機(jī)之間的模擬:?
也就是說(shuō)在給定相同輸入信息的情況下,只要輸出信息o’能夠模擬信息o就可以,也就認(rèn)為B模擬了A。而信息o’對(duì)信息o的模擬又符合我們上面對(duì)一般集合之間模擬的定義。
也就是說(shuō)如果存在另外一臺(tái)圖靈機(jī)能夠把信息o’計(jì)算并映射成信息o,就認(rèn)為o’模擬了o。
說(shuō)白了也就是o’可以與o不一樣,但是只要你能用一個(gè)圖靈機(jī)把o’經(jīng)過(guò)一系列運(yùn)算變換到相同的o,就認(rèn)為o’模擬了o。因而也就是圖靈機(jī)B模擬了圖靈機(jī)A。?
進(jìn)一步,我們可以假設(shè)A和B輸入的信息也不一樣,一個(gè)i,另一個(gè)是i’,那么如果i和i’之間也存在著模擬對(duì)應(yīng)關(guān)系的話,我們?nèi)匀徽J(rèn)為B可以模擬A。也就是下面的圖:?
有一點(diǎn)需要注意,如果A圖靈機(jī)模擬了B圖靈機(jī),那么并不一定B圖靈機(jī)可以模擬A圖靈機(jī)。因?yàn)橛锌赡蹵圖靈機(jī)比B圖靈機(jī)處理的信息更多。也就是說(shuō)假如B能處理的信息
就是1,2,34,而A處理的信息除了這四個(gè)數(shù)之外,還有5,6,7,8,那么顯然當(dāng)輸入1234的時(shí)候A能夠模擬B,而當(dāng)輸入5678的時(shí)候B沒(méi)定義了,不能完成任何操作。在這個(gè)時(shí)候B顯然不能模擬A了。?
3、計(jì)算等價(jià)性?
講了這么多關(guān)于模擬的知識(shí)有什么用呢?模擬的一個(gè)關(guān)鍵作用就是闡明什么是等價(jià)的。比如為了完成加法運(yùn)算,你寫了一段程序,而我也寫了另一段程序,雖然我們兩個(gè)的程序可能完全不一樣,然而只要我們兩個(gè)程序之間能夠相互模擬,也就是說(shuō)只要給定兩個(gè)數(shù),我們都能正確的一模一樣的算出它們的和,那么我們兩個(gè)程序就是等價(jià)的!?
具體地說(shuō),如果A能夠模擬B,并且B也能模擬A,那么A和B就是計(jì)算等價(jià)的。計(jì)算等價(jià)性是非常強(qiáng)有力的,因?yàn)樗沂玖嗽谖覀冞@個(gè)宇宙中某種非常普遍的規(guī)律。我們?nèi)匀挥脛偛耪f(shuō)的加法算法為例子來(lái)說(shuō)明。雖然計(jì)算兩個(gè)數(shù)的加法的方法可能有無(wú)窮多種,也有可能用各種各樣的計(jì)算機(jī)語(yǔ)言,什么C,Basic,JAVA等等來(lái)實(shí)現(xiàn),更有可能奔跑在不同的計(jì)算機(jī)上,然而所有這些程序,這些計(jì)算的結(jié)果意義都是相同的。也就是說(shuō)所有與加法運(yùn)算算法計(jì)算等價(jià)的計(jì)算機(jī)程序都是一回事兒,因而加法算法這個(gè)東西是某種永恒而獨(dú)立的!?
看!我們?cè)谟钪嬷姓业搅四撤N永恒性了,這種永恒性反映了宇宙規(guī)律中某種本質(zhì)上的美!計(jì)算等價(jià)性就和能量守恒定律一樣具有這種高級(jí)的對(duì)稱性,我甚至覺(jué)得計(jì)算等價(jià)性要比能量守恒定律更加深刻!因?yàn)闊o(wú)論如何能量守恒定律仍然是刻畫了物理系統(tǒng)的某種屬性,而計(jì)算等價(jià)性則刻畫的是非常廣泛的信息系統(tǒng)之間的某種守恒和對(duì)稱性,而一切系統(tǒng)都可以被抽象為信息系統(tǒng),甚至是物質(zhì)世界,所以,計(jì)算等價(jià)性是跨越所有系統(tǒng)之間的某種高級(jí)對(duì)稱的、永恒的、美的東西。?
為了進(jìn)一步理解計(jì)算等價(jià)性的威力所在,我們不妨科幻一下。假設(shè)我們能夠用計(jì)算機(jī)模擬某個(gè)人,比如說(shuō)張三的思維過(guò)程了(也就是假設(shè)真正的人工智能可以實(shí)現(xiàn)了)。那也就是說(shuō)我們可以用一個(gè)計(jì)算機(jī)軟件X來(lái)完成對(duì)張三思維的模擬。這樣,這個(gè)軟件就會(huì)在一切與它具有計(jì)算等價(jià)性的程序甚至系統(tǒng)上實(shí)現(xiàn)張三這個(gè)人的思維過(guò)程!比如我們完全有可能讓一大堆分子的碰撞來(lái)實(shí)現(xiàn)X這個(gè)軟件,那么就會(huì)在這大堆分子碰撞的過(guò)程中完成對(duì)張三思維的模擬,也就是說(shuō)張三這個(gè)人的意志蹦到了這一大堆分子系統(tǒng)中去了!更進(jìn)一步,我們還可以找來(lái)足夠多的人比如這個(gè)星球上所有的人來(lái)模擬那大堆分子的碰撞,從而完成軟件X的計(jì)算。這意味著什么?意味著張三這個(gè)人的思維或者說(shuō)意識(shí)在那群人的整體上突現(xiàn)了!很有可能,這些構(gòu)成軟件X的人都并沒(méi)有意識(shí)到在他們上層的張三的意識(shí)的出現(xiàn)。更有趣的是,張三自己很有可能就在那一群人之中呢!?
相信你已經(jīng)能夠參悟到了什么是計(jì)算等價(jià)性的威力了,那么我也相信你能夠理解為什么說(shuō)任何一臺(tái)我們使用的計(jì)算機(jī)都不過(guò)是圖靈機(jī)的翻版了。?
4、意義*?
考慮下面三句話:“請(qǐng)把窗戶關(guān)上!”,“Please close the window!”,“01001110111”。這三句話分別說(shuō)給不同房間中的三個(gè)人。第一句話告訴給一個(gè)中國(guó)人,于是他關(guān)上了窗戶;第二句話告訴了一個(gè)英國(guó)人,他也關(guān)上了窗戶;第三句話告訴的是一個(gè)機(jī)器人,他也關(guān)上了窗戶。這三句話從表面看顯然是完全不一樣的,然而當(dāng)它們讓不同的人來(lái)聽(tīng)的時(shí)候,卻達(dá)到了相同的最終結(jié)果:窗戶被關(guān)上了。那么,我們自然會(huì)想,這三句話有何相同呢?顯然,答案是他們的意義相同。然而什么又是意義呢??
真正回答意義的本質(zhì)是一個(gè)很困難的問(wèn)題,現(xiàn)在人們正在努力理解語(yǔ)義是什么。雖然我們?nèi)詻](méi)有完全回答這個(gè)問(wèn)題,但是,不妨從圖靈機(jī)、計(jì)算以及計(jì)算等價(jià)性的觀點(diǎn)來(lái)考慮該問(wèn)題。如果把中國(guó)人、英國(guó)人、機(jī)器人都看作是圖靈機(jī),而那三句話看作是對(duì)他們的輸入信息,那么最終的結(jié)果就是圖靈機(jī)計(jì)算的輸出。這個(gè)時(shí)候我們看到三種結(jié)果是相同的。也就是說(shuō)這些圖靈機(jī)之間是可以相互模擬的。?
考慮這三句話,顯然它們都具有相同的意義。而根據(jù)前面的敘述,能夠相互模擬的圖靈機(jī)是具有相同的計(jì)算等價(jià)性的。因而描述聽(tīng)到關(guān)窗指令后并按照指令行事的圖靈機(jī)具有相同的計(jì)算等價(jià)性。而這種計(jì)算等價(jià)性就好像是前面說(shuō)到的加法規(guī)則一樣是獨(dú)立于計(jì)算系統(tǒng)、
執(zhí)行機(jī)構(gòu)的。因而,我們能得到下面的圖:

通過(guò)這個(gè)對(duì)比圖,我們不難得出結(jié)論:所謂語(yǔ)言的意義,就是執(zhí)行這個(gè)語(yǔ)言系統(tǒng)的計(jì)算等價(jià)性!?
我們?nèi)绾沃啦煌恼Z(yǔ)言表達(dá)了相同的意義呢?顯然,我們只要有了翻譯就可以明白“請(qǐng)把窗戶關(guān)上”與“Please close the window”具有相同意義,而翻譯所作的工作無(wú)非就是輸入中文信息輸出英文信息這樣的信息轉(zhuǎn)換工作,因而,也就是一個(gè)計(jì)算過(guò)程!?
然而當(dāng)不存在從一個(gè)語(yǔ)言到另外一個(gè)語(yǔ)言的翻譯的時(shí)候,我們也并不能斷定某一個(gè)符號(hào)序列對(duì)于固定的圖靈機(jī)是否有意義。這就是說(shuō),我們雖然不能明白鳥叫是什么含義,但并不能否認(rèn)它們的叫聲可能有意義,因?yàn)橹挥续B自己才能明白叫聲的含義。

五、萬(wàn)能圖靈機(jī)?
1、編碼?
其實(shí)我說(shuō)的這個(gè)“萬(wàn)能圖靈機(jī)”就是計(jì)算機(jī)術(shù)語(yǔ)中的“通用圖靈機(jī)”,英文是Universal?Turing Machine。而我之所以稱之為“萬(wàn)能圖靈機(jī)”完全是因?yàn)檫@個(gè)名字似乎聽(tīng)起來(lái)更加直觀。?
前面已經(jīng)講述了模擬的概念,那么自然會(huì)產(chǎn)生這樣一個(gè)問(wèn)題:存在不存在一臺(tái)圖靈機(jī)能夠模擬所有其他的圖靈機(jī)呢?答案是存在的。這種能夠模擬其他所有圖靈機(jī)的圖靈機(jī)就叫做通用圖靈機(jī),也就是我們所說(shuō)的“萬(wàn)能圖靈機(jī)”。這種機(jī)器在圖靈計(jì)算這個(gè)范疇內(nèi),是萬(wàn)能的!?
“萬(wàn)能圖靈機(jī)”會(huì)怎樣工作呢?假如我把信息x輸入到了圖靈機(jī)M中,M就能計(jì)算出一個(gè)結(jié)果o。那么如果我把x和M的信息都輸入給萬(wàn)能圖靈機(jī),那么萬(wàn)能圖靈機(jī)也會(huì)輸出o,也就是萬(wàn)能圖靈機(jī)可以模擬任何一臺(tái)特殊的圖靈機(jī)。這樣的話我們就可僅僅通過(guò)改變輸入x和M的值就能“改變”萬(wàn)能圖靈機(jī)的程序規(guī)則了。因而也可以認(rèn)為萬(wàn)能圖靈機(jī)就是可以任意編程的。這里的改變兩個(gè)字加上了引號(hào),是因?yàn)槭聦?shí)上任何圖靈機(jī)在誕生之后規(guī)則就不能改變了,因而我們能夠改變“萬(wàn)能圖靈機(jī)”的規(guī)則,僅僅是因?yàn)榭瓷先ナ沁@樣的,其實(shí)根本沒(méi)有改變。?
要說(shuō)明為什么“萬(wàn)能圖靈機(jī)”是存在的,以及它是怎樣模擬其他任何圖靈機(jī)的動(dòng)作的,我們必須先要理解究竟怎樣把任何一臺(tái)圖靈機(jī)輸入到“萬(wàn)能圖靈機(jī)中”,這就需要理解編碼的概念。什么是編碼呢?你可以理解為對(duì)某一堆事物進(jìn)行編號(hào)就是編碼。?
其實(shí)我們每人每天都在跟編碼打交道。每個(gè)人都有一個(gè)身份證,而這個(gè)身份證都有一個(gè)ID號(hào)碼吧?那么這個(gè)號(hào)碼就是你的編號(hào)。上學(xué)的時(shí)候老師給我們每個(gè)人都分配一個(gè)學(xué)號(hào)也是編碼。?
26個(gè)字母能夠被編碼,比如a對(duì)應(yīng)1,b對(duì)應(yīng)2,……,這是顯而易見(jiàn)的。然而任意一個(gè)英文單詞都是可以被編碼的則不那么容易一眼看出來(lái)。事實(shí)上,我們可以按照字典順序把所有的單詞都列出來(lái)。也就是說(shuō)字母順序越靠前,字符長(zhǎng)度越短的單詞排在前面,其次長(zhǎng)單詞,字母順序靠后的單詞就排在后面。比如一種可能的字典順序:?
a, about, an…, bad, be, behave…..?
只要這樣一排好序,我們就能給每個(gè)單詞賦予一個(gè)數(shù)字,最簡(jiǎn)單的方法是,給第一個(gè)字母分配1,第二個(gè)分配2,……,因而我們就給所有的單詞都編碼了。?
下面討論任意一個(gè)圖靈機(jī)能不能被編碼。我們假設(shè)討論的所有圖靈機(jī)的輸入集合都是僅有0,1兩種,而它的輸出也僅僅有0,1,2,3四個(gè)動(dòng)作分別表示前移,后移,涂寫0,涂寫1。
而內(nèi)部狀態(tài)數(shù)最多為10000個(gè)(總之足夠多就可以了)。下面考慮程序。?
假設(shè)圖靈機(jī)的程序表為:?
當(dāng)前內(nèi)部狀態(tài)s 輸入數(shù)值i 輸出動(dòng)作o 下一時(shí)刻的內(nèi)部狀態(tài)s'?
2 1 0 3?
1 0 3 2?
3 0 1 1?
… … … …?
那么我們可以把它寫到一行中,這就是2,1,0,3; 1,0,4,2; 3,0,1,1,注意用“,”分開(kāi)了內(nèi)部狀態(tài),輸入數(shù)值,輸出動(dòng)作和下一時(shí)刻的狀態(tài),而用“;”分開(kāi)了一行一行具體的程序。
這樣無(wú)論這個(gè)表有多大,我們都可以把它寫成這樣的一個(gè)字符串。這個(gè)字符串就相當(dāng)于一個(gè)英文單詞,這就是對(duì)該圖靈機(jī)程序的一個(gè)描述。同理,其他的圖靈機(jī)也能夠得到這樣的一個(gè)單詞描述,那么我們?cè)儆米值湫虻姆椒▽?duì)這些描述進(jìn)行編碼,也就得到了對(duì)所有圖靈機(jī)的編碼。?
如果一臺(tái)圖靈機(jī)的編碼是M,它讀入的信息是x,這樣只要把M和x用“.”號(hào)隔開(kāi)的方法分開(kāi)作為數(shù)據(jù)輸入到“萬(wàn)能圖靈機(jī)”中,運(yùn)用特殊的算法,這個(gè)萬(wàn)能的機(jī)器就能得出對(duì)M計(jì)算x的模擬結(jié)果了。事實(shí)上可以由定理證明萬(wàn)能圖靈機(jī)對(duì)于任意的編碼都是存在的,
在這里我們就不敘述證明過(guò)程了。?
2、自食其尾?
既然“萬(wàn)能圖靈機(jī)”能夠模擬任何一臺(tái)圖靈機(jī)的動(dòng)作,那么它能不能模擬它自己的動(dòng)作呢?答案是肯定的。我們首先看到“萬(wàn)能圖靈機(jī)”也是圖靈機(jī),也有固定的輸入、輸出、狀態(tài)的集合、固定的程序,因而它也能被編碼。于是我們就可以把它自己的編碼信息輸入給它自己了。這就好像一條蛇咬到了自己的尾巴。會(huì)發(fā)生什么呢?自食其尾就會(huì)產(chǎn)生怪圈,雖然我們現(xiàn)在還沒(méi)有看到任何不好的征兆,然而在下一節(jié)里面,我們將看到這種怪圈會(huì)誕生什么樣的結(jié)論。而且我們也會(huì)看到,其實(shí)這個(gè)怪圈是和康托爾對(duì)角線法則、哥德?tīng)柖ɡ碛嘘P(guān)的。?
圖靈機(jī)一旦能夠把程序作為數(shù)據(jù)來(lái)讀寫,就會(huì)誕生很多有趣的情況。首先,存在某種圖靈機(jī)可以完成自我復(fù)制!事實(shí)上,計(jì)算機(jī)病毒就是這樣干的!我們簡(jiǎn)單說(shuō)明一下,這個(gè)特殊的圖靈機(jī)是如何構(gòu)造的。我們假定,如果一臺(tái)圖靈機(jī)是X,那么它的編碼就記為<X>,這
樣能夠自我復(fù)制的圖靈機(jī)T的功能是,把T的編碼<T>寫到紙帶上輸入到“萬(wàn)能圖靈機(jī)”,那么“萬(wàn)能圖靈機(jī)”就能根據(jù)讀入的<T>,在紙帶上再次輸出<T>的一份拷貝<T>’,并且<T>=<T>’。下面就來(lái)大概解釋如何構(gòu)造這樣的T。首先T由兩部分構(gòu)成AB。第一部分A的功能是指導(dǎo)“萬(wàn)能圖靈機(jī)”把B的編碼<B>原封不動(dòng)的打印到紙帶上,這個(gè)時(shí)候紙帶上就有了<B>,如果這個(gè)時(shí)候你想用同樣的方法打印<A>到紙帶上是不行的,因?yàn)闀?huì)出現(xiàn)循環(huán)定義。然而B可以這樣做,讀入紙帶上的信息X,生成能夠打印X的圖靈機(jī):p(X)的編碼<p(X)>打印到紙帶上,并把X和<p(X)>的內(nèi)容前后調(diào)換,有定理保證這樣的圖靈機(jī)是存在的。這樣當(dāng)B讀到紙帶上的信息<B>之后就會(huì)打印出能夠打印<B>的圖靈機(jī)的編碼也就是<A>了,然后把<A>和<B>位置對(duì)換就構(gòu)成了<AB>也就是<P>,所以P把自己進(jìn)行了一次拷貝。初看起來(lái),這種自我復(fù)制的程序是不可能的,因?yàn)檫@包含了無(wú)窮無(wú)盡的怪圈。P要能產(chǎn)生它自己<P>就意味著P中至少包含了一個(gè)<P>,而這個(gè)<P>中又包含了至少一個(gè)<P>……,最后P必然是一個(gè)無(wú)限大的程序,然而我們卻能夠證明P是可能的。?

有了“萬(wàn)能圖靈機(jī)”還能得到很多有趣的結(jié)論,比如假設(shè)有一大群圖靈機(jī),讓它們彼此之間隨機(jī)的相互碰撞,當(dāng)碰到一塊的時(shí)候,一個(gè)圖靈機(jī)可以讀入另一個(gè)圖靈機(jī)的編碼,并且修改這臺(tái)圖靈機(jī)的編碼。那么這樣一個(gè)圖靈機(jī)“湯”中會(huì)產(chǎn)生什么呢?圣塔菲研究所的芳塔娜已經(jīng)研究了這個(gè)實(shí)驗(yàn),并得出了驚人的結(jié)論:在這樣的系統(tǒng)中會(huì)誕生自我繁殖的、自我維護(hù)的類似生命的復(fù)雜組織,而且這些組織能進(jìn)一步聯(lián)合起來(lái)構(gòu)成更大的組織!

六、停機(jī)問(wèn)題?
1、死循環(huán)?
在進(jìn)行正式討論之前,我們先來(lái)看看一個(gè)非常簡(jiǎn)單的猜硬幣游戲。?
假如我的兩個(gè)拳頭中一個(gè)攥著一枚硬幣,另一個(gè)沒(méi)有,然后讓你猜是哪一個(gè)?于是你告訴我左手中有。這時(shí)候我不會(huì)把手張開(kāi),而是背過(guò)身去做一番手腳,然后把拳頭伸過(guò)來(lái),張開(kāi)手!哈,你錯(cuò)了吧,硬幣在右手中!大概傻子都能看出來(lái)我的伎倆之所在!不用說(shuō),采
用這種方法我保證百戰(zhàn)百勝。因?yàn)槲铱偸堑饶阏f(shuō)出來(lái)哪個(gè)手有硬幣之后再動(dòng)態(tài)的改變我的策略。所以,這改變之后的狀態(tài)就已經(jīng)不是你猜的了。?
大概你會(huì)覺(jué)得不可思議:其實(shí)圖靈停機(jī)問(wèn)題就是一個(gè)類似該游戲的原理!?
下面我們來(lái)看看圖靈停機(jī)問(wèn)題是怎么回事兒。讓我們考慮這樣一個(gè)問(wèn)題:存在不存在一個(gè)程序比如說(shuō)P,能夠判斷出任意一個(gè)程序X是否會(huì)在輸入Y的情況下陷入死循環(huán)?我們不妨設(shè)P(X,Y)表示P判斷程序是X,數(shù)據(jù)是Y的結(jié)果。如果存在死循環(huán),那么P(X,Y)就輸出一個(gè)yes。如果不存在死循環(huán),那么P(X,Y)就輸出一個(gè)no。我們的問(wèn)題就是這樣的P(X,Y)存在么?這就是停機(jī)問(wèn)題。所謂的某個(gè)程序X在輸入Y上停機(jī)就是說(shuō)X不存在著死循環(huán),反過(guò)來(lái)如果不停機(jī)就是存在著死循環(huán),因而這里停機(jī)和死循環(huán)是一回事兒。那么,這種判斷停機(jī)問(wèn)題的程序P存在么??
答案是不存在的。下面我可以證明我的這個(gè)結(jié)論。?
我們不妨假設(shè)程序P存在。那么我們可以根據(jù)P設(shè)計(jì)一個(gè)新的程序Q如下:?
X是任何一段程序的編碼:?
Program Q(X){?
m=P(X,X)?
do while (m=no)?
…?
…?
end do?
if m=yes then return

}?
這段程序通俗來(lái)講就是:輸入任何一段程序X,調(diào)用函數(shù)P(X,X)并得到返回值m,如果m=no,也就是說(shuō)根據(jù)P的定義,P判斷出程序X作用到它自己身上X不存在死循環(huán)。那么Q就不停的做do while和end do之間的語(yǔ)句。如果m=yes,我們知道這表示P判斷出程序X在X上存在死循環(huán)。就返回,結(jié)束該函數(shù)。?
我們可以看到,這樣定義的函數(shù)Q(X)是沒(méi)有問(wèn)題的。下面就進(jìn)入關(guān)鍵時(shí)刻了:我們問(wèn)Q這個(gè)程序作用到Q自身的編碼上也就是Q(Q)會(huì)不會(huì)死循環(huán)呢?當(dāng)然我們可以運(yùn)用強(qiáng)有力的函數(shù)P(Q,Q)來(lái)計(jì)算這個(gè)問(wèn)題。?
假設(shè)Q(Q)會(huì)發(fā)生死循環(huán),那么P(Q,Q)就會(huì)返回yes。然而根據(jù)Q函數(shù)的定義,把X=Q代入其中會(huì)發(fā)現(xiàn)由于P(Q,Q)返回的是yes,也就是m=yes,因此Q函數(shù)會(huì)馬上結(jié)束,也就是程序Q(Q)沒(méi)有發(fā)生死循環(huán)。然而如果假設(shè)Q(Q)不發(fā)生死循環(huán),那么P(Q,Q)應(yīng)該返回no,這樣根據(jù)Q函數(shù)的定義,把X=Q代入Q(Q)之中會(huì)得到m=no,這樣程序就會(huì)進(jìn)入do while循環(huán),而這個(gè)循環(huán)顯然是一個(gè)死循環(huán)。因而Q(Q)發(fā)生了死循環(huán)!這又導(dǎo)致了矛盾。?
無(wú)論Q(Q)會(huì)不會(huì)發(fā)生死循環(huán),都會(huì)產(chǎn)生矛盾,然而哪里錯(cuò)了呢?答案只能是最開(kāi)始的前提就錯(cuò)了,也就是說(shuō)我們最開(kāi)始的假設(shè)P(X,Y)能夠判斷任意程序X在輸入Y的時(shí)候是否死循環(huán)是錯(cuò)誤的!也就是說(shuō)這樣的程序P(X,Y)不存在!?
2、如何理解?
也許你會(huì)感覺(jué)整個(gè)論證過(guò)程有些怪異,為什么不存在這種P(X,Y)程序呢?而上面的論證過(guò)程中僅僅說(shuō)P(X,Y)當(dāng)作用到P(Q,Q)上時(shí)會(huì)產(chǎn)生矛盾。似乎并不能說(shuō)明P作用到其他程序上不能判斷是否死循環(huán)。比如你可以考慮編寫這樣一段程序,當(dāng)一發(fā)現(xiàn)某個(gè)程序do?
while(T),這里T總是為真,這樣的語(yǔ)句出現(xiàn)的時(shí)候就判斷這個(gè)程序有死循環(huán)。這顯然是可能的。但問(wèn)題的關(guān)鍵是,你假設(shè)了P(X,Y)能夠判斷任意的一個(gè)程序是否死循環(huán)!最關(guān)鍵的就是這“任意程序”上了。因?yàn)榧偃缒阋呀?jīng)按照剛才提到的判斷是否有do while(T)語(yǔ)句的方法寫出了一個(gè)程序P來(lái)判斷某程序是否死循環(huán),那么我就會(huì)根據(jù)你這個(gè)程序P再構(gòu)造出一個(gè)程序Q,就是利用上面提到的論證方法,我們不妨寫成QP(這里下標(biāo)P的含義表示根據(jù)你的程序P而構(gòu)造的Q)。這樣你的P在遇到了P(Q,Q)這樣的怪東西的時(shí)候無(wú)能為力了!?可能你還不服輸,于是你又改進(jìn)了你的程序變成了P’,這個(gè)時(shí)候P’能夠判斷包含了QP這個(gè)程序時(shí)候的所有程序情況了。那么我又會(huì)根據(jù)你的新程序P’來(lái)構(gòu)造出一個(gè)更新的QP’,你的程序P’仍然不能判斷,當(dāng)然你還可以構(gòu)造P’’,P’’’,……,我也會(huì)跟著構(gòu)造QP’’,QP’’’,……,總而言之這個(gè)過(guò)程是無(wú)窮的!因?yàn)槲铱傇谀阒髽?gòu)造程序,所以你是水我是船,水漲船高,我總能比你高一級(jí)別!?
這很像剛開(kāi)始敘述的那個(gè)猜硬幣的游戲。你想猜對(duì)我的硬幣,就必須告訴我一個(gè)答案是左手還是右手,然而關(guān)鍵問(wèn)題是我總能根據(jù)你做出的答案動(dòng)態(tài)調(diào)整,使得你永遠(yuǎn)也猜不對(duì)!
停機(jī)問(wèn)題也是如此,我總能根據(jù)你的程序P來(lái)構(gòu)造你的P判定不出來(lái)的問(wèn)題Q,我總會(huì)贏!
很簡(jiǎn)單,因?yàn)槟憧傄谖抑皹?gòu)造好P呀,就相當(dāng)于你總要先說(shuō)出硬幣在哪個(gè)手!?
3、對(duì)角線刪除方法?
我在開(kāi)始的時(shí)候就提到了圖靈停機(jī)問(wèn)題、哥德?tīng)柖ɡ淼鹊榷紒?lái)源于康托爾的對(duì)角線刪除法則。那么,下面我們就來(lái)看看,如果運(yùn)用對(duì)角線刪除法則如何證明圖靈停機(jī)問(wèn)題呢?采用這種全新的證明思路,也許你會(huì)更加清楚地認(rèn)識(shí)到停機(jī)問(wèn)題的本質(zhì)。?
問(wèn)題沒(méi)有變,是否存在一個(gè)程序P(X,Y)判斷出來(lái)任意一個(gè)程序X當(dāng)輸入Y的時(shí)候是否有死循環(huán),或者說(shuō)是否停機(jī)。?
我們?nèi)匀挥梅醋C法,假設(shè)這樣的P(X,Y)是存在的。而我們知道程序X本身是可以被編碼的。也就是可以為所有的程序進(jìn)行編號(hào):1,2,3,……,而數(shù)據(jù)Y本身也是這樣的編號(hào)1,2,3,……,因而我們就可以把每一對(duì)X和Y的組合排列在一張表上。比如列表示的是數(shù)據(jù)Y,而行表示的是程序X,這樣P(X,Y)的值也就是yes或no就可以寫在第X行第Y列的對(duì)應(yīng)位置上,表示P(X,Y)判斷出的X作用在輸入Y上是否會(huì)死循環(huán)的結(jié)果。比如下面的表就是一個(gè)示例:?

1 2 3 4 5 6 …… Y ……?
1 yes no no yes yes no …… yes ……?
2 no no yes yes no yes …… no ……?
… ……………………………………………………?
X no yes no yes yes no …… yes ……?
… ……………………………………………………?
到這里沒(méi)有發(fā)生什么毛病。我們知道上表中的每一個(gè)行都表示一個(gè)確定的程序作用到不同的數(shù)據(jù)上所得到的結(jié)果。比如程序X作用在1,2,3,4,……,Y,……上給出的結(jié)果就是一個(gè)序列:?
no,yes,no,yes,yes,no,……,yes,……?
下面我們把上表對(duì)角線上的元素挑出來(lái)。也就是專門找那些第1行第1列,第2行第2列,……這樣的元素就可以得到一個(gè)序列:?
yes,no,no,yes, ……?
而根據(jù)這個(gè)序列我們完全可以構(gòu)造這樣一個(gè)反序列:?
no,yes,yes,no, ……?

也就是說(shuō)這個(gè)序列在每一個(gè)位上都與前一個(gè)對(duì)角線序列不同!這個(gè)序列就稱為對(duì)角線刪除序列。那么我問(wèn),這個(gè)對(duì)角線刪除序列是否在我們表中的某一行上呢?答案是否定的!這個(gè)序列必然不在表中。因?yàn)樗牡谝粋€(gè)元素與1,1不同,第二個(gè)元素與2,2不同,……。換一種方式解釋就是:假設(shè)對(duì)角線刪除序列的確在表上列出來(lái)了,那么這個(gè)序列必然在某個(gè)固定的行,比如說(shuō)就在第1001行。那么我們就要考慮這第1001行,第1001列的元素,我們知道根據(jù)序列的構(gòu)造方法(1001,1001)對(duì)應(yīng)表中的元素是與序列上的這個(gè)元素不同的!因而產(chǎn)生了矛盾,也就是說(shuō)這個(gè)構(gòu)造出來(lái)的對(duì)角線刪除序列不在表中!?
我們完全可以設(shè)計(jì)出一段程序Q使得Q作用在1,2,……,X,……上產(chǎn)生的序列就是對(duì)角線刪除序列,而對(duì)角線刪除序列不在表中就意味著程序P并不能判斷出程序Q作用在任意輸入上是否停機(jī)。其實(shí)這里的程序Q就是前一節(jié)論證停機(jī)問(wèn)題的程序Q。?
用對(duì)角線刪除的證明方法來(lái)看究竟哪里出錯(cuò)了呢?錯(cuò)誤就出在我們假設(shè)程序P能夠得到這樣一張完整的表,這張表對(duì)所有的程序計(jì)算得到是否停機(jī)的答案。?
4、意味著什么??
我們已經(jīng)看到了,的確存在著一類問(wèn)題我們?nèi)祟惸軜?gòu)造出來(lái),而圖靈機(jī)是不能解的,。我們知道圖靈機(jī)不能解的問(wèn)題也就是一切計(jì)算機(jī)不能解的問(wèn)題,因而這類問(wèn)題也叫做不可計(jì)算的。因此,必然存在著計(jì)算機(jī)的極限。實(shí)際上,運(yùn)用我們前面敘述的計(jì)算等價(jià)性原理,有
很多問(wèn)題都可以被歸結(jié)為圖靈停機(jī)問(wèn)題,也就是說(shuō)圖靈停機(jī)問(wèn)題揭示了宇宙中某種共性的東西,所有那些計(jì)算機(jī)不能解決的問(wèn)題從本質(zhì)上講都和圖靈停機(jī)問(wèn)題是計(jì)算等價(jià)的。比如在最開(kāi)始我們就提到的希爾伯特第10問(wèn)題就是一個(gè)典型的不可計(jì)算問(wèn)題!還有很多問(wèn)題是不可計(jì)算的,尤其是那些涉及到計(jì)算所有程序的程序。比如是否存在一個(gè)程序能夠檢查所有的計(jì)算機(jī)程序會(huì)不會(huì)出錯(cuò)?這是一個(gè)非常實(shí)際的問(wèn)題。我們都知道計(jì)算機(jī)程序特別容易犯錯(cuò)誤,為了檢查出某段計(jì)算機(jī)程序的錯(cuò)誤,我們?nèi)祟惥捅仨殞?duì)這個(gè)程序進(jìn)行人工的檢查。那么能不能發(fā)明一種聰明的計(jì)算機(jī)軟件,輸進(jìn)去任何一段計(jì)算機(jī)程序,這個(gè)軟件就會(huì)自動(dòng)幫你檢查輸入的程序是否有錯(cuò)誤?答案仍然是不存在的,其實(shí)這個(gè)問(wèn)題可以被證明和圖靈停機(jī)問(wèn)題實(shí)質(zhì)上是一樣的!于是我們的夢(mèng)想又破滅了!?

圖靈停機(jī)問(wèn)題也和復(fù)雜系統(tǒng)的不可預(yù)測(cè)性有關(guān)。我們總希望能夠預(yù)測(cè)出復(fù)雜系統(tǒng)的運(yùn)行結(jié)果。那么能不能發(fā)明一種聰明的程序,輸入進(jìn)去某個(gè)復(fù)雜系統(tǒng)的規(guī)則,輸出的是這些規(guī)則運(yùn)行的結(jié)果呢?從原則上講,這種事情是不可能的。它也是和圖靈停機(jī)問(wèn)題等價(jià)的。因而,
我們得出來(lái)的結(jié)論就是:要想弄清楚某個(gè)復(fù)雜系統(tǒng)運(yùn)行的結(jié)果,唯一的辦法就是讓這樣的系統(tǒng)實(shí)際運(yùn)作,沒(méi)有任何一種計(jì)算機(jī)算法能夠事先給出這個(gè)系統(tǒng)的運(yùn)行結(jié)果。你很有可能不同意我的觀點(diǎn),因?yàn)楫吘刮覀兡軌虬l(fā)明很多預(yù)測(cè)復(fù)雜系統(tǒng)的方法,而不需要一定要讓復(fù)雜系統(tǒng)去真實(shí)的運(yùn)作。但是,你還是沒(méi)有理解我這里的問(wèn)題。我們強(qiáng)調(diào)的是不存在一個(gè)通用的程序能夠預(yù)測(cè)所有復(fù)雜系統(tǒng)的運(yùn)行結(jié)果,但并沒(méi)有說(shuō)不存在一個(gè)特定的程序能夠預(yù)測(cè)某個(gè)或者某類復(fù)雜系統(tǒng)的結(jié)果。那么這種特定的程序怎么得到呢?顯然需要我們?nèi)藶榈鼐幊痰玫?#xff01;也就是說(shuō)存在著某些機(jī)器做不了的事情,而人能做。這似乎為人工智能的崇拜者給以了沉重的打擊!?
人工智能真的是不可能的么?彭羅斯曾經(jīng)寫過(guò)一本科學(xué)明著:《皇帝新腦》來(lái)論證人工智能的不可能性。它所運(yùn)用的方法就是我們上面的邏輯。因?yàn)閷?duì)于任何一個(gè)人工智能程序來(lái)說(shuō),總存在著它解決不了的問(wèn)題!但是似乎我們?nèi)祟悈s不受這種限制,我們總是能夠發(fā)現(xiàn)一
個(gè)程序是否有死循環(huán),總是能夠找到對(duì)某類復(fù)雜系統(tǒng)預(yù)測(cè)的方法,并且我們還能構(gòu)造出來(lái)圖靈停機(jī)問(wèn)題這樣的問(wèn)題。然而事實(shí)并沒(méi)有那么簡(jiǎn)單,反對(duì)者馬上就會(huì)論證到,其實(shí)針對(duì)某一個(gè)具體的人,比如說(shuō)就是彭羅斯,我們也能夠運(yùn)用前面的方法構(gòu)造出一個(gè)彭羅斯自己不能解的問(wèn)題!然而事實(shí)情況下要構(gòu)造彭羅斯不可解的問(wèn)題太麻煩了,而我們只是說(shuō)原則上講這種問(wèn)題是存在的!因而計(jì)算機(jī)超越不了的問(wèn)題,人自己也超越不了,所以說(shuō)人工智能是可能的!?
看看上面提到的兩方面論證似乎都很有道理,究竟哪個(gè)正確呢?真的會(huì)存在某個(gè)人不可解的類似圖靈停機(jī)的問(wèn)題么?其實(shí)要想徹底回答這個(gè)問(wèn)題就相當(dāng)于問(wèn)超越圖靈計(jì)算的限制是否可能?如何超越圖靈機(jī)停機(jī)問(wèn)題呢?下面我們將詳細(xì)討論一下這個(gè)問(wèn)題。?
5、超越圖靈計(jì)算*?
我們?nèi)匀挥媚莻€(gè)猜硬幣的游戲?yàn)槔齺?lái)說(shuō)明。?
在進(jìn)行了幾輪猜硬幣的游戲之后,你已經(jīng)很惱火了,認(rèn)為這樣的游戲不公平。于是你想了一個(gè)妙招來(lái)對(duì)付我:每當(dāng)我讓你說(shuō)硬幣在哪個(gè)手中時(shí),你先胡亂的說(shuō)一個(gè)答案,比如左手。
這個(gè)時(shí)候我會(huì)根據(jù)你的答案動(dòng)態(tài)調(diào)整把硬幣放到了右手中。這個(gè)時(shí)候你趕緊搶著說(shuō),不對(duì),我猜你的硬幣在右手!我沒(méi)辦法只能再次調(diào)整策略把硬幣放到了左手。你又趕快說(shuō):是在左手!……。就是這樣,你也學(xué)會(huì)了我的方法,根據(jù)我的策略不斷調(diào)整你的策略從而讓我不可能贏你。能不能把這種方法用到超越圖靈停機(jī)問(wèn)題呢??
前面我們已經(jīng)看到了類似這樣的過(guò)程。假如你寫出了一個(gè)程序P能夠判斷所有程序是否停機(jī),那么我就能夠構(gòu)造一個(gè)程序Q是你的程序判斷不了的。這個(gè)時(shí)候還沒(méi)有結(jié)束,你又根據(jù)我的Q構(gòu)造了新的程序P’,然而我又能構(gòu)造一個(gè)程序Q’仍然讓你的程序P’解決不了。
但是你沒(méi)有結(jié)束,又構(gòu)造了新的程序P’’,我于是又構(gòu)造Q’’……。?
乍一看,似乎這個(gè)過(guò)程并不能說(shuō)明任何問(wèn)題。原因很簡(jiǎn)單,我要求的是構(gòu)造一個(gè)固定的程序P判斷出所有程序是否停機(jī)。而你給我的并不是一個(gè)具體的實(shí)實(shí)在在的程序,而是一個(gè)不斷變化的捉摸不定而虛無(wú)飄渺的程序序列!并且你的這些總在變化的程序序列總是要根據(jù)我構(gòu)造的程序才會(huì)確定改變!?
首先一點(diǎn)值得肯定的是,運(yùn)用這種方法,我們的確能夠超越圖靈計(jì)算了,只要反復(fù)不停的變換我們的程序就不可能找出它不能解的問(wèn)題。然而,另一方面又會(huì)讓我們很失望:這樣的變換過(guò)程并不能給出一個(gè)實(shí)實(shí)在在的程序來(lái)!我們擁有的僅僅是不斷改變的程序序列,而

不是一個(gè)實(shí)際存在的程序!?
這正是問(wèn)題的關(guān)鍵所在:要想徹底超越圖靈計(jì)算的限制,我們必須要放棄程序的實(shí)在性。也就是說(shuō)程序在每時(shí)每刻都要變化成不是它自己了。那么這樣的一個(gè)不斷變化得不是它自己的怪東西存在么??
幾千年的人類科學(xué)一直在研究實(shí)實(shí)在在的東西。無(wú)論是原子、分子還是計(jì)算機(jī)程序,它們必須是一個(gè)實(shí)實(shí)在在存在的個(gè)體,在這種前提下科學(xué)才能夠?qū)λM(jìn)行研究!如果當(dāng)我們研究它的時(shí)候,它已經(jīng)變得不是它自己了,那么科學(xué)就對(duì)它無(wú)能為力了。然而,我不禁要提出
這樣的問(wèn)題:真的一切都是固定不變的存在著么,有沒(méi)有某種東西在每一時(shí)刻都在變得不是它自己了呢??
這個(gè)問(wèn)題似乎是一個(gè)古老的哲學(xué)問(wèn)題了記得赫拉克里特就曾經(jīng)提到過(guò):一個(gè)人不能兩次踏入同一條河流。我想他說(shuō)的正是這樣的問(wèn)題:因?yàn)楹恿髟诿繒r(shí)每刻都不再是它自己了。河流是一大群流動(dòng)的水滴構(gòu)成的整體,在每時(shí)每刻這些水滴都在不停的運(yùn)動(dòng)、流逝,因而當(dāng)你
兩次踏入這條河的時(shí)候,所有的水滴可能都不一樣了,那么我們?cè)趺茨苷f(shuō)這些水滴構(gòu)成的整體還是同一條河呢??
再考慮我們?nèi)俗约骸D愫芸赡苣弥粋€(gè)你3歲時(shí)候的照片興奮的對(duì)你的朋友說(shuō):“看,我3歲的時(shí)候多可愛(ài)呀!”。然而你這句話意味著什么呢?意味著照片反映的3歲時(shí)的你和現(xiàn)在的你是同一個(gè)個(gè)體!然而,3歲的你和現(xiàn)在的你是多么不同呀!我們知道,你無(wú)疑就是一大堆細(xì)胞構(gòu)成的一個(gè)整體。而基本生理學(xué)知識(shí)告訴我們,實(shí)際上人體的所有細(xì)胞每隔大約4年就會(huì)因?yàn)樾玛惔x的作用全部更新一遍。也就是說(shuō),你的細(xì)胞全被掉了包了,更何況3歲時(shí)候的你和現(xiàn)在的你差了多少個(gè)4年呀?那憑什么說(shuō)那個(gè)3歲時(shí)候的你就是現(xiàn)在的你呢??
這個(gè)問(wèn)題看似玄學(xué),不過(guò)我認(rèn)為現(xiàn)在我們的確應(yīng)該認(rèn)真對(duì)待該問(wèn)題了。盡管從分析的角度來(lái)說(shuō)3歲的你和現(xiàn)在的你的確不是一個(gè)個(gè)體,然而常識(shí)告訴我們,這兩個(gè)你的確都是同一個(gè)人!那就意味著,你這個(gè)個(gè)體并不是一成不變的一些固定的細(xì)胞,而是一個(gè)每時(shí)每刻都在變化,都在更新的一個(gè)一大堆細(xì)胞組成的構(gòu)形。這個(gè)構(gòu)形在每時(shí)每刻都要利用更新的一大堆細(xì)胞去維持自己的存在!我們得到了什么?和我們前面敘述的超越圖靈機(jī)的討論結(jié)合起來(lái),就發(fā)現(xiàn),原來(lái)人還有赫拉克里特的河流這種東西剛好就滿足那種超越圖靈計(jì)算的要求。也就是說(shuō)人還有赫拉克里特的河流在每時(shí)每刻都在不停的更新它自己從而變得不是它自己了。那么很有可能,某一種做類似變化的個(gè)體的變化規(guī)律就是不停超越它自己的圖靈停機(jī)程序,這樣的虛幻的個(gè)體就真的能夠超越圖靈計(jì)算了!?
總結(jié)前面的討論,我們不難給出結(jié)論,一個(gè)固死的能夠被寫出就不再變化的程序不可能超越圖靈計(jì)算的限制,然而如果一個(gè)程序每時(shí)每刻都已經(jīng)變化得不是它自己了,這個(gè)程序就能夠超越圖靈計(jì)算。聯(lián)系到人這個(gè)個(gè)體,我們能得到:因?yàn)槊繒r(shí)每刻的人都已經(jīng)由于細(xì)胞的變化而變得不再是它自己了,所以人是超越圖靈計(jì)算的!還記得在前面我提到的一個(gè)問(wèn)題么:
“人腦的信息處理過(guò)程能不能被表示成固定的程序呢?”。我這里的答案就是否定的!也就是說(shuō)人腦信息處理的過(guò)程并不是一個(gè)固定的程序!如何制造真正的人工智能呢?很顯然,我們不能用一個(gè)簡(jiǎn)單的程序來(lái)構(gòu)造,而必須是利用其它的方法,這個(gè)方法是什么呢?現(xiàn)在還沒(méi)有結(jié)論!?
七、懸而未決?
到此,我已經(jīng)把全部的有關(guān)圖靈機(jī)、可計(jì)算理論、停機(jī)問(wèn)題的一些重要概念介紹完了。
然而在計(jì)算理論這個(gè)領(lǐng)域里還有很多重要的問(wèn)題沒(méi)有介紹。但我不得不根據(jù)我的興趣進(jìn)行取舍。在整個(gè)介紹過(guò)程中,一方面我介紹了人們已經(jīng)得出來(lái)的結(jié)論,另一方面,我盡量把一些沒(méi)有解決的問(wèn)題展現(xiàn)給大家。回憶起來(lái),這些懸而未決的問(wèn)題包括下面幾個(gè):

1、 是否一切的信息處理過(guò)程都具有固定的程序呢?人腦有固定的程序么??
2、 如何用計(jì)算機(jī)程序進(jìn)行歸納?能對(duì)所有事物進(jìn)行一勞永逸的歸納算法是否存在??
3、 什么是意義,更確切的,什么是語(yǔ)義??
4、 圖靈停機(jī)問(wèn)題是不可超越的么??
5、 人工智能是否可能??
還有很多問(wèn)題在本文中沒(méi)有提出來(lái),然而我認(rèn)為也是相當(dāng)重要的。例如,我們?nèi)绾斡脠D靈機(jī)模型表示一般的學(xué)習(xí)過(guò)程?若干小的圖靈機(jī)是如何自動(dòng)的構(gòu)造出更大的圖靈機(jī)的(這就是萬(wàn)事萬(wàn)物自組織的過(guò)程)?生命的目的性如何用圖靈機(jī)模型表示??
另外最近的計(jì)算主義已經(jīng)把宇宙中一切的過(guò)程都?xì)w結(jié)為計(jì)算過(guò)程了,也就是說(shuō)到處都是圖靈機(jī)正在做運(yùn)算。那么我們能不能從圖靈機(jī)的角度探討時(shí)間和空間的本質(zhì)呢?我們知道,計(jì)算理論另外一大類問(wèn)題就是探討計(jì)算的時(shí)間和空間復(fù)雜度,那么這種計(jì)算的時(shí)間和空間與
我們這個(gè)宇宙的時(shí)間和空間有什么關(guān)系呢??
我希望,在新世紀(jì)的今天,人們會(huì)最終解答這些問(wèn)題!

?

轉(zhuǎn)載于:https://www.cnblogs.com/hjlweilong/p/9434534.html

總結(jié)

以上是生活随笔為你收集整理的离散数学图灵机文章的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。