帶你深入理解圖靈機(jī)--什么是圖靈機(jī)、圖靈完備

上一篇介紹了天才圖靈所做的時代背景,我們了解那個時代對于數(shù)學(xué)邏輯,可計算理論的發(fā)展。站在更大的時間和空間維度來看,我們看問題的角度會有更高的視角。

這篇我們來具體看下圖靈機(jī)到底是什么?

上一篇文章我們知道圖靈機(jī)首次提出在圖靈的一篇論文《論數(shù)字計算在決斷難題中的應(yīng)用》中提出,原論文題目為《On Computable Numbers, with an Application to the Entscheidungsproblem》,英文好的同學(xué)可以從https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf 這個鏈接中查看原版的論文內(nèi)容。

一、圖靈機(jī)的組成

網(wǎng)上有一張經(jīng)典的圖片來表達(dá)圖靈機(jī)的構(gòu)成,圖如下:


圖靈機(jī)的組成.png

這張圖片什么意思?這么一個簡單的機(jī)器/裝置怎么會所有電子計算機(jī)的理論模型?

相信大家看到這張圖后都有這樣的疑問,下面筆者帶來由淺入深去理解圖靈機(jī)的組成。
圖靈的基本思想是用機(jī)器來模擬人們用紙筆進(jìn)行數(shù)學(xué)運(yùn)算的過程,它運(yùn)算過程看作下列兩種簡單的動作:

  • 在紙上寫上或擦除某個符號;
  • 把注意力從紙的一個位置移動到另一個位置;

邏輯結(jié)構(gòu)上圖靈機(jī)有四個部分組成

  1. 一個無限長的存儲帶,帶子有一個個連續(xù)的存儲格子組成,每個格子可以存儲一個數(shù)字或符號
  2. 一個讀寫頭,讀寫頭可以在存儲帶上左右移動,并可以讀、修改存儲格上的數(shù)字或符號
  3. 內(nèi)部狀態(tài)存儲器,該存儲器可以記錄圖靈機(jī)的當(dāng)前狀態(tài),并且有一種特殊狀態(tài)為停機(jī)狀態(tài)
  4. 控制程序指令,指令可以根據(jù)當(dāng)前狀態(tài)以及當(dāng)前讀寫頭所指的格子上的符號來確定讀寫頭下一步的動作(左移還是右移),并改變狀態(tài)存儲器的值,令機(jī)器進(jìn)入一個新的狀態(tài)或保持狀態(tài)不變。

當(dāng)然這些只是理想的圖靈機(jī),因?yàn)楝F(xiàn)實(shí)中不存在無限長的存儲帶,更加圖靈的理論這樣的一臺裝置就能模擬人類所能進(jìn)行的任何計算過程。是不是很神奇?我相信你肯定不相信,不過圖靈是經(jīng)過嚴(yán)格的數(shù)學(xué)證明,下面我們來看看圖靈機(jī)的計算過程。

二、圖靈機(jī)的運(yùn)行機(jī)制

圖靈機(jī)工作步驟

  1. 準(zhǔn)備
      - 存儲帶子上的格子初始話
      - 設(shè)置內(nèi)部狀態(tài)存儲器當(dāng)前狀態(tài)
      - 讀寫頭設(shè)置初始在存儲帶上所做的格子位置
      - 準(zhǔn)備好控制指令,即控制程序。
  1. 反復(fù)執(zhí)行以下步驟,直到停機(jī)
 - 讀寫頭讀出當(dāng)前格子的數(shù)字或符號
 - 根據(jù)當(dāng)前狀態(tài)和讀到的字母或符號找到對應(yīng)的控制指令
 - 根據(jù)控制指令,執(zhí)行以下三個動作
    1. 讀寫頭在格子上擦除或?qū)懭胍粋€數(shù)字或符號
    2. 變更狀態(tài)到一個新狀態(tài)
    3. 讀寫頭向左或向右移動一格

估計你還是不明白,別急??催^《三體》的同學(xué)都知道三體人把地球人看做“蟲子”,三體人的維度比地球三維世界高,就好像我們?nèi)祟惏芽聪x子一樣。
下面,我們把蟲子放到一個二維的世界中,以蟲子為例,給大家來說明最簡單的圖靈機(jī)模型(注:該例子非原創(chuàng))。

