[计算理论基础] 空间复杂性

计算理论基础课程总结

Posted by Nicodechal on 2018-01-11

DTM 的空间复杂性:在长度为 n 的输入上最多扫描 f(n)f(n) 个不同带方格,则 M 的空间复杂度为 f(h)f(h)

NTM 的空间复杂性:在所有分支停机,在任何计算分支上最多扫描 f(n)f(n) 个不同带方格,则 M 的空间复杂性是 f(n)f(n).


可满足性问题SAT={<ϕ>ϕSAT=\{<\phi>|\phi是可满足布尔公式},SATSPACE(O(n))\}, SAT\in SPACE(O(n))


ALLNFA={<M>L(M)=Σ},ALLNFANSPACE(O(n))ALL_{NFA}=\{<M>|L(M)=\Sigma^*\}, \overline{ALL}_{NFA}\in NSPACE(O(n))


Savitch 定理NSPACE(f(n))SPACE(f2(n)),f(n)nNSPACE(f(n))\subseteq SPACE(f^2(n)), f(n)\geq n。因此有:NPSPACE=PSPACENPSPACE=PSPACE
思路NSPACE(f(n))NTIME(2O(f(n))NSPACE(f(n))\subseteq NTIME(2^{O(f(n)})

可产生性问题CANYIELD={<M,c1,c2,t>CANYIELD=\{<M,c_1,c_2,t>|机器 M 的格局 c1c_1 能在 t 步内到达格局 c2c_2}\}
思路:折半划分,递归计算。
证明:最多有 2df(n)2^{df(n)} 个格局,计算最坏情况。递归过程需要 log2(f(n))=O(f(n))log2^(f(n))=O(f(n)) 层,每层需要栈空间 O(f(n))O(f(n)),总空间 O(f2(n))O(f^2(n))

Savitch 定理证明:对于一个 NSPACE(f(n)) 的问题,将问题转为 CANYIELD(cstart,caccept,2df(n))CANYIELD(c_{start},c_{accept},2^{df(n)}),这个问题只需要 O(f2(n))O(f^2(n)) 空间解决,因此 NSPACE(f(n))SPACE(f2(n))NSPACE(f(n))\subseteq SPACE(f^2(n))

PSPACE 类

PSPACE=kSPACE(nk)PSPACE=\bigcup_k SPACE(n^k)
PSPACE=NSPACEPSPACE=NSPACE
NPSPACE=kNSPACE(nk)NPSPACE=\bigcup_k NSPACE(n^k)
NSPACE(nk)SPACE(n2k)NSPACE(n^k)\subseteq SPACE(n^{2k})


全带量词布尔公式问题TQBF={<ϕ>ϕTQBF=\{<\phi>|\phi是真的 tqbf}\}
定理9.8TQBFPSPACETQBF\in PSPACE
思路;递归过程,深度等于变量个数所以总空间 O(m)O(m)

亚线性空间

一条只读输入带,一条工作带。

例9.14PATHNLPATH\in NL


对数空间格局:c 个状态,g 个带符号,不同格局有 cnf(n)gf(n)=n2O(f(n))cnf(n)g^{f(n)}=n2^{O(f(n))},每个格局长度为 logn+O(f(n))logn+O(f(n)),当 f(n)f(n) 为对数时,格局数为多项式。因此有 LNLPL\subseteq NL\subseteq P

NL = coNL

定理9.22NL=coNLNL=coNL
思路:证明 PATHNL\overline{PATH}\in NL,c 是从 s 可达的顶点数,找出 c 个顶点,每个顶点都不包含 t。重点在 NL 中计算 c。

NSPACE(f(n))SPACE(f2(n)),f(n)lognNSPACE(f(n))\subseteq SPACE(f^2(n)), f(n)\geq logn
NSPACE(f(n))=coNSPACE(f(n)),f(n)lognNSPACE(f(n)) = coNSPACE(f(n)), f(n)\geq logn