图灵停机问题

来源:互联网 发布:软件程序开发 编辑:程序博客网 时间:2024/06/10 04:17

          首先说明此问题一般称作图灵停机问题,但是此问题似乎不是图灵提出的(没查到是谁提出的),只是艾伦·图灵在1936年用对角论证法证明了,不存在解决停机问题的通用算法。此问题的描述是:是否存在一个程序A能够判断任意一个程序B是否会在输入i下停机的问题。

           解决此问题的证明关键在于看清一个程序,和判断任意一个程序,看到这里的任意一个就很容易想到高中数学中的反证法,只需找到一个不满足的特例即可证伪,这里我们设   bool A(B,I),这个函数在B输入I下停机时返回FALSE,否则返回TRUE。因为程序B是任意的,所以我们不妨定义这样一个程序B,

<pre class="cpp" name="code">BOOL B(I)
{ 
    if(A(B,I)) 
      return FALSE;//这里返回值是我们自己定的,当b在输入i时停机,则返回不停机 
    else 
      return TRUE;
}


于是当输入i是程序B本身时,我们可以发现会出现矛盾,

BOOL B(B){  if(A(B,B))   return FALSE;//这里B在输入B下停机时,实际上B返回的是FALSE即不停机,出现矛盾  else      return TRUE;}


0 0