我是新的可判定性。我读到了停止问题的暂停问题,但没有得到它实际上暗示的任何东西。我已经搞砸了解释。
任何人都可以向我提供任何合理的解释或至少一些细节,这会有很大的帮助吗?
答案 0 :(得分:2)
您可以将图灵机视为一种可以执行程序的理论计算机。图灵机的程序由一组状态和这些状态之间的转换组成。在图灵机上运行的程序可以访问一个称为磁带的输入源,它有一些程序可以处理的字符串(可能是空的)。图灵机的所有程序都是return true
(停止接受),return false
(停止拒绝),或者根本不能return
任何事情 - while (true) ; return true;
。根据您的定义,机器也可能throw
异常(崩溃);但通常认为崩溃是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
,N
可作为输入传递到程序M
。