PSPACE完全性学习笔记

本文介绍PSPACE类及其完全性概念,并详细解释了一个PSPACE完全问题TQBF(全量词布尔公式)的判定算法及归约过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节所需的前置知识

定义1:令M是一个在所有输入上都停机的确定型图灵机。M的空间复杂度定义为函数f: N→Nf:\ N\rightarrow Nf: NN,其中f(n)f\left(n\right)f(n)是M在任何长为n的输入上扫描带子方格的最大数。若空间复杂度为f(n)f\left(n\right)f(n),则称M在空间f(n)f\left(n\right)f(n)内运行。如果M是对所有输入在所有分支都停机的非确定型图灵机,则M的空间复杂度定义为对任何长为n的输入,在任何计算分支上所扫描的带子方格的最大数。

定义2:令f:N→R+f:N\rightarrow R^+f:NR+为一个函数。空间复杂度类SPACE(f(n))SPACE\left(f\left(n\right)\right)SPACE(f(n))NSPACE(f(n))NSPACE\left(f\left(n\right)\right)NSPACE(f(n))定义为:

SPACE(f(n))=SPACE\left(f\left(n\right)\right)=SPACE(f(n))={L|L是被O(fn)O(f_n)O(fn)空间的确定型图灵机判定的语言}

NSPACE(f(n))=NSPACE\left(f\left(n\right)\right)=NSPACE(f(n))={L|L是被O(fn)O(f_n)O(fn)空间的非确定型图灵机判定的语言}

引理3:设M是有q个状态和g个带子符号的LBA。对于长为n的带子,则M恰有qngnqng^nqngn个不同的格局。

  • 推论:如果M在f(n)f\left(n\right)f(n)的空间内运行,ω\omegaω是长为n的输入,则M在ω\omegaω上的格局数是n2O(f(n))n2^{O\left(f\left(n\right)\right)}n2O(f(n)),若f(n)≥log⁡nf\left(n\right)\geq\log{n}f(n)logn,则n2O(f(n))=2O(f(n))n2^{O\left(f\left(n\right)\right)}=2^{O\left(f\left(n\right)\right)}n2O(f(n))=2O(f(n))

定理4:(萨维奇定理)对于任何函数f:N→R+f:N\rightarrow R^+f:NR+,其中f(n)≥nf\left(n\right)\geq nf(n)n,有:
NSPACE(f(n))⊆SPACE(f2(n))NSPACE\left(f\left(n\right)\right)\subseteq SPACE\left(f^2\left(n\right)\right)NSPACE(f(n))SPACE(f2(n))

第一部分:PSPACE类与PSPACE完全性

定义5:PSPACE是可以被确定型图灵机在多项式空间内判定的语言类,NPSPACE是可以被非确定型图灵机在多项式空间内判定的语言类,EXPSPACE是可以被确定型图灵机在指数空间内判定的语言类。

PSPACE=⋃kSPACE(nk),NPSPACE=⋃kNSPACE(nk),EXPSPACE=⋃kSPACE(2nk)PSPACE=\bigcup_{k} S P A C E\left(n^k\right),NPSPACE=\bigcup_{k} N S P A C E\left(n^k\right),EXPSPACE=\bigcup_{k} S P A C E\left(2^{n^k}\right)PSPACE=kSPACE(nk),NPSPACE=kNSPACE(nk),EXPSPACE=kSPACE(2nk)

根据萨维奇定理的结论可知,NPSPACE类和PSPACE类等价,因为任何多项式的平方仍然是多项式。对于一个图灵机,如果它的时间复杂度为T(n)T\left(n\right)T(n),那么其空间复杂度至多为T(n)T\left(n\right)T(n),这是因为每一步计算最多访问一个格子,这个结论对确定型图灵机和非确定型图灵机都成立。注意到多项式空间图灵机M如果判定语言L,则交换M的接受状态和拒绝状态可以得到M′M^\primeM判定L‾\overline{L}L,所以可知PSPACE关于补运算封闭,coNP⊆PSPACEcoNP\subseteq PSPACEcoNPPSPACE。除此之外,根据引理3的推论,我们知道对于空间复杂度O(f(n))O\left(f\left(n\right)\right)O(f(n))的图灵机,其存在一个格局数上限为2O(f(n))2^{O\left(f\left(n\right)\right)}2O(f(n)),由于一个可判定的图灵机运行时间不能超过其格局总数(这是LBA部分的结论,如果超过则已经进入循环),空间复杂度O(f(n))O\left(f\left(n\right)\right)O(f(n))的图灵机时间复杂度不超过2O(f(n))2^{O\left(f\left(n\right)\right)}2O(f(n)),这是EXPTIME(∪kTIME(2nk))EXPTIME(\cup_kTIME\left(2^{n^k}\right))EXPTIMEkTIME(2nk)的范畴。

