Loading AI tools
抽象計算模型 来自维基百科,自由的百科全书
圖靈機(英語:Turing machine),又稱確定型圖靈機,是英國數學家亞倫·圖靈於1936年提出的一種將人的計算行為抽象化的數理邏輯機,其更抽象的意義為一種計算模型,可以看作等價於任何有限邏輯數學過程的終極強大邏輯機器。
此條目需要補充更多來源。 (2019年1月4日) |
圖靈的基本思想是用機器來模擬人們用紙筆進行數學運算的過程,他把這樣的過程看作下列兩種簡單的動作:
而在每個階段,人要決定下一步的動作,依賴於(a)此人當前所關注的紙上某個位置的符號和(b)此人當前思維的狀態。
為了模擬人的這種運算過程,圖靈構造出一台假想的機器,該機器由以下幾個部分組成:
注意這個機器的每一部分都是有限的,但它有一個潛在的無限長的紙帶,因此這種機器只是一個理想的裝置。圖靈認為這樣的一台機器就能模擬人類所能進行的任何計算過程。
一台圖靈機是一個七元有序組,其中都是有限集合,且滿足:
圖靈機將以如下方式運作:
開始的時候將輸入符號串 從左到右依此填在紙帶的第號格子上,其他格子保持空白(即填以空白符)。 的讀寫頭指向第0號格子, 處於狀態。機器開始執行後,按照轉移函數所描述的規則進行計算。例如,若當前機器的狀態為,讀寫頭所指的格子中的符號為,設,則機器進入新狀態,將讀寫頭所指的格子中的符號改為,然後將讀寫頭向左移動一個格子。若在某一時刻,讀寫頭所指的是第0號格子,但根據轉移函數它下一步將繼續向左移,這時它停在原地不動。換句話說,讀寫頭始終不移出紙帶的左邊界。若在某個時刻根據轉移函數進入了狀態,則它立刻停機並接受輸入的字串; 若在某個時刻根據轉移函數進入了狀態,則它立刻停機並拒絕輸入的字串。
注意,轉移函數是一個部分函數,換句話說對於某些,,可能沒有定義,如果在執行中遇到下一個操作沒有定義的情況,機器將立刻停機。
設是一台圖靈機,
以及
則稱從格局 產生格局,記作。
設是一台圖靈機,將字串 作為其輸入,若存在格局序列,使得
則稱 接受字串,且稱為圖靈機在輸入上的接受計算歷史。同理,若是拒絕格局,則稱 拒絕,且稱為圖靈機在輸入上的拒絕計算歷史。所接受的所有字串的集合稱為的語言,記作。
設和. 比如做一個以1的個數表示數值的加法運算,在磁帶上的數據是0000001110110000,就是3+2的意思。程式如下:
第一行程式0,0->0,0R意思就是如果機器讀到0,就將其變成0,狀態變為0,讀寫頭向右移動一格. R就是向右移動一格,L就是向左移一格,E是錯誤,S是停機. xx,y -> aa,b中xx是當前狀態, y是當前格子的值, aa是程式下一步的狀態, b是當前格的修改值。
雖然這裏給出與上面不同形式的定義,但兩者是等價的,這裏的定義能完成的工作並不比上面的定義多。
步數 | 狀態(執行前) | 狀態(執行後) | 磁帶(執行前) | 磁帶(執行後) |
---|---|---|---|---|
1 | 0 | 0 | 0000001110110000 | 0000001110110000 |
2 | 0 | 0 | 0000001110110000 | 0000001110110000 |
3 | 0 | 0 | 0000001110110000 | 0000001110110000 |
4 | 0 | 0 | 0000001110110000 | 0000001110110000 |
5 | 0 | 0 | 0000001110110000 | 0000001110110000 |
6 | 0 | 0 | 0000001110110000 | 0000001110110000 |
7 | 0 | 1 | 0000001110110000 | 0000001110110000 |
8 | 1 | 1 | 0000001110110000 | 0000001110110000 |
9 | 1 | 1 | 0000001110110000 | 0000001110110000 |
10 | 1 | 10 | 0000001110110000 | 0000001111110000 |
11 | 10 | 10 | 0000001111110000 | 0000001111110000 |
12 | 10 | 10 | 0000001111110000 | 0000001111110000 |
13 | 10 | 11 | 0000001111110000 | 0000001111110000 |
14 | 11 | 0 | 0000001111110000 | 0000001111100000 |
對於任意一個圖靈機,因為它的描述是有限的,因此我們總可以用某種方式將其編碼為字串。我們用表示圖靈機的編碼。
我們可以構造出一個特殊的圖靈機,它接受任意一個圖靈機的編碼,然後模擬圖靈機的運作,這樣的圖靈機稱為通用圖靈機(Universal Turing Machine)。現代電腦的計算模型其實就是這樣一種通用圖靈機,它先接受一段描述另一圖靈機,例如圖靈機的action table的字串,然後執行寫給圖靈機的程式,這樣通用圖靈機執行程式就像圖靈機一樣,能正確執行並實現程式所描述的演算法。
圖靈機有很多衍伸,但可以證明這些衍伸的計算能力都是等價的,即它們辨識同樣的語言類。證明兩個計算模型和的計算能力等價的基本思想是:用和相互模擬,若可模擬且可模擬,顯然他們的計算能力等價。注意這裏我們暫時不考慮計算的效率,只考慮計算的理論上「可行性」。
首先我們可以發現,改變圖靈機的帶字母表並不會改變其計算能力。例如我們可以限制圖靈機的帶字母表為,這並不會改變圖靈機的計算能力,因為我們顯然可以用帶字母表為的圖靈機模擬帶字母表為任意有限集合的圖靈機。
另一個要注意的是,如果我們允許圖靈機的紙帶兩端都可以無限伸展,這並不能增加圖靈機的計算能力,因為我們顯然可以用只有紙帶一端能無限伸展的圖靈機來模擬這種紙帶兩端都可以無限伸展的圖靈機。
如果我們允許圖靈機的讀寫頭在某一步保持原地不動,那也不會增加其計算能力,因為我們可以用向左移動一次再向右移動一次來代替在原地不動。
其它的常見圖靈機衍伸包括:
除了圖靈機以外,人們還發明了很多其它的計算模型。包括:
然而這些模型無一例外地都和圖靈機的計算能力等價,因此邱奇,圖靈和哥德爾 提出了著名的邱奇-圖靈論題:一切直覺上能計算的函數都可用圖靈機計算,反之亦然。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.