圖靈機 快速入門教程


文章首發於【博客園-陳樹義】,點擊跳轉到原文《圖靈機 快速入門教程》

圖靈機是圖靈機理論中提出的理想模型,其可以實現任意復雜的計算。

什么是圖靈機

英國數學家艾倫·圖靈在1936年提出了「圖靈機」的理論。「圖靈機」設想有一條無限長的紙條,紙條上有一個個方格,每個方格可以存儲一個符號,紙條可以向左或向右運動。

圖靈機可以做下面三個基本的操作:

  • 讀取指針頭指向的符號。
  • 修改方框中的字符。
  • 將紙帶向左或向右移動,以便修改其臨近方框的值。

下面我們通過一個小例子來了解下圖靈機到底是如何進行計算的。這個例子比較簡單,我們將在空白的紙帶條上打印1 1 0這三個數字。

首先,我們向指針頭指向的方框中寫入數字1:

接着,我們讓紙帶向左移動一個方框:

現在,我們再往指針頭指向的方框寫入數字1:

接着,我們繼續讓紙帶向左移動一個方框,並寫入數字0:

這樣我們就完成了一個簡單的圖靈機操作。

用圖靈機完成異或操作

我們來嘗試一個稍微復雜點的操作,我們嘗試將1 1 0做一個異或操作,即將1 1 0變成0 0 1。要圖靈機完成計算,就類似於向圖靈機輸入以下操作指令,這些指令組成了一個小程序。

讀到的符號 寫入指令 移動指令
- -
0 寫入1 向右移動紙帶
1 寫入0 向右移動紙帶

我們假設圖靈機紙帶現在的狀態如下圖所示:

現在讀取到的符號是0,按照操作指令,我們應該往方框寫入1並向右移動一個方框:

現在讀取到的符號是1,按照操作指令,我們應該往方框寫入0並向右移動一個方框:

類似地,現在讀取到的符號是1,我們重復相同的操作。

最后,我們讀取到了一個空白字符,圖靈機不做任何操作。

用圖靈機完成任意復雜計算

上面我們使用了圖靈機成功完成了異或操作,理論上來講我們也可以完成加法、減法、乘法、除法操作,只不過是實現的步驟(指令)復雜些而已。下面這個網站是一個圖靈機的在線模擬器,其實現了一些基本運算,比如:加法、減法等,有興趣的可以自己去試試看。

Online Turing Machine Simulator

圖靈機的意義

讓我們嘗試這樣的思考歷程:

  • 我有許多很復雜的公式需要計算,如果自己一個人算的話時間會很久。
  • 思考:能不能有一個東西能幫我實現公式的計算,無論這個公式有多復雜?
  • 思考:我能不能設計一個模型來證實這個實行是可行的?(數學家最喜歡建模型來證明了~)
  • 思考:提出「圖靈機」理論,任何計算都可以簡化成固定的步驟,無論多復雜的計算都能實現了。
  • 某些動手能力強的數學家利用電子工程學知識將許多真空管組成了一套設備,實現了「圖靈機」理論模型。
  • 隨着電子工程的不斷發展,原本龐大的計算機不斷變小,慢慢地變成了今天的計算機。

「圖靈機」理論通過假設模型證明了任意復雜的計算都能通過一個個簡單的操作完成,從而從理論上證明了「無限復雜計算」的可能性,直接給計算機的誕生提供了理論基礎。

從這樣的思考歷程來看,圖靈機的出現為計算機的誕生奠定了理論基礎,這就是圖靈機誕生的意義。

文章首發於【博客園-陳樹義】,點擊跳轉到原文《圖靈機 快速入門教程》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM