停机问题不可计算的证明

用反证法。
假设存在一个可以计算停机问题的程序hating声明如下, 该程序计算p是否可停机并返回结果。

int halting(p);

halting的返回值可以为1或0,若p可停机,halting返回1,若p不可停机,halting返回0.

再定义程序prove如下。

void prove(p){
    
    
	bool x = halting(p);
	while(x)
		;
}

现在,我们把prove程序作为参数p传入prove程序中。
若prove可停机,x为1,while(1)陷入死循环,则prove不可停机。
若prove不可停机,x为0,while(0)直接结束,则prove可停机。
prove即可停机,又不可停机,矛盾,所以假设不成立。所以不存在可以计算停机问题的程序。

猜你喜欢

转载自blog.csdn.net/wx_assa/article/details/108750293
今日推荐