轉移函數(transition function)
/ delta: DEL-tah /
轉移函數(transition function)是機器完整的規則手冊:一張查表,給定機器當下所處的情境,就告訴它下一步該做什麼。情境只有兩件事:有限控制處於哪個狀態,以及讀寫頭正在讀哪個符號。它回傳的指令則是三件事捆在一起:要切換到的新狀態、要往當前格寫入的符號,以及讀寫頭要移動的方向(左或右)。這裡沒有創意可言;對每一種可能的情境,答案都事先固定好了。
形式上轉移函數寫作 δ(delta),它把一個(狀態,所讀符號)對映到一個(下一狀態,要寫的符號,移動)三元組:δ(q, a) = (p, b, R) 讀作「在狀態 q 讀到 a 時,切換到狀態 p、把 b 覆寫到 a 上、讀寫頭右移」。移動是 L 代表左、R 代表右。由於輸入與三個輸出在數目上都有限,δ 不過是一張你能印出來的有限表。運行機器就是:讀狀態與符號、查 δ、執行寫入-移動-切換、再重複。這是確定型的:一個情境,一條指令。
δ 是圖靈機所有巧思之所在;設計一台機器「就是」設計它的 δ。一個細微之處是 δ 可以是部分函數:對某些(狀態,符號)對可能根本沒有指令,而走到這樣的對,正是機器停機的方式(它沒有別的可做了)。再配上指定的接受狀態與拒絕狀態,三種結果便由此而生:停機並接受、停機並拒絕,或者,如果 δ 一直把機器送往下一步而永不止息,就是永遠迴圈。非確定型變體允許 δ 對同一情境給出多條指令,但基本模型至多給一條。
規則 δ(q1, 0) = (q2, X, R) 的意思是:在狀態 q1 讀到 0 時,把 X 覆寫上去、右移、進入 q2。對照 DFA 的轉移只挑下一個狀態;圖靈機的規則還會寫入並選定方向,給了它多得多的操作空間。
一條圖靈轉移一次做三件事:寫入、移動、改變狀態。
不同於 DFA 的全函數轉移,圖靈機的 δ 對某些對可能未定義;碰到未定義的情形是機器停機的方式之一。基本模型是確定型的,所以 δ 至多回傳一條指令。