对于停机问题的理解

偶尔看到知乎的一个答案中提到了“停机问题”的概念,觉得挺有趣。 在看了维基百科之后, 以下是我的理解:

已知:

enum couldStopFlag{ couldStop = true };
couldStopFlag CouldStop(function F);
couldStopFlag K(function K) { if(CouldStop(K)){
    while(1){}
  }
  else{
    return couldStop;
  }
}

那么问题来了 CouldStop(K(K)) == ?

 CouldStop(K)    == !couldStop

CouldStop(K(K)) == couldStop  但显然 K(K) ∈ K, 矛盾。

CouldStop(K)    == couldStop     

couldStopFlag K(function K) \Leftrightarrow couldStopFlag K(function K){while(1){}} 而显然后者是无法停下的, 矛盾。

因此不存在这么一个 CouldStop() 函数可以正确判断任何一个函数是否会停机

posted @ 2015-01-26 16:29  wu_overflow  阅读(596)  评论(0编辑  收藏  举报