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

计算理论基础课程总结

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是可满足布尔公式},SAT∈SPACE(O(n))\}, SAT\in SPACE(O(n))


ALLNFA={<M>∣L(M)=Σ∗},ALL‾NFA∈NSPACE(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.8:TQBF∈PSPACETQBF\in PSPACE
思路;递归过程,深度等于变量个数所以总空间 O(m)O(m)

亚线性空间

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

例9.14:PATH∈NLPATH\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) 为对数时,格局数为多项式。因此有 L⊆NL⊆PL\subseteq NL\subseteq P

NL = coNL

定理9.22:NL=coNLNL=coNL
思路:证明 PATH‾∈NL\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