确定给定的图灵机器M(M)停止s(给定时)空的输入。有时指的是测试的变体,如果M停止输入x;然而,我们可能模拟这种变体通过定义一个图灵机M'来实现,它首先写下x,然后模拟M的操作;M’halts(on empty input)iff M halts on input x在任何情况下,我们都会处理这个变量,但它确实没有什么区别。您可以用“计算机程序对于“图灵机器”在本说明中,内容没有变化。

停滞不前的问题是无法决定的:不存在图灵机H,如果e,则H(e,x)=1编码是一个图灵机器M,在输入x时停止,否则H(e,x)=0。假设为了矛盾这样的机器H存在。定义一台新机器H“:H”读取一个输入x,然后计算H(x,x);如果H(x,x)=0,则停止,否则H(x无限循环设f为H’的编码。H’在输入f上做什么?它停止了若(iff)H(f,f)=0,(根据H的定义),如果f编码的机器在输入f时不停止,即如果H'在输入f中不停止,则发生这种情况。由于H'必须在输入f上停止或进入无限循环(即不停止),这是不可能的:H'(f)在不停止时停止。因此,没有这样的机器H可以存在

暂停问题是一个无法解决的的问题计算机科学早在第一台计算机问世之前就已经确定了。停滞不前的问题无法解决:

“不存在可计算的算法,当作为输入时程序和一个输入对于该程序,可以决定该程序是否停止或者没有。

仅在中学术界停车问题是否可以解决。这一块是我的计算理论大学讲师。

假设存在超级毕业生,能够在计算机科学(可能除外数值分析). 假设超级毕业生有一个数学符号第页,共页G公司i、 j个*.超级毕业生被授予财产考虑到描述任何研究生,以及他/她的描述论文主题,超级毕业生要么会停下来论文,或继续发布。

停车问题是无法解决的 决策问题简单地说,这是不可能的程序,那当然停止,以决定是否需要其他程序停止或进行计算永远

当然,可以判断一个程序是否会永远循环。为什么我们不能写一个程序来检查无限循环s、 如果控制 变量s得到增量当他们应该减量ed,程序是否包含返回 陈述等?这将是一个非常有用的程序,尤其适用于调试年龄。

此程序必须全部的可计算的; 那一定是已定义(保证停止)任何输入,它必须能够实施计算机上的ed(即图灵机器). 毕竟我们不希望它永远循环,我们需要运行它。我们如何确保这个程序能够决定任何给定的程序是否会停止?寻找明显的无限的 s是一个很好的开始方式,但这只是一个启发式的; 它很容易漏掉一些特殊情况你忘记检查了。只有这样它才能检查所有可能的结果s来自运行程序是到通过程序的所有步骤,看看是否终止第条。

检查程序是否终止s是运行它的无限的 时间如果它在那之后停止了,那么它就是已定义。无限时间运行任何东西实际上都不是一个选项,因此我们必须回到启发式的方法。让我们假设我们发现愚蠢的 暂停问题解决程序让我们称之为小时小时输入程序p,如果程序将停止,则输出TRUE,如果不停止,则为FALSE。

此程序的流程图(小时)会是这样的:

第页||v(v)/ \/第页\/\_______正确\暂停/是\ ? /\_/||没有|错误的

最酷的是小时甚至会自动运行,当然会输出TRUE,因为程序将始终停止。如果在测试暂停的问题解决程序时,我们意外地在末尾引入了无限循环,会发生什么?然后流程图如下所示:

第页||__v(v)__|     ||H(H)||_____||__________输出(o)|||          |/ \         ^/o \|/是\_______|\正确/是\   /\_/||没有|HALT公司

现在如果小时输出表示输入程序(p) 遗嘱停止然后小时不会停止,如果程序(p)不会停止,那么小时将停止。现在,如果我们给它自己(称之为它),我们的程序会说什么H’)作为输入?如果H’然后停下来H’永远循环如果H’那么就永远循环H’将停止。这是不可能的因为H’不能同时停止和不停止。这就是霍夫施塔特会呼叫奇怪的回路因为如果是真的,它就会使自己变成假的反之亦然

这里的问题在哪里?我们添加的只是一个小循环小时。我们知道循环是可计算的,即使它们不停止,因此不可能性必须在小时自身。这确实是问题所在,这就是我们如何知道停滞不前的问题所在无法解决的

还有很多其他的无法解决的问题其中许多问题可以归结为停顿问题;事实上,将问题简化为停止是证明问题无法解决的一种非常有效的方法。以下是几个示例:

这个空置问题(E) :

空置问题解算器将告诉您是否有可能的程序输入(p)将允许它停止。这是一个非常简单的例子。如果你喂食电子它会告诉你是否有一个程序(p)允许电子终止。就是这样,它会告诉你电子将始终停止或不停止。这又是一个停滞不前的问题,所以这是不可能的。

这个比较问题(C):

这也称为等效性问题。A类比较求解器将告诉您两个程序(A和B)是否相等;也就是说,对于相同的输入,它们总是给出相同的输出。这个方法的诀窍就是用HALT指令覆盖其中一个输入(即A或B)。然后C会告诉您,对于所有输入,另一个程序是否会停止。听起来很熟悉吗?


资料来源:
雷丁大学J.M.Bishop博士关于计算机的讲座和笔记。
还有一点直觉!

登录登记在这里写点什么或联系作者。