停机问题

来自计算思维百科
跳转至: 导航搜索

停机问题(Halting Problem)是1936年图灵在其著名论文“论可计算数及其在判定问题上的应用”中提出,并用形式化方法给予证明的一个不可计算问题。

基本概念

停机问题(halting problem)是目前逻辑学的焦点,也是第三次数学危机的解决方案。其本质问题是: 给定一个图灵机 T,和一个任意语言集合 S, 是否 T 会最终停机于每一个s∈S。其意义相同于可确定语言。显然任意有限 S 是可判定性的,可列的(countable) S 也是可停机的。

通俗的说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。如果这个问题可以在有限的时间之内解决,则有一个程序判断其本身是否会停机并做出相反的行为,这时候显然不管停机问题的结果是什么都不会符合要求。所以这是一个不可解的问题。

证明

首先,判定一个程序是否会停机,是指:对于其的任意一个输入,可判定其是否停机。那么假定这样的图灵机存在,设为H。其工作过程不妨设为:若对于任意一个程序M可停机则输出1,反之输出0(由于其是可判定的)。那么可以构造另一程序D,其工作过程为:以H输出为输入,若输入为1则不停机,反之停机。

由于H可判定所有程序,那么其也可判定D,若其判定D输入1时不停机,则其输出0,而由于D的定义知它是可停机的,反之亦然。故停机问题无算法解。

例子

理发师悖论