圖靈機

停機(halt)

停機(halt)很單純,就是機器停止運行。你寫的程式跑完、把控制權交還給你,它就停機了;卡在無窮迴圈、永遠空轉的,則沒有停機。對圖靈機而言,停機是計算明確結束、並附帶一個裁決的那一刻,而不是無止盡地一步又一步磨下去。

具體來說,圖靈機在進入它兩個指定停機狀態之一(q_accept 或 q_reject)的瞬間停機。不像 DFA 那樣「先讀完輸入再檢查」;機器一進入停機狀態就立即停機,不論讀寫頭當下在做什麼。(有些課本約定也允許機器在走到轉移函數沒有給指令的格局時停機。)停在 q_accept 表示停機並接受;停在 q_reject 表示停機並拒絕。無論哪種,機器都已產出答案並停了下來。

停機是讓整套理論變得有趣的分界線。對某個輸入會停機的機器,已給出明確的是或非的答案;無法停機的機器則根本沒給答案,只有永無止盡的運行。識別器(保證接受成員,但對非成員可能不停機)與判定器(保證對每個輸入都停機)之間的區別,完全在於此:機器是否總會停下來?一般而言判斷任意機器對任意輸入是否會停機,正是著名的停機問題,而它是不可判定的。

一台向右掃描以找第一個空白的機器,一找到就停機:... a a q_find b ... 終究到達空白、進入 q_accept、停下來。而規則讓它在無限的空白紙帶上無止盡向左走的機器,則永不停機。

停機 = 進入 q_accept 或 q_reject;機器帶著裁決停下。

停機與接受是兩回事:機器可以以拒絕的方式停機。此外,機器一進入停機狀態就停機,可能在讀完所有輸入之前,這不同於永遠讀到結尾的 DFA。

又称
haltingterminatestop停機終止