为什么P = NP并不意味着P = AP(即P = PSPACE)?


18

众所周知,如果则多项式层次结构会崩溃,并且。P=NPP=PH

使用Oracle机器可以很容易地归纳理解这一点。问题是-为什么我们不能在恒定的交替水平之外继续归纳过程,并证明P=AltTime(nO(1))(又名)?AP=PSPACE

我正在寻找一个直观的答案。



4
已知的是,NL=coNL但是人们怀疑AL(即P)不等于NL
sdcvvc 2011年

Answers:


32

为证明P=AltTime(O(1))=PH)是利用感应P=NP。归纳表明,对于任何自然 kP=AltTime(k)(和AltTime(O(1)) 只是他们的工会)。

当轮换的次数可以随输入大小而变化时(即当机器的可能轮换的次数不是数字而是输入大小的函数时),归纳法不起作用,即,我们没有表明机器的执行在单个输入上可以减少到无轮换,我们展示了在所有输入上机器的执行可以“均匀地”减少到无轮换)。

让我们看一个类似但更简单的语句。我们想证明身份的功能id(n)=n最终主宰一切常数函数(fg当且仅当所有,但有限多个n f(n)g(n))。可以通过归纳证明。对于所有kkn(即fkid其中fk(n)=k),但我们没有这样的非恒定功能,如n2n2≪̸n


22

将多项式层次结构与交互式证明的层次结构进行比较。如果对于某个固定的k,您在交互式证明中有k个替换-IP(k)-生成的复杂度类没有比两个替换获得的功效更多-即IP(k)= IP(2 )= AM(假设k≥2)。但是,如果允许交替的多项式数量,你得到的复杂类IP = PSPACE,这被认为是比大很多,一类是包含在Π 2 P,在多项式层次结构的第二层。因此,这种现象实际上发生了(尽管,据我们所知,对于多项式层次结构)。

这是因为这需要尺寸的问题减少Ñ在IP(ķ)和把它变成一个问题,IP(2)鼓起的问题的大小,以使得在对于任何特定的IP(ķ)的问题仍然存在多项式大小,如果让k变化,那么所得的减少将不会产生k多项式的问题。


11

这是关于常数和无界交替之间的距离的一些直觉:重复执行多次的多项式运算是多项式,但是重复执行多次的多项式可以是指数的。例如,对自己重复乘以:

v = 2
for(i=1 to n)
  v = v*v

迭代次数是线性的,输出是指数的。但是,如果您固定n,则它是初始值大小的多项式。


4

下面,我通过尝试执行量化器删除而不是固定数量的步骤来扩展彼得回答中的要点,以查看失败的地方以及是否可以通过这种尝试挽救一切。

让我们尝试将P=NP放大超过常数倍。

假设P=NP。因此,有一个解决Ext-Circuit-SAT的多项式时间机器(对于给定的电路是否有令人满意的扩展并且对其输入进行了部分分配?)。

更正式地说,我们有一个polytime算法A多项式运行时间p(n)poly(n) ST

给定布尔电路φ和输入的部分分配τ,如果存在满足φτ扩展,则
A返回“是” ,否则返回“否”。τφ

要经过固定时间,我们需要有效地进行量词删除。之所以可以这样做是因为Cook-Levin定理是一个构造性定理,实际上它给出了多项式时间算法Cook st

给定一个DTM M接收两个输入,和三个一元数字nm,和t
Cook(M,n,m,t)返回尺寸的布尔电路O(t2)模拟M上长度的输入(n,m)t步骤。

让我们尝试使用它们扩展P=PH的参数,以获得求解TQBF的算法(实际上是TQBCircuit,即完全量化布尔电路问题)。

该算法的思想如下:我们在A上反复使用Cook从给定的量化电路中删除量化器。数量词的数量是线性的,因此我们希望得到一个多项式时间算法(我们使用多项式时间子程序C o o k拥有一个多项式多步的算法)。在消除量化器的过程结束时,我们将获得一个无量化器的电路,该电路可以用多项式时间进行评估(电路值问题在P中,令C V是用于计算给定电路的电路值的多项式时间算法) 。ACookPCV

然而,我们会看到,这个想法并没有工作(出于同样的原因指出,由Peter)。

  • φ为量化电路(初始化为给定的量化公式)。
  • kφ的数量词。
  • 对于ik1待办事项

    • ψ = Qxkσ(x1,...,xk)是最后量词和自由量词部分。
    • 如果Q=""

      1. 计算C=Cook(A,|σ|,|x1|+...+|xk1|,p)
      2. 用电路C中的σ代替输入位, C
      3. 更换ψCφ
    • 如果Q=""

      1. 考虑ψ作为¬xk¬σ
      2. 计算C=Cook(A,|¬σ|,|x1|+...+|xk1|,p)
      3. 与代替输入位¬σ在电路C
      4. 更换ψ¬Cφ
  • 计算并返回CV(φ)

结果算法看起来是多项式时间:我们有多项式很多步,每个步骤都是可多项式时间计算的。但是,这是不正确的,算法不是多项式时间。

在多项式时间算法中使用多项式时间子例程就是多项式时间。问题在于,如果子例程返回的值在原始输入中不具有多项式大小,并且我们假定我们对从子例程返回的值进行赋值,则通常不需要这样做。(在TM模型中,我们必须逐位读取任何多项式时间子例程的输出。)此处,算法Cook返回的值的大小正在增加(可以是为其提供的输入大小的幂) ,确切的功率取决于A的运行时间,大约为p2(|input|),所以既然我们知道A不能小于线性时间,|output|至少是|input|2)。

问题类似于下面的简单代码:

  • 给定x
  • n=|x|
  • y=x
  • 对于i1n
    • y=y|y|(IE的串联|y|副本y
  • 返回y

每次执行y=y|y|我们将y的大小平方。在执行n之后,我们将得到一个y,它的x2n大小为n2n,显然不是输入大小的多项式。

假设我们仅考虑k(n)量词交替的量化公式(其中n是量化公式的总大小)。

假设A在时间p运行(例如,到目前为止还不排除线性时间),并且可能有一种更有效的Cook算法,它可以输出较小的l(t)电路来代替t2,那么我们得到用于ExtCircuitSat一种算法,在时间运行(lp)O(k)(n)=l(p(l(p((l(p(n)))))))O(k) compositions。即使在这两个情况下lp是线性的(但有总系数a2),我们会得到它运行在时间的算法Ω(n2k(n)),并且如果k(n)=Θ(n)它将是Ω(n2n) 类似于蛮力算法(甚至是基于假设Cook-Levin可以在算法上执行的结果,即在算法的运行时间内线性大小的电路)。


我真的很喜欢这个答案!
Tayfun Pay

@kaveh如果= Ô 那么我们需要至少双指数时间 Ñ P Ñ P Ñ P?您的论据似乎暗示了这种可能性,尽管我们知道P S P A C EE X P中,所以如何获取单指数呢?p(n)=2Ω(n)l(t)=O(t)NPNPNPPSPACEEXP
T ....

3

我认为这是因为在PH的每个级别上,交替的数目是一个常数(即与输入大小无关),而在AP中,交替的数目可以是无界的(但输入大小是多项式)。

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.