给定由图灵机决定的语言L,可以通过算法确定L是否位于NP中?
给定由图灵机决定的语言L,可以通过算法确定L是否位于NP中?
Answers:
不。首先,根据赖斯定理,这是TM的一个属性,它仅取决于它们所计算的语言,因此它不可计算。
但是,更重要的是,已知的是,索引集合的(即,该组TM的是,在计算语言Ñ P)是Σ 0 3 -complete(Σ 0 3在算术可计算的层次结构,而不是多项式层次结构)。
Hajek首先研究了此类问题。有关更多信息,请参见例如Ken Regan的这篇文章。
Hajek的论文中还有更多重要的掘金:
正如Joshua Grochow所指出的,对字面上问题的答案是否定的。
但是,正如Holger所言,可以通过某种模拟时钟的标准方法(例如,线性)检查不确定的图灵机(NTM)是否“计时”并在n ^ k步后停止某个常数k。下面的代码)。通常,当一本书或一本书暗示(错误地)可以确定NTM是否为多项式时间时,这才是真正的含义。也许这就是为什么你问这个问题?(当我第一次学习复杂性理论时遇到了一个相同的问题,并且在某处看到可以检查TM是否为多次的说法。)真正的问题是为什么人们可能希望这样做,我将在解释后在下面讨论如何。
有很多添加此类时钟功能的方法。例如,想象一下在长度为n的输入x上,交替执行一个被计时的“主要算法”的语句,然后执行以下算法的一个语句,该语句以(接近)n ^ k个步骤结束:
对于i_1 = 1到n 对于i_2 = 1至n ... 对于i_k = 1到n 禁止 返回;
如果以上代码在主要算法停止之前返回,则停止整个计算(例如,拒绝)。
决定NTM是否为这种形式的算法,如果尝试将其解释为确定其输入是否为多时NTM的算法,则会报告一些误报:即使某些NTM保证在多项式时间内停止,它们不会像上面的代码那样交替执行一个算法的语句和一个时钟的语句(因此,尽管是多时制,但是会被拒绝)。
但是没有误报。如果NTM通过测试,则它肯定会停止多项式时间,因此它定义了一些NP语言。但是,如果有时时钟在主算法停止之前就用完了,则其基础主算法的行为可能会发生变化,即使在给定足够的时间完成时主算法可能已接受的情况下,也会导致计算被拒绝。因此,决定的语言可能与主要算法的语言不同。 但,这是关键,如果正在执行的主要算法实际上是在时间p(n)上运行的多项式时间算法,并且如果时钟中的常数k足够大,则n ^ k> p(n),则主算法将始终在时钟用尽之前停止运行。在这种情况下,主要算法的答案不会改变,因此主要算法和模拟它的时钟NTM因此决定了相同的NP语言。
为什么这很重要?这意味着可以“枚举所有NP语言”(正如我在文献中所说的那样,通常不准确地表述为“确定给定NTM是多时NTM”还是“枚举所有多时NTM”)。更准确地说,可以枚举NTM的无限列表M_1 M_2,...,其属性为
不会发生的是每个多项式时间NTM都在列表中。但是每种NP语言都有无限数量的NTM代表它。因此,保证每种NP语言在列表中至少有一些其代表性的NTM,特别是所有那些具有足够大的索引k的NTM,即n ^ k超过M_k的运行时间。
这对于执行对角化之类的技巧很有用,这些技巧需要在算法上枚举所有NP语言的此类无限(或无界)列表。当然,除了多时间NTM(例如,多时间确定性TM)之外,整个讨论还适用于许多其他类型的机器。