因此,我们可以导出目前学习的复杂度类的关系如下:

P⊆NP⊆PSPACE(NPSPACE)⊆EXPTIMEP\subseteq NP\subseteq PSPACE\left(NPSPACE\right)\subseteq EXPTIMEPNPPSPACE(NPSPACE)EXPTIME

P⊆coNP⊆PSPACE(NPSPACE)⊆EXPTIMEP\subseteq coNP\subseteq PSPACE\left(NPSPACE\right)\subseteq EXPTIMEPcoNPPSPACE(NPSPACE)EXPTIME

我们可以证明时间层次定理,其表述为对于任何时间可构造函数t:N→Nt:N\rightarrow Nt:NN,存在语言A,在时间O(t(n))O\left(t\left(n\right)\right)O(t(n))内可判定但在时间o(t(n)logt(n))o\left(\frac{t\left(n\right)}{logt\left(n\right)}\right)o(logt(n)t(n))内不可判定,由此可得P⫋EXPTIMEP⫋EXPTIMEPEXPTIME。因此,可以确定这些类的关系式间至少有一个真包含。目前学界普遍认为这四种类关系全为真包含。


复杂度关系图

第二部分:一个PSPACE完全的实例——TQBF问题。

定义6:对于一个语言A,称它为PSPACE完全当且仅当其属于PSPACE类并且PSPACE类中的每一个语言B都可以多项式时间归约到B,即B≤pAB\le_pABpA。如果仅满足B≤pAB\le_pABpA,则成A为PSPACE难。

这里存在一个值得注意的点是,我们要求的是多项式时间归约而非多项式空间规约。其主要原因是担心在使用多项式空间归约时,完全问题的容易解法不一定能导出其它归约到它的问题的容易解法。因此,在定义一个复杂度类时,规约模型必须比用来定义类本身的模型更加受限。