假設(shè)理想的情況一:

  1. 蟲子所處的二維世界是一個無限長的紙帶,這個紙帶上被分成了若干小的方格,而每個方格都僅僅只有黑和白兩種顏色。紙帶的片段為:


    蟲子所在二維紙帶.png
  2. 假設(shè)蟲子的感官只有眼睛,并且它的視力短的可憐,只能看到當(dāng)前所處格子的顏色

  3. 蟲子可以向前爬一個格子或向后爬一個格子

  4. 蟲子的操作系統(tǒng)、程序?yàn)椋何覀兗僭O(shè)黑色是食物區(qū),蟲子吃到食物后前移一格,白色是空白區(qū),沒有食物后退一格,

輸入 輸出
黑色 前移一格
白色 后移一格

在這個情況中格子的顏色是蟲子的輸入信息,集合為IN={黑色,白色},輸出集合為 OUT= {前移一格,后移一格}
從開始位置開始,蟲子會怎么移動呢?

  1. 開始是黑色,蟲子前移一格,到達(dá)第2格
  2. 第2還是黑色,蟲子前移一格,到達(dá)第3格
  3. 第3格還是黑色,蟲子前移一格,到達(dá)第4格
  4. 第4格為白色,蟲子后移一格,回到第3格
  5. 可見,這條帶子上,蟲子在第4格和第3格來回移動循環(huán)不止。
假設(shè)理想的情況二

現(xiàn)實(shí)中蟲子肯定不可能傻到無線循環(huán),蟲子會有饑餓、吃飽的感受,食物吃了后也會消失。因此我們在情況下中改進(jìn)下模型。

  1. 蟲子在黑色的格子時,如果是饑餓狀態(tài),吃掉食物把格子變成白色;如果是吃飽狀態(tài),后移一格
  2. 蟲子在白色的格子時,如果是饑餓狀態(tài),停下來等食物長出來涂黑;如果是吃飽狀態(tài),前移一格
  3. 蟲子的操作系統(tǒng)、程序?yàn)椋?/li>
輸入 當(dāng)前狀態(tài) 輸出 下一個狀態(tài)
黑色 吃飽 后移一格 饑餓
黑色 饑餓 吃完食物格子變白(不移動) 吃飽
白色 吃飽 前移一格 饑餓
白色 饑餓 等待食物長出來涂黑(不移動) 吃飽

在這種情況中,輸入集合為IN={黑色,白色},輸出集合為 OUT= {前移一格,后移一格,吃掉食物涂白,等待食物長出來涂黑},內(nèi)部狀態(tài)S={吃飽,饑餓}

二維紙帶不變,從開始位置開始,蟲子初始是饑餓狀態(tài),蟲子會怎么移動呢?

  1. 第1格是黑色,蟲子饑餓,吃掉食物格子變白,蟲子新狀態(tài)為吃飽
  2. 第1格為白色,蟲子吃飽,蟲子前移一格,到達(dá)第2格,蟲子新狀態(tài)為饑餓
  3. 第2格為黑色,蟲子饑餓,吃掉食物格子變白,蟲子新狀態(tài)為吃飽
  4. 第2格為白色,蟲子吃飽,蟲子前移一格,到達(dá)第3格,蟲子新狀態(tài)為饑餓
  5. 第3格為黑色,蟲子饑餓,吃掉食物格子變白,蟲子新狀態(tài)為吃飽
  6. 第3格為白色,蟲子吃飽,蟲子前移一格,到達(dá)第4格,蟲子新狀態(tài)為饑餓
  7. 第4格為白色,蟲子饑餓,等待食物長出來涂黑,蟲子新狀態(tài)為吃飽
  8. 第4格為黑色,蟲子吃飽,蟲子后退一格,到達(dá)第3格,蟲子新狀態(tài)為饑餓
  9. 這時,第3格已經(jīng)長出來食物,是黑色,因此流程和第5步的情況一樣了

情況二,小蟲的行為比情況以復(fù)雜了一些,但小蟲最后仍然會落入無限循環(huán)當(dāng)中。

到此,如果你已經(jīng)徹底搞懂了二維蟲子是怎么移動的,那么你已經(jīng)明白了圖靈機(jī)的工作原理了!因?yàn)閺谋举|(zhì)上講,最后的小蟲模型就是一個圖靈機(jī)!

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

剛才用二維蟲子說明了圖靈機(jī)的工作原理,相信你的第一個反映就是,這樣的模型太簡單了!
他根本說明不了現(xiàn)實(shí)世界中的任何問題!下面,我就要試圖說服你,圖靈機(jī)這個模型是偉大的!

其實(shí)蟲子的所有決策和行為都可以抽象成一個圖靈機(jī)模型。

為什么可以做這種抽象呢?
其實(shí)可以把二維蟲子的模型進(jìn)行更多擴(kuò)展,以和現(xiàn)實(shí)世界基本或完全一致。因?yàn)槎S蟲子模型是以一切都簡化的前提開始的,所以它的確是太太簡單了。

