图灵完备的机器可以解决所有可解问题,亦即任何图灵完备的机器逻辑上都是等价的。

那么什么属于不可解的问题呢?这里我们引出一个问题:不存在这样的一个程序,它可以判定任意程序是否会结束执行(停机问题)。

  停机问题:有一个程序,我们这里叫做上帝程序,它有两个输入:程序A和程序A运行所需要的输入。上帝程序可以根据这两个输入得到一个输出,即这个程序会停机或者这个程序不会停机。

    再根据上帝程序引入一个程序,叫做撒旦程序。它判断上帝程序的运行结果,如果上帝程序输出会停机,那么撒旦程序就执行一个无限的循环(while(true)这种);如果上帝程序输出不会停机,则撒旦程序停机。

    现在,我们运行上帝程序,并且以撒旦程序以及其输入作为上帝程序的输入,则会出现两种情况:上帝程序输出会停机,我们分析发现,撒旦程序停机的时候上帝程序的输出应该是不会停机;而上帝程序输出不会停机的时候,撒旦程序执行无限循环,此时上帝程序应该会输出停机。所以我们从这里得出矛盾。

    这个证明由阿兰图灵给出——不存在这样的一个程序,它可以判定任意程序是否会结束执行。

 

理解这个证明就已经很不容易了,那想到这个证明是不是更不容易。我个人是这么觉得的,但是这个问题的后半段是相对比较容易想到的。后半段的目的是要让上帝程序失效。如果不失效,撒旦程序停机,上帝程序判断出,输出该程序会停机。而要使其失效我们就应该让撒旦程序在上帝程序输出为停机时不断循环;而在上帝程序输出为不停机时撒旦程序停机。

posted on 2018-06-30 15:54  nilknow  阅读(1054)  评论(0编辑  收藏  举报