是否可以确定语言L是否位于NP中?


15

给定由图灵机决定的语言L,可以通过算法确定L是否位于NP中?


重新标记为复杂性理论。不确定这与NP完整性有什么关系。
Aryabhata

1
FWIW,尽管在提案站点上有投票,但我认为这个问题比关于保理的问题更广泛,因为正是因为保理的问题将在大多数入门级复杂性课程中涵盖,但是许多研究生级别甚至都没有涉及这一问题。复杂性课程。
Joshua Grochow 2010年

1
这不是赖斯定理的典型应用吗?
莫里茨2010年

3
莫里茨-尽管赖斯定理涵盖了对这个问题的是/否答案,但是请参阅下面的答案以获得更有趣的结果。也许,txwikinger,您应该将问题更改为“集合{i:L(M_i)在NP中}的复杂度是多少?”?
约书亚·格罗夫

在这里,我将第二讲约书亚的答案。当图灵机指定语言时,答案可能很明显,但是如果我们允许以某种任意格式指定语言,则答案是相同的(也许不太明显)。
Anand Kulkarni 2010年

Answers:


24

不。首先,根据赖斯定理,这是TM的一个属性,它仅取决于它们所计算的语言,因此它不可计算。

但是,更重要的是,已知的是,索引集合的(即,该组TM的是,在计算语言Ñ P)是Σ 0 3 -complete(Σ 0 3算术可计算的层次结构,而不是多项式层次结构)。ñPñPΣ30Σ30

Hajek首先研究了此类问题。有关更多信息,请参见例如Ken Regan的这篇文章

Hajek的论文中还有更多重要的掘金:

  • 索引集合的Σ 0 3 -complete。PΣ30
  • Π 0 2 -complete{i:PL(Mi)NPL(Mi)}Π20
  • 总的图灵机(所有输入都停止)使得P L i = N P L i,但陈述“ P L i = N P L i ”是独立的(其中L i = L M i) 。对于P N P的相对论也是如此。MiPLi=NPLiPLi=NPLiLi=L(Mi)PNP

1
这里的问题似乎是一个承诺决策问题(承诺语言将由TM决定,不仅会被认可),而不是一个总决策问题。赖斯定理在这里仍然适用吗?回想一下赖斯定理的证明采用了暂停的不确定性,因此不确定性在这里至关重要。
泽宇

2
在询问的问题中,语言L是“由决定它的机器给出的”。所以这确实是:给定图灵机M,是否可以确定L(M)是否在NP中。如果语言L不是由TM指定的,而是仅作为自然数的子集给出的,那么用算法确定L是否在NP中意味着什么?特别是,当L本身未由有限描述给出时,我们如何将L视为算法的输入?
Joshua Grochow 2010年

1
是的我知道。但是在赖斯定理中,TM可能不会决定语言,即不计算总功能。
Zeyu 2010年

2
一般的启发式方法是,给定Turing机器的语义属性,例如“ M定义NP语言”,应该首先尝试以一阶逻辑表示该属性。这会将属性置于算术层次结构中;启发式的是,该属性通常在层次结构的该级别上是完整的。我想问一下这种启发式方法是否有明显的反例。
安迪·德鲁克

2
缩小到多项式层次结构,事情不太可能表现得那么好。例如,考虑属性“ C是一个最小尺寸的布尔电路(对于它计算的功能)”。这个问题是NP难题,可以放在多项式层次结构中,但是对于它自然存在的级别是否完整,这是一个开放的问题。(这样的结果对于某些受限的电路类别(例如DNF)是已知的;请参见Schaefer和Umans的两部分调查“多项式层次结构的完整性”。)
Andy Drucker,2010年

5

正如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,...,其属性为

  1. 每个M_k以多项式时间运行(例如,通过将^ k时间时钟附加到M_k),从而确定某种NP语言,并且
  2. 每种NP语言都是列表中某些M_i决定的语言。

不会发生的是每个多项式时间NTM都在列表中。但是每种NP语言都有无限数量的NTM代表它。因此,保证每种NP语言在列表中至少有一些其代表性的NTM,特别是所有那些具有足够大的索引k的NTM,即n ^ k超过M_k的运行时间。

这对于执行对角化之类的技巧很有用,这些技巧需要在算法上枚举所有NP语言的此类无限(或无界)列表。当然,除了多时间NTM(例如,多时间确定性TM)之外,整个讨论还适用于许多其他类型的机器。


3

p(n


2
仅当它是时钟不确定的 TM 时才有效。如果我只给您一个时钟TM(甚至以指数形式运行的TM),它决定使用的语言是否是NP仍是不确定的。但是,如果N_1,N_2,...是具有指数时钟的TM的枚举,则集{i:L(N_i)在NP}中可能不再是Sigma_3完整的,因为您已经保证了N_i是总数,但仍然肯定无法计算。
约书亚·格罗夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.