然而,我們可以把二維蟲子的輸入集合、輸出行動集合、內(nèi)部狀態(tài)集合進(jìn)行擴(kuò)大,這個模型就一下子實(shí)用多了。

  1. 二維蟲子完全可以處于一個三維的空間中而不是簡簡單單的紙帶。
  2. 二維蟲子的視力很好,它一下子能讀到方圓500米的信息。
  3. 二維蟲子也可以擁有其他的感覺器官,比如嗅覺、聽覺等等,而這些改變都僅僅是擴(kuò)大了輸入集合的維數(shù)和范圍,并沒有其他更本質(zhì)的改變。
  4. 二維蟲子可能的輸出集合也是異常的豐富,它不僅僅能移動自己,還可以盡情的改造它所在的自然界。
  5. 進(jìn)一步的,二維蟲子的內(nèi)部狀態(tài)可能非常的多,而且控制它行為的程序可能異常復(fù)雜

那么二維蟲子會有什么本事呢?這就很難說了,因?yàn)殡S著小蟲內(nèi)部的狀態(tài)數(shù)的增加,隨著它所處環(huán)境的復(fù)雜度的增加,我們正在逐漸失去對二維蟲子行為的預(yù)測能力。

但是所有這些改變?nèi)匀粵]有逃出圖靈機(jī)的模型:
"輸入集合、輸出集合、內(nèi)部狀態(tài)、固定的程序指令!"
就是這四樣?xùn)|西抓住了二維蟲子信息處理的根本。

四、 什么是圖靈完備

維基百科解釋:

可圖靈指在可計算性理論中,編程語言或任意其他的邏輯系統(tǒng)如具有等用于通用圖靈機(jī)的計算能力。換言之,此系統(tǒng)可與通用圖靈機(jī)互相模擬。

上面的解釋比較抽象,通過上面的例子理解了什么是圖靈機(jī),圖靈完備其實(shí)就很很簡單理解了。

簡單來說,能夠抽象成圖靈機(jī)的系統(tǒng)或編程語言就是圖靈完備的;一切可計算的問題圖靈機(jī)都能計算,因此滿足這樣要求的邏輯系統(tǒng)、裝置或者編程語言就叫圖靈完備的。

因此可見,二維蟲子是圖靈完備的。

Bitcoin的腳本由于沒有條件分支,循環(huán)等控制指令,回到上面的蟲子的例子,蟲子就不能根據(jù)當(dāng)前狀態(tài),判斷選擇移動還是吃食物等一系列的動作,因此不滿足圖靈機(jī)的模型,不是圖靈完備的。

五、人也是圖靈機(jī)?

大腦操作系統(tǒng).png

我們?nèi)四懿荒芤脖贿@樣的抽象呢?顯然是可以的。

其實(shí)我們每一個會決策、會思考的人就可以被抽象的看成一個圖靈機(jī),也就是笑來老師一直說:每個人都有自己的操作系統(tǒng),因?yàn)橛性J(rèn)知能力,還可以自己升級操作系統(tǒng)。

輸入狀態(tài)集合就是你所處的環(huán)境中能夠看到、聽到、聞到、感覺到的所有一起,可能的輸出集合就是你的每一言每一行,以及你能夠表達(dá)出來的所有表情動作。內(nèi)部狀態(tài)集合則要復(fù)雜得多。因?yàn)槲覀兛梢园讶我庖粋€神經(jīng)細(xì)胞的狀態(tài)組合看作是一個內(nèi)部狀態(tài),那么所有可能的神經(jīng)細(xì)胞的狀態(tài)組合將是天文數(shù)字!這就是人類的記憶。只要圖靈機(jī)具有了內(nèi)部狀態(tài),它就相應(yīng)的具有了記憶。

這樣理解的話,還有兩個問題:

  1. 圖靈機(jī)的程序指令是固定的。但是人類有學(xué)習(xí)能力,也就是說人的大腦會進(jìn)化,操作系統(tǒng)會升級,所以大腦的實(shí)際程序規(guī)則是不固定,似乎圖靈機(jī)模型包含不了。
  2. 人類的很多現(xiàn)象似乎都能被圖靈機(jī)包括:情緒、情感等

這個問題,其實(shí)圖靈也已經(jīng)考慮過了,其實(shí)就是我們現(xiàn)在一個大熱門:AI,人工智能,計算機(jī)是否真的能實(shí)現(xiàn)人工智能。下一篇我們講和大家聊聊這個話題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內(nèi)容