停机问题

过程使用伪码证明

 

停机问题

不存在这样一个程序(算法),它能够计算任何程序(算法)在给定输入下是否会结束(停机)。

 

停机问题的证明差不多是这样的

先假设存在一个程序(算法),它能够计算任何程序(算法)在任何给定输入下是否会结束(停机)。

设这个程序为A(prog,input)

bool A(prog,input)
{
  if(prog结束于input)
  return
true;  else
  return
false; }

 

因为它能够计算任何程序(算法)在任何给定输入下是否会结束(停机)。

 

假设有如下程序B

bool B(input)
{
  if(A(input,input))
  {
    while(1);
    return true;
  }
  else
    return false;
}

 

A(B,B)也能判断B停不停机,//因为A能计算任何程序是否停机

 

假设B能停机,则A返回true,则B不能停机,矛盾

假设B不能停机,则A返回false,B能停机,矛盾

故假设不成立

posted @ 2012-07-28 21:18  某yin  阅读(516)  评论(0编辑  收藏  举报