一个经典的PSPACE完全问题是TQBF问题(True Quantified Boolean Formula),其的定义是TQBF={<ϕ>∣ϕTQBF=\{<\phi>|\phiTQBF={<ϕ>ϕ是真的全量词化的布尔公式}。这里面存在几个新的定义,在SAT问题中我们定义了形如ϕ=(x∨y)∧(x‾∨y)\phi=\left(x\vee y\right)\land\left(\overline{x}\vee y\right)ϕ=(xy)(xy)的布尔公式,在其中添加量词实际上就是对某个变量添加约束:

∃\exists是存在量词,∃xϕ\exists x\phixϕ的意思是对于变量x的某个值(0/1)(0/1)0/1,语句ϕ\phiϕ为真。

∀\forall是全称量词,∀xϕ\forall x\phixϕ的意思是对于变量x的全体值,语句ϕ\phiϕ全为真。

因此,我们可以称所有带量词的布尔公式为量词化布尔公式。除此之外,还称∃x\exists xx∀x\forall xx中的x受到该量词约束,x本身还存在取值的域,一个例子是对于∃x[2x=5]\exists x\left[2x=5\right]x[2x=5]x∈Rx\in RxRx∈Zx\in ZxZ时前者为真后者为假。量词本身作用的范围是量化变量后的第一对括弧出现的语句段,该段称为辖域,如果所有量词的辖域都是其后所有语句部分(即所有量词都在最前面),则称这种语句为前束范式。值得注意的是,每个带量词的布尔公式都可以转化为与其等价的具有前束范式形式的量词化布尔公式。一个例子如下:ϕ=∀x∃y(x∨y)\phi=\forall x\exists y\left(x\vee y\right)ϕ=xy(xy)

如果一个量词化布尔公式所有变量都出现在某一量词的辖域内,则该公式为全量词化的(有时也称句子)。换言之,公式中每个变量都是受约束的。这种公式可以判断其真假性。

定理7:TQBF是PSPACE完全的。

证明分为两步,首先证明TQBF∈PSPACE:TQBF\in PSPACE:TQBFPSPACE:

给定一个判定全量词化布尔公式ϕ\phiϕ的算法A:
A= “对于输入的全量词化布尔公式<ϕ><\phi><ϕ>

  • 检查整条公式,如果整个公式不含量词,则其为一个常数运算表达式,计算其的值,如为真则接受,如为假则拒绝。
  • ϕ\phiϕ可以表示为∃xψ\exists x\psixψ,则在ψ\psiψ上递归调用算法A。首先用0替换x,然后再重新用1替换x,如果这两种替换有一个结果是接受的,则接受,否则拒绝。
  • ϕ\phiϕ可以表示为∀xψ\forall x\psixψ,则在ψ\psiψ上递归调用算法A。首先用0替换x,然后再重新用1替换x,如果这两种替换的两个结果都是接受的,则接受,否则拒绝。”

算法A可以判定全量词化布尔公式,又发现该公式递归层数恰为变量的个数,而每一层又只需要存储当前层变量被替换为0还是1,所以空间复杂度为O(Nvar)O\left(N_{var}\right)O(Nvar),其中NvarN_{var}Nvar是公式中变量个数。因此,算法A可以在线性空间内运行。
证明的第二步就是证明对于任意一个图灵机M在nkn^knk空间内判定的语言A,有A≤pTQBFA\le_pTQBFApTQBF。换言之, 我们所设计的多项式时间归约g可以满足ω∈A⟺g(ω)∈TQBF\omega\in A\Longleftrightarrow g\left(\omega\right)\in TQBFωAg(ω)TQBF。对于ω∈A\omega\in AωA,我们可以得到M在ω\omegaω上的接受计算历史,其为从cstartc_{start}cstartcacceptc_{accept}caccept的有限序列。根据引理3的推论我们有以下两个重要结论:

  • ∀ω∈A\forall\omega\in AωA,可以得到M在ω\omegaω上的一个长不超过2dnk2^{dn^k}2dnk的接受计算历史。
  • ∀ω∉A\forall\omega\notin Aω/A,可以得到M在ω\omegaω上的一个长不超过2dnk2^{dn^k}2dnk的拒绝计算历史。

类似SAT的P完全性证明,我们可以设计一个dnk×2dnkdn^k\times2^{dn^k}dnk×2dnk的格局表:
image

现在设定对应格局的符号c,它对应一组布尔变量{ci,s∣i=1,2,…,nk+1,s∈Q∪Γ∪⊔ }\{c_{i,s}|i=1,2,\ldots,n^k+1,s\in Q\cup\Gamma\cup\sqcup\ \}{ci,si=1,2,,nk+1,sQΓ },对于某个变量指派不同的真假值可以表示具体的格局。如对于格局101q210⊔⊔…101q_210\sqcup\sqcup\ldots101q210可以表示为布尔公式ψci=c1,1∧c2,0∧c3,1∧c4,q2∧c5,1∧c6,0∧c7⊔…∧c0,0‾…\psi_{c_i}=c_{1,1}\land c_{2,0}\land c_{3,1}\land c_{4,q_2}\land c_{5,1}\land c_{6,0}\land c_{7\sqcup}\ldots\land\overline{c_{0,0}}\ldotsψci=c1,1c2,0c3,1c4,q2c5,1c6,0c7c0,0

如果这里仅仅采用类似于库克-列文定理的策略,设计ϕ=ϕcell∧ϕstart∧ϕmove∧ϕaccept\phi=\phi_{cell}\land\phi_{start}\land\phi_{move}\land\phi_{accept}ϕ=ϕcellϕstartϕmoveϕaccept,变量总数会变为O(2dnk)O\left(2^{dn^k}\right)O(2dnk),因为格局表的大小变大了。但是注意到这样设计的布尔公式不存在量词,所以需要设计一个包含量词限制的布尔公式,从而使得ϕ\phiϕ的长度下降。

构造公式ϕc1,c2,t\phi_{c_1,c_2,t}ϕc1,c2,t其表示图灵机M至多用t步从c1c_1c1走到c2c_2c2,那么我们现在需要判定的是ϕcstart,caccept,2dnk\phi_{c_{start},c_{accept},2^{dn^k}}ϕcstart,caccept,2dnk

首先设计ϕc1,c2,≤1\phi_{c_1,c_{2,}\le1}ϕc1,c2,1,其包含两种部分,首先是ϕc1,c2,0\phi_{c_1,c_{2,}0}ϕc1,c2,0,这只需要检查所有变量是否包含相同布尔值就可以了。
ϕc1,c2,0=⋀1≤i≤nk+1,s∈c[(c1i,s∧c2i,s)∨(c1i,s‾∧c2i,s‾)]\phi_{c_1,c_{2,}0}=\bigwedge_{1\le i\le n^k+1,s\in c}\left[\left(c_{1i,s}\land c_{2i,s}\right)\vee\left(\overline{c_{1i,s}}\land\overline{c_{2i,s}}\right)\right]ϕc1,c2,0=1ink+1,sc[(c1i,sc2i,s)(c1i,sc2i,s)]
对于ϕc1,c2,1\phi_{c_1,c_{2,}1}ϕc1,c2,1,我们需要检查是否是一步迁移,其可以表示为:
ϕc1,c2,1=⋁(p,a,q,b,D)∈δ[ψc1→c2(p,a,q,b,D)]\phi_{c_1,c_{2,}1}=\bigvee_{\left(p,a,q,b,D\right)\in\delta}\left[\psi_{c_1\rightarrow c_2}^{\left(p,a,q,b,D\right)}\right]ϕc1,c2,1=(p,a,q,b,D)δ[ψc1c2(p,a,q,b,D)]
其中ψc1→c2(p,a,q,b,D)\psi_{c_1\rightarrow c_2}^{\left(p,a,q,b,D\right)}ψc1c2(p,a,q,b,D)表示这一步是通过迁移δ(p,a)=(q,b,D)\delta\left(p,a\right)=\left(q,b,D\right)δ(p,a)=(q,b,D)得来的,其表达为:
ψc1→c2(p,a,q,b,D)=⋁1≤j≤nkΨc1→c2j,(p,a,q,b,D)\psi_{c_1\rightarrow c_2}^{\left(p,a,q,b,D\right)}=\bigvee_{1\le j\le n^k}\Psi_{c_1\rightarrow c_2}^{j,\left(p,a,q,b,D\right)}ψc1c2(p,a,q,b,D)=1jnkΨc1c2j,(p,a,q,b,D)
Ψc1→c2j,(p,a,q,b,R)\Psi_{c_1\rightarrow c_2}^{j,\left(p,a,q,b,R\right)}Ψc1c2j,(p,a,q,b,R)需要枚举的是当前状态p的位置,枚举得到一个位置后检查带头向右转移是否正确,其它位置是否不变(同理可以导出Ψc1→c2j,(p,a,q,b,L)\Psi_{c_1\rightarrow c_2}^{j,\left(p,a,q,b,L\right)}Ψc1c2j,(p,a,q,b,L)):
Ψc1→c2j,(p,a,q,b,R)=c1j,p∧c1j+1,a∧c2j,b∧c2j+1,q∧⋀1≤i≤nk+1,i≠j.j+1,s∈c[(c1i,s∧c2i,s)∨(c1i,s‾∧c2i,s‾)]\Psi_{c_1\rightarrow c_2}^{j,\left(p,a,q,b,R\right)}=c_{1j,p}\land c_{1j+1,a}\land c_{2j,b}\land c_{2j+1,q}\land\bigwedge_{1\le i\le n^k+1,i\neq j.j+1,s\in c}\left[\left(c_{1i,s}\land c_{2i,s}\right)\vee\left(\overline{c_{1i,s}}\land\overline{c_{2i,s}}\right)\right]Ψc1c2j,(p,a,q,b,R)=c1j,pc1j+1,ac2j,bc2j+1,q1ink+1,i=j.j+1,sc[(c1i,sc2i,s)(c1i,sc2i,s)]

那么对于t>1,我们就可以引入量词并进行递归:一个最简单的想法是设计为:
ϕc1,c2,t=∃m[ϕc1,m,t2∨ϕm,c2,t2]\phi_{c_1,c_2,t}=\exists m\left[\phi_{c_1,m,\frac{t}{2}}\vee\phi_{m,c_2,\frac{t}{2}}\right]ϕc1,c2,t=m[ϕc1,m,2tϕm,c2,2t]
这种设计下的ϕc1,c2,t\phi_{c_1,c_2,t}ϕc1,c2,t是正确的,它本质是枚举了中间格局,随后进行递归,但是如果计算公式长度会发现这个公式太长了。注意到递归会停止在ϕc1,c2,≤1\phi_{c_1,c_{2,}\le1}ϕc1,c2,1,根据上文的设计,得这一层的长度为L=O(n2k)L=O\left(n^{2k}\right)L=O(n2k)。注意到递归每一次分裂得到两个子公式,逻辑上会递归log(2dnk)∼dnklog\left(2^{dn^k}\right)\sim dn^klog(2dnk)dnk层,最终会得到2dnk×L2^{dn^k}\times L2dnk×L那么长的公式,这是指数级别的,不可行。
可以再引入存在量词∀¬\forall¬¬来解决这个问题:
ϕc1,c2,t=∃m∀(c3,c4)∈{(c1,m),(m,c2)}[ϕc3,c4,t2]\phi_{c_1,c_2,t}=\exists m\forall\left(c_3,c_4\right)\in\{\left(c_1,m\right),\left(m,c_2\right)\}\left[\phi_{c_3,c_4,\frac{t}{2}}\right]ϕc1,c2,t=m(c3,c4){(c1,m),(m,c2)}[ϕc3,c4,2t]
这种书写方式本质是把原本递归产生的两个子公式“折叠”成了一个子公式。通过∀(c3,c4)∈{(c1,m),(m,c2)}\forall\left(c_3,c_4\right)\in\{\left(c_1,m\right),\left(m,c_2\right)\}(c3,c4){(c1,m),(m,c2)},就表明了格局c_3和c_4可以取c_1,m或者m,c_2,从而实现了用一个子公式表达上文两个子公式的效果。此时我们不妨令f(t)为ϕc1,c2,tf\left(t\right)为\phi_{c_1,c_2,t}f(t)ϕc1,c2,t的长度,可以列出如下的递推式:
f(t)=f(t−1)+O(nk)=f(0)+t×O(nk)=L+t×O(nk)f\left(t\right)=f\left(t-1\right)+O\left(n^k\right)=f\left(0\right)+t\times O\left(n^k\right)=L+t\times O\left(n^k\right)f(t)=f(t1)+O(nk)=f(0)+t×O(nk)=L+t×O(nk)
从而有
f(dnk)=O(n2k)+dnk×O(nk)=O(n2k)f\left(dn^k\right)=O\left(n^{2k}\right)+dn^k\times O\left(n^k\right)=O\left(n^{2k}\right)f(dnk)=O(n2k)+dnk×O(nk)=O(n2k)
因此可以得到ϕcstart,caccept,2dnk\phi_{c_{start},c_{accept},2^{dn^k}}ϕcstart,caccept,2dnk的长度为O(n2k)O\left(n^{2k}\right)O(n2k)的。
接着我们再设计布尔公式ψstart(c)和ψaccept(c)\psi_{start}\left(c\right)和\psi_{accept}(c)ψstart(c)ψaccept(c)用来判断起始格局和接受格局,最后就能得到我们所需要的全量化布尔公式:
g(ω)=∃c∃d[ψstart(c)∧ψaccept(d)∧ϕc,d,2dnk]g\left(\omega\right)=\exists c\exists d\left[\psi_{start}\left(c\right)\land\psi_{accept}\left(d\right)\land\phi_{c,d,2^{dn^k}}\right]g(ω)=cd[ψstart(c)ψaccept(d)ϕc,d,2dnk]
对于ψstart(c)和ψaccept(c)\psi_{start}\left(c\right)和\psi_{accept}(c)ψstart(c)ψaccept(c),它们本质和ϕc1,c2,0\phi_{c_1,c_{2,}0}ϕc1,c2,0一样是检查检查所有变量是否包含相同布尔值,也就是O(nk)O\left(n^k\right)O(nk)的,所以对于函数g:ω→g(ω)g:\omega\rightarrow g\left(\omega\right)g:ωg(ω)它的复杂度为O(n2k)O\left(n^{2k}\right)O(n2k),因此g是一个从A到TQBF的多项式时间归约。
从而有A≤pTQBFA\le_pTQBFApTQBF,第一步又证明了TQBF∈PSPACETQBF\in PSPACETQBFPSPACE,综上可得TQBF是PSPACE完全的。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值