【问题标题】:what is exactly the halting in turing machines ?图灵机的停机到底是什么?
【发布时间】:2017-02-04 19:28:50
【问题描述】:

我是可判定性的新手。我读了停止问题的停止问题,但没有得到任何它实际上暗示的东西。我已经把解释搞砸了。

谁能给我任何合理的解释或至少一些细节,这会很有帮助吗?

【问题讨论】:

    标签: computation-theory turing-machines decidable


    【解决方案1】:

    您可以将图灵机视为一种可以执行程序的理论计算机。图灵机的程序由一组状态和这些状态之间的转换组成。在图灵机上运行的程序可以访问单个输入源,称为磁带,它有一些程序可以处理的字符串(可能是空的)。图灵机的所有程序要么return true (halt-accept),return false (halt-reject),要么永远失败return 任何东西-while (true) ; return true;。根据您的定义,机器也可能出现throw 异常(崩溃);但通常崩溃被认为是try { /*crash*/ } catch (Exception) { return false; } 之类的东西,因此崩溃意味着停止拒绝。

    那么,停机问题是您是否可以为图灵机编写一个程序,该程序的输入是另一个图灵机程序和一些输入字符串,它返回truefalse(halt-accepts或halt-rejects) 如果程序在所提供的输入上停止并返回false 否则(即,如果程序从不停止)。

    事实证明,图灵机不存在这样的通用程序。假设确实存在一个,M。给定输入 mi 它接受如果 mi 上停止,否则拒绝。我们可以制作另一个专门用来愚弄M的程序:

    N(i)
    1. if M(N, i) then loop forever;
    2. otherwise return true
    

    现在继续M 是否适用于N

    1. 假设MN 在输入i 时停止。然后N 将永远循环,而M 将是错误的。

    2. 假设MN 在输入i 上永远循环。然后N 将返回true 并停止,所以M 将是错误的。

    在任何一种情况下,M 都为我们的N 提供了错误的答案,并且由于我们没有对M 做出任何假设,只是它存在并解决了停机问题,因此我们可以安全地得出结论,没有机器解决了停机问题。

    (如果不希望直接引用MM 可以作为输入传递给程序N)。

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 2013-04-01
      • 2012-04-02
      • 1970-01-01
      相关资源
      最近更新 更多