PSPACE完全性学习笔记
本節(jié)所需的前置知識
定義1:令M是一個在所有輸入上都停機的確定型圖靈機。M的空間復(fù)雜度定義為函數(shù)f:N→Nf:\ N\rightarrow Nf:?N→N,其中f(n)f\left(n\right)f(n)是M在任何長為n的輸入上掃描帶子方格的最大數(shù)。若空間復(fù)雜度為f(n)f\left(n\right)f(n),則稱M在空間f(n)f\left(n\right)f(n)內(nèi)運行。如果M是對所有輸入在所有分支都停機的非確定型圖靈機,則M的空間復(fù)雜度定義為對任何長為n的輸入,在任何計算分支上所掃描的帶子方格的最大數(shù)。
定義2:令f:N→R+f:N\rightarrow R^+f:N→R+為一個函數(shù)。空間復(fù)雜度類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:設(shè)M是有q個狀態(tài)和g個帶子符號的LBA。對于長為n的帶子,則M恰有qngnqng^nqngn個不同的格局。
- 推論:如果M在f(n)f\left(n\right)f(n)的空間內(nèi)運行,ω\omegaω是長為n的輸入,則M在ω\omegaω上的格局?jǐn)?shù)是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:(薩維奇定理)對于任何函數(shù)f:N→R+f:N\rightarrow R^+f:N→R+,其中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是可以被確定型圖靈機在多項式空間內(nèi)判定的語言類,NPSPACE是可以被非確定型圖靈機在多項式空間內(nèi)判定的語言類,EXPSPACE是可以被確定型圖靈機在指數(shù)空間內(nèi)判定的語言類。
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=?k?SPACE(nk),NPSPACE=?k?NSPACE(nk),EXPSPACE=?k?SPACE(2nk)
根據(jù)薩維奇定理的結(jié)論可知,NPSPACE類和PSPACE類等價,因為任何多項式的平方仍然是多項式。對于一個圖靈機,如果它的時間復(fù)雜度為T(n)T\left(n\right)T(n),那么其空間復(fù)雜度至多為T(n)T\left(n\right)T(n),這是因為每一步計算最多訪問一個格子,這個結(jié)論對確定型圖靈機和非確定型圖靈機都成立。注意到多項式空間圖靈機M如果判定語言L,則交換M的接受狀態(tài)和拒絕狀態(tài)可以得到M′M^\primeM′判定L ̄\overline{L}L,所以可知PSPACE關(guān)于補運算封閉,coNP?PSPACEcoNP\subseteq PSPACEcoNP?PSPACE。除此之外,根據(jù)引理3的推論,我們知道對于空間復(fù)雜度O(f(n))O\left(f\left(n\right)\right)O(f(n))的圖靈機,其存在一個格局?jǐn)?shù)上限為2O(f(n))2^{O\left(f\left(n\right)\right)}2O(f(n)),由于一個可判定的圖靈機運行時間不能超過其格局總數(shù)(這是LBA部分的結(jié)論,如果超過則已經(jīng)進入循環(huán)),空間復(fù)雜度O(f(n))O\left(f\left(n\right)\right)O(f(n))的圖靈機時間復(fù)雜度不超過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))EXPTIME(∪k?TIME(2nk))的范疇。
因此,我們可以導(dǎo)出目前學(xué)習(xí)的復(fù)雜度類的關(guān)系如下:
P?NP?PSPACE(NPSPACE)?EXPTIMEP\subseteq NP\subseteq PSPACE\left(NPSPACE\right)\subseteq EXPTIMEP?NP?PSPACE(NPSPACE)?EXPTIME
P?coNP?PSPACE(NPSPACE)?EXPTIMEP\subseteq coNP\subseteq PSPACE\left(NPSPACE\right)\subseteq EXPTIMEP?coNP?PSPACE(NPSPACE)?EXPTIME
我們可以證明時間層次定理,其表述為對于任何時間可構(gòu)造函數(shù)t:N→Nt:N\rightarrow Nt:N→N,存在語言A,在時間O(t(n))O\left(t\left(n\right)\right)O(t(n))內(nèi)可判定但在時間o(t(n)logt(n))o\left(\frac{t\left(n\right)}{logt\left(n\right)}\right)o(logt(n)t(n)?)內(nèi)不可判定,由此可得P?EXPTIMEP?EXPTIMEP?EXPTIME。因此,可以確定這些類的關(guān)系式間至少有一個真包含。目前學(xué)界普遍認(rèn)為這四種類關(guān)系全為真包含。
復(fù)雜度關(guān)系圖
第二部分:一個PSPACE完全的實例——TQBF問題。
定義6:對于一個語言A,稱它為PSPACE完全當(dāng)且僅當(dāng)其屬于PSPACE類并且PSPACE類中的每一個語言B都可以多項式時間歸約到B,即B≤pAB\le_pAB≤p?A。如果僅滿足B≤pAB\le_pAB≤p?A,則成A為PSPACE難。
這里存在一個值得注意的點是,我們要求的是多項式時間歸約而非多項式空間規(guī)約。其主要原因是擔(dān)心在使用多項式空間歸約時,完全問題的容易解法不一定能導(dǎo)出其它歸約到它的問題的容易解法。因此,在定義一個復(fù)雜度類時,規(guī)約模型必須比用來定義類本身的模型更加受限。
一個經(jīng)典的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)?=(x∨y)∧(x∨y)的布爾公式,在其中添加量詞實際上就是對某個變量添加約束:
?\exists?是存在量詞,?x?\exists x\phi?x?的意思是對于變量x的某個值(0/1)(0/1)(0/1),語句?\phi?為真。
?\forall?是全稱量詞,?x?\forall x\phi?x?的意思是對于變量x的全體值,語句?\phi?全為真。
因此,我們可以稱所有帶量詞的布爾公式為量詞化布爾公式。除此之外,還稱?x\exists x?x和?x\forall x?x中的x受到該量詞約束,x本身還存在取值的域,一個例子是對于?x[2x=5]\exists x\left[2x=5\right]?x[2x=5]在x∈Rx\in Rx∈R和x∈Zx\in Zx∈Z時前者為真后者為假。量詞本身作用的范圍是量化變量后的第一對括弧出現(xiàn)的語句段,該段稱為轄域,如果所有量詞的轄域都是其后所有語句部分(即所有量詞都在最前面),則稱這種語句為前束范式。值得注意的是,每個帶量詞的布爾公式都可以轉(zhuǎn)化為與其等價的具有前束范式形式的量詞化布爾公式。一個例子如下:?=?x?y(x∨y)\phi=\forall x\exists y\left(x\vee y\right)?=?x?y(x∨y)
如果一個量詞化布爾公式所有變量都出現(xiàn)在某一量詞的轄域內(nèi),則該公式為全量詞化的(有時也稱句子)。換言之,公式中每個變量都是受約束的。這種公式可以判斷其真假性。
定理7:TQBF是PSPACE完全的。
證明分為兩步,首先證明TQBF∈PSPACE:TQBF\in PSPACE:TQBF∈PSPACE:
給定一個判定全量詞化布爾公式?\phi?的算法A:
A= “對于輸入的全量詞化布爾公式<?><\phi><?>
- 檢查整條公式,如果整個公式不含量詞,則其為一個常數(shù)運算表達(dá)式,計算其的值,如為真則接受,如為假則拒絕。
- 若?\phi?可以表示為?xψ\exists x\psi?xψ,則在ψ\psiψ上遞歸調(diào)用算法A。首先用0替換x,然后再重新用1替換x,如果這兩種替換有一個結(jié)果是接受的,則接受,否則拒絕。
- 若?\phi?可以表示為?xψ\forall x\psi?xψ,則在ψ\psiψ上遞歸調(diào)用算法A。首先用0替換x,然后再重新用1替換x,如果這兩種替換的兩個結(jié)果都是接受的,則接受,否則拒絕。”
算法A可以判定全量詞化布爾公式,又發(fā)現(xiàn)該公式遞歸層數(shù)恰為變量的個數(shù),而每一層又只需要存儲當(dāng)前層變量被替換為0還是1,所以空間復(fù)雜度為O(Nvar)O\left(N_{var}\right)O(Nvar?),其中NvarN_{var}Nvar?是公式中變量個數(shù)。因此,算法A可以在線性空間內(nèi)運行。
證明的第二步就是證明對于任意一個圖靈機M在nkn^knk空間內(nèi)判定的語言A,有A≤pTQBFA\le_pTQBFA≤p?TQBF。換言之, 我們所設(shè)計的多項式時間歸約g可以滿足ω∈A?g(ω)∈TQBF\omega\in A\Longleftrightarrow g\left(\omega\right)\in TQBFω∈A?g(ω)∈TQBF。對于ω∈A\omega\in Aω∈A,我們可以得到M在ω\omegaω上的接受計算歷史,其為從cstartc_{start}cstart?到cacceptc_{accept}caccept?的有限序列。根據(jù)引理3的推論我們有以下兩個重要結(jié)論:
- ?ω∈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完全性證明,我們可以設(shè)計一個dnk×2dnkdn^k\times2^{dn^k}dnk×2dnk的格局表:
現(xiàn)在設(shè)定對應(yīng)格局的符號c,它對應(yīng)一組布爾變量{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,s?∣i=1,2,…,nk+1,s∈Q∪Γ∪??},對于某個變量指派不同的真假值可以表示具體的格局。如對于格局101q210??…101q_210\sqcup\sqcup\ldots101q2?10??…可以表示為布爾公式ψ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,1?∧c2,0?∧c3,1?∧c4,q2??∧c5,1?∧c6,0?∧c7??…∧c0,0??…。
如果這里僅僅采用類似于庫克-列文定理的策略,設(shè)計?=?cell∧?start∧?move∧?accept\phi=\phi_{cell}\land\phi_{start}\land\phi_{move}\land\phi_{accept}?=?cell?∧?start?∧?move?∧?accept?,變量總數(shù)會變?yōu)?span id="ozvdkddzhkzd" class="katex--inline">O(2dnk)O\left(2^{dn^k}\right)O(2dnk),因為格局表的大小變大了。但是注意到這樣設(shè)計的布爾公式不存在量詞,所以需要設(shè)計一個包含量詞限制的布爾公式,從而使得?\phi?的長度下降。
構(gòu)造公式?c1,c2,t\phi_{c_1,c_2,t}?c1?,c2?,t?其表示圖靈機M至多用t步從c1c_1c1?走到c2c_2c2?,那么我們現(xiàn)在需要判定的是?cstart,caccept,2dnk\phi_{c_{start},c_{accept},2^{dn^k}}?cstart?,caccept?,2dnk?。
首先設(shè)計?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?=?1≤i≤nk+1,s∈c?[(c1i,s?∧c2i,s?)∨(c1i,s??∧c2i,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)∈δ?[ψc1?→c2?(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)}ψc1?→c2?(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)得來的,其表達(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)}ψc1?→c2?(p,a,q,b,D)?=?1≤j≤nk?Ψc1?→c2?j,(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)}Ψc1?→c2?j,(p,a,q,b,R)?需要枚舉的是當(dāng)前狀態(tài)p的位置,枚舉得到一個位置后檢查帶頭向右轉(zhuǎn)移是否正確,其它位置是否不變(同理可以導(dǎo)出Ψc1→c2j,(p,a,q,b,L)\Psi_{c_1\rightarrow c_2}^{j,\left(p,a,q,b,L\right)}Ψc1?→c2?j,(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]Ψc1?→c2?j,(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??)]
那么對于t>1,我們就可以引入量詞并進行遞歸:一個最簡單的想法是設(shè)計為:
?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??]
這種設(shè)計下的?c1,c2,t\phi_{c_1,c_2,t}?c1?,c2?,t?是正確的,它本質(zhì)是枚舉了中間格局,隨后進行遞歸,但是如果計算公式長度會發(fā)現(xiàn)這個公式太長了。注意到遞歸會停止在?c1,c2,≤1\phi_{c_1,c_{2,}\le1}?c1?,c2,?≤1?,根據(jù)上文的設(shè)計,得這一層的長度為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那么長的公式,這是指數(shù)級別的,不可行。
可以再引入存在量詞??\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??]
這種書寫方式本質(zhì)是把原本遞歸產(chǎn)生的兩個子公式“折疊”成了一個子公式。通過?(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,從而實現(xiàn)了用一個子公式表達(dá)上文兩個子公式的效果。此時我們不妨令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(t?1)+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)的。
接著我們再設(shè)計布爾公式ψ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(ω)=?c?d[ψstart?(c)∧ψaccept?(d)∧?c,d,2dnk?]
對于ψstart(c)和ψaccept(c)\psi_{start}\left(c\right)和\psi_{accept}(c)ψstart?(c)和ψaccept?(c),它們本質(zhì)和?c1,c2,0\phi_{c_1,c_{2,}0}?c1?,c2,?0?一樣是檢查檢查所有變量是否包含相同布爾值,也就是O(nk)O\left(n^k\right)O(nk)的,所以對于函數(shù)g:ω→g(ω)g:\omega\rightarrow g\left(\omega\right)g:ω→g(ω)它的復(fù)雜度為O(n2k)O\left(n^{2k}\right)O(n2k),因此g是一個從A到TQBF的多項式時間歸約。
從而有A≤pTQBFA\le_pTQBFA≤p?TQBF,第一步又證明了TQBF∈PSPACETQBF\in PSPACETQBF∈PSPACE,綜上可得TQBF是PSPACE完全的。
總結(jié)
以上是生活随笔為你收集整理的PSPACE完全性学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机初学1-51单片机介绍
- 下一篇: 一文读懂链上身份:赛道及项目一览