对于停机问题的理解
偶尔看到知乎的一个答案中提到了“停机问题”的概念,觉得挺有趣。 在看了维基百科之后, 以下是我的理解:
已知:
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) couldStopFlag K(function K){while(1){}} 而显然后者是无法停下的, 矛盾。
因此不存在这么一个 CouldStop() 函数可以正确判断任何一个函数是否会停机