简述什么是图灵机_带你深入理解图灵机--什么是图灵机、图灵完备
原標題:帶你深入理解圖靈機--什么是圖靈機、圖靈完備
我們知道圖靈機首次提出在圖靈的一篇論文《論數字計算在決斷難題中的應用》中提出,原論文題目為《On Computable Numbers, with an Application to the Entscheidungsproblem》,英文好的同學可以從https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf這個鏈接中查看原版的論文內容。
一、圖靈機的組成
網上有一張經典的圖片來表達圖靈機的構成,圖如下:
圖靈機的組成.png
這張圖片什么意思?這么一個簡單的機器/裝置怎么會所有電子計算機的理論模型?
相信大家看到這張圖后都有這樣的疑問,下面筆者帶來由淺入深去理解圖靈機的組成。
圖靈的基本思想是用機器來模擬人們用紙筆進行數學運算的過程,它運算過程看作下列兩種簡單的動作:
在紙上寫上或擦除某個符號;
一個無限長的存儲帶,帶子有一個個連續的存儲格子組成,每個格子可以存儲一個數字或符號
一個讀寫頭,讀寫頭可以在存儲帶上左右移動,并可以讀、修改存儲格上的數字或符號
停機狀態
控制程序指令,指令可以根據當前狀態以及當前讀寫頭所指的格子上的符號來確定讀寫頭下一步的動作(左移還是右移),并改變狀態存儲器的值,令機器進入一個新的狀態或保持狀態不變。
當然這些只是理想的圖靈機,因為現實中不存在無限長的存儲帶,更加圖靈的理論這樣的一臺裝置就能模擬人類所能進行的任何計算過程。是不是很神奇?我相信你肯定不相信,不過圖靈是經過嚴格的數學證明,下面我們來看看圖靈機的計算過程。
二、圖靈機的運行機制
準備- 存儲帶子上的格子初始話
- 設置內部狀態存儲器當前狀態
- 讀寫頭設置初始在存儲帶上所做的格子位置
- 準備好控制指令,即控制程序。
反復執行以下步驟,直到停機- 讀寫頭讀出當前格子的數字或符號
- 根據當前狀態和讀到的字母或符號找到對應的控制指令
- 根據控制指令,執行以下三個動作
1. 讀寫頭在格子上擦除或寫入一個數字或符號
2. 變更狀態到一個新狀態
3. 讀寫頭向左或向右移動一格
估計你還是不明白,別急。看過《三體》的同學都知道三體人把地球人看做“蟲子”,三體人的維度比地球三維世界高,就好像我們人類把看蟲子一樣。
下面,我們把蟲子放到一個二維的世界中,以蟲子為例,給大家來說明最簡單的圖靈機模型(注:該例子非原創)。
假設理想的情況一:
蟲子所處的二維世界是一個無限長的紙帶,這個紙帶上被分成了若干小的方格,而每個方格都僅僅只有黑和白兩種顏色。紙帶的片段為: 蟲子所在二維紙帶.png
假設蟲子的感官只有眼睛,并且它的視力短的可憐,只能看到當前所處格子的顏色
蟲子的操作系統、程序為:我們假設黑色是食物區,蟲子吃到食物后前移一格,白色是空白區,沒有食物后退一格,
輸入
輸出
黑色
白色
后移一格
在這個情況中格子的顏色是蟲子的輸入信息,集合為IN={黑色,白色},輸出集合為 OUT= {前移一格,后移一格}
開始是黑色,蟲子前移一格,到達第2格
第2還是黑色,蟲子前移一格,到達第3格
第3格還是黑色,蟲子前移一格,到達第4格
第4格為白色,蟲子后移一格,回到第3格
可見,這條帶子上,蟲子在第4格和第3格來回移動循環不止。
現實中蟲子肯定不可能傻到無線循環,蟲子會有饑餓、吃飽的感受,食物吃了后也會消失。因此我們在情況下中改進下模型。
蟲子在黑色的格子時,如果是饑餓狀態,吃掉食物把格子變成白色;如果是吃飽狀態,后移一格
蟲子在白色的格子時,如果是饑餓狀態,停下來等食物長出來涂黑;如果是吃飽狀態,前移一格
輸入
當前狀態
輸出
黑色
吃飽
后移一格
饑餓
黑色
饑餓
吃飽
白色
吃飽
饑餓
白色
饑餓
等待食物長出來涂黑(不移動)
吃飽
在這種情況中,輸入集合為IN={黑色,白色},輸出集合為 OUT= {前移一格,后移一格,吃掉食物涂白,等待食物長出來涂黑},內部狀態S={吃飽,饑餓}
二維紙帶不變,從開始位置開始,蟲子初始是饑餓狀態
第1格是黑色,蟲子饑餓,吃掉食物格子變白,蟲子新狀態為吃飽
第1格為白色,蟲子吃飽,蟲子前移一格,到達第2格,蟲子新狀態為饑餓
第2格為黑色,蟲子饑餓,吃掉食物格子變白,蟲子新狀態為吃飽
第2格為白色,蟲子吃飽,蟲子前移一格,到達第3格,蟲子新狀態為饑餓
第3格為黑色,蟲子饑餓,吃掉食物格子變白,蟲子新狀態為吃飽
第3格為白色,蟲子吃飽,蟲子前移一格,到達第4格,蟲子新狀態為饑餓
第4格為白色,蟲子饑餓,等待食物長出來涂黑,蟲子新狀態為吃飽
第4格為黑色,蟲子吃飽,蟲子后退一格,到達第3格,蟲子新狀態為饑餓
這時,第3格已經長出來食物,是黑色,因此流程和第5步的情況一樣了
情況二,小蟲的行為比情況以復雜了一些,但小蟲最后仍然會落入無限循環當中。
到此,如果你已經徹底搞懂了二維蟲子是怎么移動的,那么你已經明白了圖靈機的工作原理了!因為從本質上講,最后的小蟲模型就是一個圖靈機!
三、如何理解圖靈機
剛才用二維蟲子說明了圖靈機的工作原理,相信你的第一個反映就是,這樣的模型太簡單了!
他根本說明不了現實世界中的任何問題!下面,我就要試圖說服你,圖靈機這個模型是偉大的!
其實蟲子的所有決策和行為都可以抽象成一個圖靈機模型。
為什么可以做這種抽象呢?
其實可以把二維蟲子的模型進行更多擴展,以和現實世界基本或完全一致。因為二維蟲子模型是以一切都簡化的前提開始的,所以它的確是太太簡單了。
然而,我們可以把二維蟲子的輸入集合、輸出行動集合、內部狀態集合進行擴大,這個模型就一下子實用多了。
二維蟲子完全可以處于一個三維的空間中而不是簡簡單單的紙帶。
二維蟲子的視力很好,它一下子能讀到方圓500米的信息。
二維蟲子也可以擁有其他的感覺器官,比如嗅覺、聽覺等等,而這些改變都僅僅是擴大了輸入集合的維數和范圍,并沒有其他更本質的改變。
二維蟲子可能的輸出集合也是異常的豐富,它不僅僅能移動自己,還可以盡情的改造它所在的自然界。
進一步的,二維蟲子的內部狀態可能非常的多,而且控制它行為的程序可能異常復雜
那么二維蟲子會有什么本事呢?這就很難說了,因為隨著小蟲內部的狀態數的增加,隨著它所處環境的復雜度的增加,我們正在逐漸失去對二維蟲子行為的預測能力。
"輸入集合、輸出集合、內部狀態、固定的程序指令!"
就是這四樣東西抓住了二維蟲子信息處理的根本。
四、 什么是圖靈完備
維基百科解釋:
可圖靈指在可計算性理論中,編程語言或任意其他的邏輯系統如具有等用于通用圖靈機的計算能力。換言之,此系統可與通用圖靈機互相模擬。
上面的解釋比較抽象,通過上面的例子理解了什么是圖靈機,圖靈完備其實就很很簡單理解了。
簡單來說,能夠抽象成圖靈機的系統或編程語言就是圖靈完備的;一切可計算的問題圖靈機都能計算,因此滿足這樣要求的邏輯系統、裝置或者編程語言就叫圖靈完備的。
因此可見,二維蟲子是圖靈完備的。
Bitcoin的腳本由于沒有條件分支,循環等控制指令,回到上面的蟲子的例子,蟲子就不能根據當前狀態,判斷選擇移動還是吃食物等一系列的動作,因此不滿足圖靈機的模型,不是圖靈完備的。
大腦操作系統.png
我們人能不能也被這樣的抽象呢?顯然是可以的。
其實我們每一個會決策、會思考的人就可以被抽象的看成一個圖靈機,也就是笑來老師一直說:每個人都有自己的操作系統,因為有元認知能力,還可以自己升級操作系統。
輸入狀態集合就是你所處的環境中能夠看到、聽到、聞到、感覺到的所有一起,可能的輸出集合就是你的每一言每一行,以及你能夠表達出來的所有表情動作。內部狀態集合則要復雜得多。因為我們可以把任意一個神經細胞的狀態組合看作是一個內部狀態,那么所有可能的神經細胞的狀態組合將是天文數字!這就是人類的記憶。只要圖靈機具有了內部狀態,它就相應的具有了記憶。
這樣理解的話,還有兩個問題:
圖靈機的程序指令是固定的。但是人類有學習能力,也就是說人的大腦會進化,操作系統會升級,所以大腦的實際程序規則是不固定,似乎圖靈機模型包含不了。
人類的很多現象似乎都能被圖靈機包括:情緒、情感等
作者:jerry區塊鏈技術與思維
鏈接:https://www.jianshu.com/p/c07d83c4f3a1返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的简述什么是图灵机_带你深入理解图灵机--什么是图灵机、图灵完备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如果只定一个指标,研发的考核指标应该是什
- 下一篇: 长丰县节能环保战新产业集聚发展基地第二批