簡體   English   中英

程序可以決定某個程序是否暫停以進行某些輸入嗎?

[英]Can a program decide whether an arbitrary program halts for SOME input?

是否有一個程序(可以暫停嗎?p)可以判斷是否存在一個輸入,以便(p個輸入)暫停?

我嘗試了簡單的對角化,但它只告訴我(may-halt?diag-may-halt)必須為真。 這無助於證明程序是否存在。

是否存在這樣的程序?

我的對角化

不, may-halt? 不存在。

(我不認為通過對角線化的直接證明比停止問題無法確定的證明要簡單;否則,這將是標准示例。相反,讓我們將問題簡化為停止問題:)

假設有一個程序may-halt? p may-halt? p ,它決定程序p暫停某些輸入。 然后定義:

halt? p x := may-halt? (\y -> if y==x then p x else ⊥)

花括號中的東西是派生程序。 讓我們分解一下:

halt? p x := may-halt? p'

其中p'是程序(i)在輸入x計算px ,(ii)在任何其他輸入上只是循環而不終止:

p' y := if y==x then p x else ⊥

may-halt? p' 當且僅當px終止時, may-halt? p'輸出true。

因此,對於任何程序p和輸入xhalt? px halt? px將決定px終止。 但是我們知道這是不可能的,所以may-halt? 不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM