当使用oracle Turing Machines时,如何确保我们继续就复杂性类做出合理而有效的声明?根据我的理解(基于该主题的入门教科书中给出的定义),oracle Turing机器可以在一个计算步骤中确定相对于oracle语言的字符串的成员身份。但是,证明经常使用的oracle语言无法在恒定时间内解决(例如,使用EXPTIME完整的oracle)。对我来说,这似乎是为矛盾“打开大门”,毕竟,矛盾产生了任何后果。
当使用oracle Turing Machines时,如何确保我们继续就复杂性类做出合理而有效的声明?根据我的理解(基于该主题的入门教科书中给出的定义),oracle Turing机器可以在一个计算步骤中确定相对于oracle语言的字符串的成员身份。但是,证明经常使用的oracle语言无法在恒定时间内解决(例如,使用EXPTIME完整的oracle)。对我来说,这似乎是为矛盾“打开大门”,毕竟,矛盾产生了任何后果。
Answers:
有很多方法可以解决这个问题。
一个是在证明中,蕴涵有点像一个函数,将某物的证明作为输入,而输出某物的证明。
我们可以编写对我们没有的值进行运算的函数。
例如,让我们考虑无法计算的停止数。我可以写函数
。
该函数将停止编号作为输入,并返回停止编号加1。显然,这是一个定义明确的函数:如果我们给它正确的输入,那么它就给正确的输出。我们找不到正确的输入的事实并不会使它的转换有效性降低。
我认为甲骨文的证据也差不多。它们基本上是函数,说给我一个解决问题的图灵机,然后我将给出一些定理的证明作为输出。
同样重要的是要意识到,当我们说诸如“没有图灵机可以决定暂停问题”之类的话时,也就是说,没有TM与决定暂停问题的TM的标准定义相匹配。
甲骨文基本上是在说“假设我们有一个与普通定义匹配的TM,除了假设我们可以解决某些问题之外”。因此,没有矛盾,因为我们不假设有一个正常的TM接受问题,所以我们假设有一个特殊的TM接受问题。
在一个非常非正式的类比中,这样想。如果我能向您证明没有超能力的任何人都不会飞,那么就没有矛盾说有一个超级英雄可以飞。
这些预言纯属逻辑对象。我们不知道如何像图灵机那样构建模拟它们的物理机器,但是据我们所知,它们的定义与基本公理之间并没有内在矛盾。这些预言作为逻辑对象确实存在。我们知道它们不是标准的Turing Machines或Lambda-Calculus术语,也不是部分递归函数。Church-Turing论文说,没有更强大的模型,但这不是一个定理,只是一个推测,而且过于非正式,无法得到真正的证明。