[英]what is exactly the halting in turing machines ?
我是新手。 我讀了暫停問題,但沒有得到它實際上暗示的內容。 我已經搞砸了解釋。
誰能為我提供任何合理的解釋或至少一些細節,這將對您有很大幫助?
您可以將圖靈機視為一種可以執行程序的理論計算機。 圖靈機的程序由一組狀態以及這些狀態之間的轉換組成。 在圖靈機上運行的程序可以訪問稱為磁帶的單個輸入源,該輸入源具有程序可以處理的某些字符串(可能為空)。 圖靈機的所有程序要么return true
(暫停接受), return false
(暫停拒絕),要么根本不return
任何內容while (true) ; return true;
while (true) ; return true;
。 根據您的定義,機器也可能會throw
異常(崩潰)。 但通常將崩潰視為try { /*crash*/ } catch (Exception) { return false; }
try { /*crash*/ } catch (Exception) { return false; }
,表示當機意味着停頓。
那么,暫停問題是您是否可以為圖靈機編寫程序,其輸入是圖靈機的另一個程序以及一些輸入字符串,如果該程序返回true
或false
(停止接受或停止拒絕)它已在提供的輸入上暫停,否則返回false
(即,如果程序永不停止)。
事實證明,答案是圖靈機不存在這樣的通用程序。 假設一個確實存在, M
。 給定輸入m
和i
,如果m
停止在i
,則接受,否則拒絕。 我們可以制作另一個專門設計來欺騙M
:
N(i)
1. if M(N, i) then loop forever;
2. otherwise return true
現在繼續M
是否對N
:
假設M
說N
在輸入i
暫停。 然后N
將永遠循環,而M
將錯了。
假設M
說N
永遠在輸入i
上循環。 然后, N
將返回true並停止,因此M
將是錯誤的。
在這兩種情況下, M
都會為我們的N
錯誤的答案,並且由於我們除了對M
進行假設外沒有做出任何假設並解決了停機問題,因此我們可以肯定地得出結論,沒有任何機器可以解決停機問題。
(如果最好不要直接引用M
,則M
可以作為輸入傳遞到程序N
中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.