初次接触halt problem,wiki百科和google了一下,大概讲的是对于某个程序P,给出某种输入I,求解此程序P是否会达到终止状态。更通俗的说,一个程序说:“我能预测别的程序是否能够breakdown停机”的问题。如果没有接触这样的一个问题,像我一样,估计觉得这个程序简直不知道在干什么,而且觉得这似乎是个哲学方面的问题?
引用一下维基百科上面的表述(Halting Problem):是目前逻辑数学的焦点,和第三次数学危机的解决方案。其本质是给定一个图灵机T,和一个任意语言集合S,是否T会最终停机于每一个s属于S。其意义相同于可确定语言。显然任意有限S时刻判定的,可数的S也是可停机的。
当然,这个命题现在已经被证明是 不可解问题 了。证明如下:如果这个问题可以在有限的时间之内解决,可以有一个程序判断其本身是否停机并做出相反行为。这时候,不管停不停机结果是什么都不符合要求。这么说还是有点抽象。不如用一个对话来解释之。
一个程序A:“我能判断所有程序能否停机。”
另一个程序B:“如果我是你就这么玩,给我任意一个程序,要是你判断停了,我就变成死循环”。
之后王老师说: