700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 图灵机停机问题的不可判定性

图灵机停机问题的不可判定性

时间:2021-08-27 12:23:04

相关推荐

图灵机停机问题的不可判定性

Turing Machine Halting Problem

停机问题:指判断任意一个程序是否能在有限的时间之内结束运行的问题。图灵机停机问题是不可判定的,意思即是不存在一个图灵机能够判定任意图灵机对于任意输入是否停机。

证明一:

参考链接:Turing Machine Halting Problem

为了证明这个问题的不可判定性,我们将基于莱斯定理(Rice’s Theorem)将其规约成另外的问题来判定某个图灵机是否能在给定的输入上,在有限步数内给出确定的是或者不是的答案。

图灵机的停机问题可以描述为以下模式:

输入:一个图灵机M, 和一个输入字符串w

问题:所给定的图灵机M是否能在有限步数内结束对字符串w进行运算并给出接受拒绝的确定答案。

证明:首先,我们将假定确实是存在一个图灵机解决这样的问题,接着我们将描述这个假定是如何与它本身相违背的。我们将称这种图灵机为可停机机器(HM)——能在有限时间内停机并且给出’yes’或者’no’的答案,即当HM能在有限时间内停机时,我们所构建的图灵机HM输出yes,否则输出no

下面的方框图所表示的就是我上面所描述的可停机机器

现在我们将设计一个反可停机机器(HM’)

1. 如果HM返回‘yes’,则进入一个死循环中

2. 如果HM返回‘no’,则停机

下面的方框图所表示的就是我上面所描述的反可停机机器

最后,若对于输入是其本身的图灵机HM2:

如果HM2在某个输入停机了,则会进入死循环中否则,停机

显然这与我们一开始的假设是相违背的,因此图灵机的可停机问题是不可判定的。

证明二:

另外一种过程一样但更加易懂的解释:

假设图灵机停机问题是可判定的,即存在一个图灵机HM能够判断任意图灵机M在给定输入I的情况下是否可停机。假设M在输入I可时可停机,则HM输出yes,反之输出no。然而图灵机M本身也是字符串的描述,因此它也可以作为自身的输入。故HM应该可以判定当将M程序本身作为M的输入时,M是否会停机。然后我们可以定义另一个图灵机U(M),其定义如下:

如果HM(M, M)输出no,则U(M)停机如果HM(M, M)输出yes,则U(M)就进入死循环

即是说U(M)做的是与HM(M, M)相反的动作。将HM(M, M)包装在U(M)中,也就是用U()来模拟HM()。HM()的输出可能出现两种情况:

假设HM(U, U)输出yes,则U(U)则进入死循环中。而由定义可知这两个结果是矛盾的。(与HM的定义矛盾,因为按照HM的定义,HM(U, U)的结果应和U(U)相同,但是U()的定义导致它永远输出和HM()相反的结果假设HM(U, U)输出no,则U(U)停机。同上,这两者一样矛盾。

因此HM不能够总给出正确答案,与之前的假设相矛盾,故图灵机的停机问题是不可判定的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
扩展阅读