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

Turing Machine Halting Problem

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

证明一:

参考链接:Turing Machine Halting Problem

为了证明这个问题的不可判定性,我们将基于莱斯定理(Rice’s Theorem)将其规约成另外的问题来判定某个图灵机是否能在给定的输入上,在有限步数内给出确定的或者不是的答案。
图灵机的停机问题可以描述为以下模式:
输入:一个图灵机 M , 和一个输入字符串w
问题:所给定的图灵机 M 是否能在有限步数内结束对字符串w进行运算并给出接受拒绝的确定答案。
证明:首先,我们将假定确实是存在一个图灵机解决这样的问题,接着我们将描述这个假定是如何与它本身相违背的。我们将称这种图灵机为可停机机器(HM)——能在有限时间内停机并且给出’yes’或者’no’的答案,即当HM能在有限时间内停机时,我们所构建的图灵机HM输出yes,否则输出no
下面的方框图所表示的就是我上面所描述的可停机机器

Halting machine

现在我们将设计一个反可停机机器(HM’)
1. 如果HM返回‘yes’,则进入一个死循环中
2. 如果HM返回‘no’,则停机
下面的方框图所表示的就是我上面所描述的反可停机机器

inverted halting machine

最后,若对于输入是其本身的图灵机 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不能够总给出正确答案,与之前的假设相矛盾,故图灵机的停机问题是不可判定的。

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值