算法可以分析函数的行为并说出另一个函数是否完全相同吗?例如,我有一个清理输入数据的函数但我需要知道另一个函数是否执行了以另一种方式使用不同的代码。
有这样的算法吗?这是undecidable problem吗?
答案 0 :(得分:3)
是的,它是不可判定的。
如果halting problem (f,x)
的实例构建了一个新的函数f'那么简化就很简单了。这不会停留在x
。生成(f,f',x)
作为新算法的输入。
直观地说,如果这样的机器存在,你就解决了暂停问题,因为你能够检测到f
和f'
具有相同的行为,但你知道{{1 }}处于无限循环中,所以f'
也是如此。
作为旁注,如果您正在寻找一种检查所有输入而不是单一输入的算法 - 这甚至更难,甚至在RE
中也不会出现此问题答案 1 :(得分:0)
这确实是不可判定的。
它至少和the halting problem一样困难。
鉴于任意程序和有限输入的描述,确定程序是否完成运行或将永远运行。
确定2个函数是否对任何给定输入执行相同操作的部分原因是确定两个函数是否实际上都停止了它们各自的输入。