考虑程序比较(p1,p2),其中:
Input: source code for procedures p1, and p2.
Output: True if p1 and p2 always produce identical outputs; False otherwise
比较(p1,p2)是否可计算?为什么或者为什么不?
有人解释这意味着什么?
答案 0 :(得分:2)
一般来说,事实并非如此。确切的任务是确定p1和p2是否停止并产生相同的输出。因为如果p1和p2停止(或者甚至是其中之一)它是不可计算的,所以比较也是不可计算的。
但是,如果p1和p2被约束到所有可计算函数集合的某个子集(例如没有递归的函数,即没有循环),即使在线性时间内,也可以计算比较。
答案 1 :(得分:1)
这不可计算。
我不记得确切的原因,但这是一个特殊情况,你将compare
本身送入compare
,你可以用来证明它不可能写出这样的功能