文章目录
计算理论导引 第7章 复杂性理论与难解问题 V 的相关笔记,包括:PSPACE类问题、L和NL类问题……
这部分最重要的内容是,从空间复杂性角度,如何证明一个问题是PSPACE完全问题。
第8章笔记 (V)
8.1 萨维奇定理
Def 8.1:令 M M M 是 一个完全、确定型图灵机, M M M 的 空间复杂度 是一个函数: f : N → N f:N\to N f:N→N,其中 f ( n ) f(n) f(n) 是在任何长为 n n n 的输入上扫描带子方格的最大数
(就是说当输入长度为 n n n 时, M M M 运行所占的空间)
Def 8.2:令 f : N → R + f:N\to R^+ f:N→R+ 是一个函数,两个 空间复杂性类 定义为:
- S P A C E ( f ( n ) ) = { L ∣ L SPACE(f(n))=\{L|L SPACE(f(n))={L∣L 是被 O ( f ( n ) ) O(f(n)) O(f(n)) 空间的 确定型图灵机 判定 的语言
- N S P A C E ( f ( n ) ) = { L ∣ L NSPACE(f(n))=\{L|L NSPACE(f(n))={L∣L 是被 O ( f ( n ) ) O(f(n)) O(f(n)) 空间的 非确定型图灵机 判定 的语言
例 8.3: S A T SAT SAT 的空间复杂度是 O ( n ) O(n) O(n) ,只需要存储每次尝试时每个变量的真假值
例 8.4: A L L N F A = { < A > ∣ A ALL_{NFA}=\{ {\lt}A{\gt}|A ALLNFA={<A>∣A 是一个 N F A NFA NFA 且 L ( A ) = Σ ∗ } L(A)={\Sigma}^\ast\} L(A)=Σ∗} ,则 A L L N F A ‾ \overline{ALL_{NFA} } ALLNFA 的空间复杂度为非确定的 O ( n ) O(n) O(n)
算法:从起始状态开始,重复执行 2 q 2^q 2q 次的非确定选择下一状态;若当中某个时刻所有分支都拒绝,则接受;若执行完 2 q 2^q 2q 次后未停机,则拒绝(因为状态数为 q q q 的情况下,比如最大分支数为 k k k 的情况下,所有状态转移最多有 k q k^q kq 种;因此若该状态机存在拒绝的字符串,那必定拒绝一个长度不超过 k q k^q kq 的字符串(有点像是缩胀))
萨维奇定理:
Th 8.1:对任何函数 f : N → R + f:N\to R^+ f:N→R+ ,其中 f ( n ) ≥ n f(n){\ge}n f(n)≥n ,有 N S P A C E ( f ( n ) ) ⊆ S P A C E ( f 2 ( n ) ) NSPACE(f(n)){\subseteq}SPACE(f^2(n)) NSPACE(f(n))⊆SPACE(f2(n))
证明:若采用平凡的证明方法,将非确定型图灵机的每个分支步骤保存下来,那么相当于空间不可复用,可能会消耗 2 O ( f ( n ) ) 2^{O(f(n))} 2O(f(n)) 的空间,因此不能这样操作;
我们选择使用类似二分的方式,设 t = 2 d f ( n ) t=2^{df(n)} t=2df(n) 时 N N N 在所有分支上的运行时间的上界(即最大步数);我们从启示格局 c s t a r t c_{start} cstart 和中止格局 c a c c e p t c_{accept} caccept 选择一个中间格局 c m i d c_{mid} cmid ,并计算是否可以在不大于 t 2 \frac{t}{2} 2t 的时间内从 c s t a r t c_{start} cstart 运行到 c m i d c_{mid} cmid 、是否可以在不大于 t 2 \frac{t}{2} 2t 的时间内从 c m i d c_{mid} cmid 运行到 c a c c e p t c_{accept} caccept ;这样递归调用,所需栈的大小为 l o g 2 ( t ) = f ( n ) log_2(t)=f(n) log2(t)=f(n) ,保存每个格局需要 f ( n ) f(n) f(n) 的空间,那么所使用的最大空间为 O ( f 2 ( n ) ) O(f^2(n)) O(f2(n))
8.2 PSPACE 类
Def 8.6: P S P A C E PSPACE PSPACE 是在 确定型图灵机 上、在 多项式空间 内可判定的语言类,即 P S A P C E = ∪ k S P A C E ( n k ) PSAPCE=\cup_kSPACE(n^k) PSAPCE=∪kSPACE(nk)
由萨维奇定理得, N P S P A C E = P S P A C E NPSPACE=PSPACE NPSPACE=PSPACE ,因为任何多项式的平方仍是多项式
( S A T SAT SAT 和 A L L N F A ALL_{NFA} ALLNFA 都是 P S P A C E PSPACE PSPACE )
注意:时间用远不会小于空间,本质是空间可复用,时间不可复用。因此一个在 t ( n ) t(n) t(n) 时间内运行的机器,即使每一步都是用一个新的空间,那么最多消耗 t ( n ) t(n) t(n) 的空间,即 N P ⊆ N P S P A C E = P S P A C E NP{\subseteq}NPSPACE=PSPACE NP⊆NPSPACE=PSPACE
注意:对于 f ( n ) ≥ n f(n)\geq n f(n)≥n,一个消耗 f ( n ) f(n) f(n) 空间的图灵机至多有 f ( n ) 2 O ( f ( n ) ) f(n)2^{O(f(n))} f(n)2O(f(n)) 个不同的格局,而完全图灵机由于要停机,所以不可能出现相同的格局,因此消耗 f ( n ) f(n) f(n) 空间的图灵机必定在时间 f ( n ) 2 O ( f ( n ) ) f(n)2^{O(f(n))} f(n)2O(f(n)) 内运行,则 P S P A C E ⊆ E X P T I M E = ∪ k T I M E ( 2 n k ) PSPACE{\subseteq}EXPTIME={\cup_k}TIME(2^{n^k}) PSPACE⊆EXPTIME=∪kTIME(2nk)
总结: P ⊆ N P ⊆ P S P A C E = N P S P A C E ⊆ E X P T I M E P{\subseteq}NP{\subseteq}PSPACE=NPSPACE{\subseteq}EXPTIME P⊆NP⊆PSPACE=NPSPACE⊆EXPTIME
(已知 P ≠ E X P T I M E P\neq EXPTIME P=EXPTIME ,所以上述的包含式中至少有一个真包含,而且很有可能全部都是真包含)
(表述的时候说的 2 的几次幂,并不一定是真的 2 的几次幂,而是任意有限大常数的几次幂都可以看作是 2 的几次幂)
8.3 PSPACE 完全性
Def 8.7:若语言 B B B 满足下面两个条件,则它是 P S P A C E PSPACE PSPACE 完全的 :
- B ∈ P S P A C E B{\in}PSPACE B∈PSPACE
- P S P A C E PSPACE PSPACE 中的每一个语言 A A A 多项式时间可归约到 B B B
注意:当为一个复杂性类定义完全问题时,归约的模型必须比用来定义类本身的模型更加受限
(给定一个问题描述,判定/证明是PSAPCE完全性,和NP完全性证明一样,要遵循PSPACE完全性定义的两个方面要素)
TQBF问题
Def: T Q B F = { < ϕ > ∣ ϕ TQBF=\{ {\lt}{\phi}{\gt}|{\phi} TQBF={<ϕ>∣ϕ 是真的全量词化的布尔公式 } \} }
(全量词化:每个变量都出现在某一量词的辖域内,如 ϕ = ∀ x ∃ y [ ( x ∨ y ) ∧ ( y ‾ ∨ y ‾ ) ] {\phi={\forall}x{\exists}y[(x\vee y)\wedge(\overline{y}\vee\overline{y})]} ϕ=∀x∃y[(x∨y)∧(y∨y)] ,因此即使不需要对 x x x、 y y y 指派, ϕ \phi ϕ 也已经有了真假值)
Th 8.8: T Q B F TQBF TQBF 是 P S P A C E PSPACE PSPACE 完全的
① T Q B F TQBF TQBF 是 P S P A C E PSPACE PSPACE 问题
对每个量词的变量,然后对每个变量取 1 或 0 的情况都遍历一遍;要使得 ϕ \phi ϕ 为真:
- 对于 ∀ x \forall x ∀x ,需要 x x x 取 0 和 1 时 ϕ \phi ϕ 都为真;
- 对于 ∃ x \exists x ∃x ,需要 x x x 取 0 和 1 时 ϕ \phi ϕ 至少有一个为真;
存储的递归深度最大为每个变量都存一遍,因此可以在 O ( n ) O(n) O(n) 的空间内实现
② T Q B F TQBF TQBF 是 P S P A C E PSPACE PSPACE 完全的
模仿证明
3
S
A
T
3SAT
3SAT 是
N
P
NP
NP 问题的证法,将格局变化的合理性用布尔表达式表示:
ϕ
c
1
,
c
2
,
t
=
∃
m
1
[
ϕ
c
1
,
m
1
,
t
2
∧
ϕ
m
1
,
c
2
,
t
2
]
{\phi}_{c_1,c_2,t}={\exists}{\,}m_1[{\phi}_{c_1,m_1,\frac{t}{2}} \wedge {\phi}_{m_1,c_2,\frac{t}{2}}]
ϕc1,c2,t=∃m1[ϕc1,m1,2t∧ϕm1,c2,2t]
但是你发现这相当于把公式的长度翻了一倍,因为长度:
l
e
n
(
ϕ
c
1
,
c
2
,
t
)
≈
l
e
n
(
ϕ
c
1
,
m
1
,
t
2
)
≈
l
e
n
(
ϕ
m
1
,
c
2
,
t
2
)
len({\phi}_{c_1,c_2,t}){\approx}len({\phi}_{c_1,m_1,\frac{t}{2}}){\approx}len({\phi}_{m_1,c_2,\frac{t}{2}})
len(ϕc1,c2,t)≈len(ϕc1,m1,2t)≈len(ϕm1,c2,2t) ,这样反复递归生成的布尔表达式是原来问题的指数倍了,达不到归约的效果,因此我们借助
∀
\forall
∀ 量词:
ϕ
c
1
,
c
2
,
t
=
∃
m
1
∀
(
c
3
,
c
4
)
∈
{
(
c
1
,
m
1
)
,
(
m
1
,
c
2
)
}
[
ϕ
c
3
,
m
4
,
t
2
]
{\phi}_{c_1,c_2,t}={\exists}{\,}m_1{\forall}{\,}(c_3,c_4){\in}\{(c_1,m_1),(m_1,c_2)\}[{\phi}_{c_3,m_4,\frac{t}{2}}]
ϕc1,c2,t=∃m1∀(c3,c4)∈{(c1,m1),(m1,c2)}[ϕc3,m4,2t]
这样子就把两个递归的子公式折叠为一个子公式;令
ϕ
c
s
t
a
r
t
,
c
a
c
c
e
p
t
,
t
{\phi}_{c_{start},c_{accept},t}
ϕcstart,caccept,t ,
t
=
2
d
f
(
n
)
t=2^{df(n)}
t=2df(n) ,这样递归调用,所需栈的大小为
l
o
g
2
(
t
)
=
f
(
n
)
log_2(t)=f(n)
log2(t)=f(n) ,而子公式的增长是线性的,需要
O
(
f
(
n
)
)
O(f(n))
O(f(n)) 的空间,那么所使用的最大空间为
O
(
f
2
(
n
)
)
O(f^2(n))
O(f2(n))
注意:
-
时间复杂性中,有关 N P NP NP 完全问题的证明是建立和 布尔表达式( 3 S A T 3SAT 3SAT) 可满足性判定问题之间的关联/转换;
-
空间复杂性中,有关 P S P A C E PSPACE PSPACE 完全问题是建立和 量化布尔表达式( T Q B F TQBF TQBF) 取值是否为真值问题之间的关联/转换
博弈必胜策略
Def: F O R M U L A − G A M E = { < ϕ > ∣ FORMULA-GAME=\{ {\lt}\phi{\gt}| FORMULA−GAME={<ϕ>∣ 在与 ϕ \phi ϕ 相关联的公式博弈中选手 E E E 有必胜策略 } \} }
(一般要求 ϕ = ∃ x 1 ∀ x 2 . . . Q \phi={\exists}x_1{\forall}x_2...Q ϕ=∃x1∀x2...Q ,即具有前束范式的量词化布尔公式;选手 A A A 和选手 E E E 分别轮流为对应的变量取值;若最终为 T R U E TRUE TRUE 则选手 E E E 赢)
Th 8.10: F O R M U L A − G A M E FORMULA-GAME FORMULA−GAME 是 P S P A C E PSPACE PSPACE 完全的
事实上,这个问题和 T Q B F TQBF TQBF 是一样的,对于 ϕ = ∃ x 1 ∀ x 2 . . . Q \phi={\exists}x_1{\forall}x_2...Q ϕ=∃x1∀x2...Q,相当于是说存在对 x 1 x_1 x1 的指派,对任意 x 2 x_2 x2 的指派……使得 Q Q Q 为真,那么不就是选手 E E E 获胜嘛!
广义地理学
Def: G G = { < G , b > ∣ GG=\{ {\lt}G,b{\gt}| GG={<G,b>∣ 在图 G G G 上以结点 b b b 起始的广义地理学游戏中,选手 I I I 有必胜策略 } \} }
(给定一个城市名,选手 I I I 和 I I II II 轮流给出城市名,必须顶真一个字母,而这里的游戏中城市名是个有限集合,把城市名看作结点,可以接着给出的两个城市名有有向边相连;选手 I I I 先手)
Th 8.11: G G GG GG 是 P S P A C E PSPACE PSPACE 完全的
① G G GG GG 是 P S P A C E PSPACE PSPACE 问题
对图进行拓扑排序,则递归的深度最多为结点的个数,空间为线性空间
② G G GG GG 是 P S P A C E PSPACE PSPACE 完全的
看图吧,从 T Q B F TQBF TQBF 归约到 G G GG GG ,构成这样的图:从 b 出发,某个变量取真从左边走,取假从右边走;我们认为最后一个是存在量词,即现在已经到结点 c c c 了,并且是选手 I I II II 选择:
如果 ϕ \phi ϕ 为真,那么每个子句的三个变量中至少有一个为真,此时不论 I I II II 选择哪个子句结点, I I I 都可以选择这个子句中取值为真的变量结点;由于取值为真,因此下一步的那个节点之前就被走过了, I I II II 无路可走;
如果 ϕ \phi ϕ 为假,那么至少有一个子句的三个变量都为假,此时 I I II II 就选则这个子句结点,之后不论 I I I 选择哪个变量结点,因为是假的,因此这个变量节点的下一步那个结点之前并没有被选过,所以 I I II II 可以再走下一步,而 I I I 就是真的无路可走了;
8.4 L 和 NL 类
注意:接下来我们讨论亚线性的空间界限;但是亚线性的话甚至连输入都放不下,所以我们引入一条只读的辅助带作为输入,而只限制工作带的空间界限为亚线性
(有关亚线性类问题,可以和辅助外存、指针的运用关联起来了解)
(亚线性类问题的实质是以时间换空间,利用最有限的空间保存当前所利用的信息)
Def 8.12:
- L L L 是确定型图灵机再对数空间可判定的语言类, L = S P A C E ( l o g n ) L=SPACE(log_n) L=SPACE(logn)
- N L NL NL 是非确定型图灵机在对数空间内可判定的语言类, N L = N S P A C E ( l o g n ) NL=NSPACE(log_n) NL=NSPACE(logn)
例 8.13:语言 A = { 0 k 1 k ∣ k ≥ 0 } A=\{0^k1^k|k{\ge}0\} A={0k1k∣k≥0} 是 L L L 的成员
原来的方法是左右消除 0 和 1,现在我们直接把待判断的字符串放在输入带上,工作带上用二进制 count 0 和 1 的数目
例 8.14: P A T H PATH PATH 是 N L NL NL 的成员
从 s s s 开始,非确定地猜测下一结点,工作带上只保留当前结点的信息(其实空间复杂度是非确定的常数级);到达 t t t 后接受,或者执行 m m m 步后拒绝( m m m 是图的结点数 )
注意:这里发现,我们以前说的“ f ( n ) f(n) f(n) 空间界限的图灵机在 2 O ( f ( n ) ) 2^{O(f(n))} 2O(f(n)) 时间内运行 ” 对非常小的空间界限不再成立,比如这题,空间是 O ( 1 ) O(1) O(1) ,但是时间是 O ( n ) O(n) O(n) ,于是我们有了以下新的结论:
Def 8.15:若 M M M 是一个有制度输入带的图灵机, w w w 是输入,则 M M M 在 w w w 上的格局 包括:状态、工作带和两个读写头位置;
注意:输入 w w w 不作为 M M M 在 w w w 上的格局的一部分
注意: w w w 是长为 n n n 的输入,如果 M M M 在 f ( n ) f(n) f(n) 空间内运行,则 M M M 在 w w w 上的格局数是 n 2 O ( f ( n ) ) n2^{O(f(n))} n2O(f(n)) ,设 M M M 有 c c c 个状态和 g g g 个带子符号,则输入头有 n n n 种位置,工作头有 f ( n ) f(n) f(n) 种位置,工作带上的字符有 g f ( n ) g^{f(n)} gf(n) 种可能,工作带有 c c c 种状态,所以格局数一共是 c n f ( n ) g f ( n ) cnf(n)g^{f(n)} cnf(n)gf(n) ,即 n 2 O ( f ( n ) ) n2^{O(f(n))} n2O(f(n))
因此,当 f ( n ) ≥ l o g n f(n){\ge}log{\,}n f(n)≥logn 时,“ f ( n ) f(n) f(n) 空间界限的图灵机在 2 O ( f ( n ) ) 2^{O(f(n))} 2O(f(n)) 时间内运行 ” 的结论是成立的
8.5 NL 完全性
( L L L 是否等于 N L NL NL 的问题是未知的 )
Def 8.16:对数空间转换器 是只有一条只读输入带、一条只写输出带和一条读/写工作带的图灵机,其中:
- 输出带的读写头不能向左移动(不能读已写内容)
- 工作带可以至多包括 O ( l o g ( n ) ) O(log(n)) O(log(n)) 个符号
注意:并没有要求输入带的读取顺序,只要不改变输入带的内容,想怎么读就怎么读
对数空间转换器 M M M 计算一个函数: f : Σ ∗ → Σ ∗ f:{\Sigma^\ast}\to{\Sigma^\ast} f:Σ∗→Σ∗ ,其中 f ( w ) f(w) f(w) 是把 w w w 放到 M M M 的输入带上运行、 M M M 停机后写在 M M M 的输出带上的字符串; f f f 称为 对数空间可计算函数
Def:若语言 A A A 可通过对数空间可计算函数 f f f 映射可归约到语言 B B B ,则称 A A A 为 对数空间可归约 到 B B B ,记为 A ≤ L B A{\le}_LB A≤LB
Def 8.17:语言 B B B 是 N L NL NL 完全的,若:
- B ∈ N L B{\,}{\in}{\,}NL B∈NL
- N L NL NL 中的每个 A A A 对数空间可归约到 B B B
注意:NP完全性、PSPACE完全性其中都是多项式时间归约方式,NL完全性中是对数空间可归约
(因为 N L NL NL 中所有问题都在多项式时间内可解;我们之前说过,归约的方式必须比定义类本身的约束要更严格)
Th 8.18: A ≤ L B A{\le}_LB A≤LB 且 B ∈ L B{\,}{\in}{\,}L B∈L ,则 A ∈ L A{\,}{\in}{\,}L A∈L
(就是说,如果一个语言对数空间可归约到另一个已知属于 L L L 的语言,则这个语言也属于 L L L )
如果仿造前面证明 P P P 问题的类似结论的朴素证法的话会出问题,因为 M M M 的输入带只能读不能写,直接一次性把 w w w 转换为 f ( w ) f(w) f(w) 的话, f ( w ) f(w) f(w) 就必须保存在 M M M 的工作带上,可是装不下欸hhhh
书上说是按照需求来计算出 f ( w ) f(w) f(w) 中的个别符号,不要一次性转换,这样就可以用时间换空间
Th 8.19:若有一个 N L NL NL 完全语言属于 L L L ,则 L = N L L=NL L=NL
PATH 是 NL 完全的
Th 8.20: P A T H PATH PATH 是 N L NL NL 完全的
① P A T H PATH PATH 属于 N L NL NL 问题
例 8.14 已经证明了 P A T H PATH PATH 是 N L NL NL 的成员
② P A T H PATH PATH 是 N L NL NL 难的
即证明 N L NL NL 中任意一语言 A A A 对数空间可归约到 P A T H PATH PATH ;
算法:将输入字符串 w w w 对数空间归约映射为一个有向图,图的结点对应于非确定型图灵机在输入 w w w 上的格局,结点之间的边代表一个格局到另一个格局可以一步产生;若初始格局到接受格局之间存在路径,则接受 w w w
证明:显然 P A T H PATH PATH 有解时, A ∈ N L A{\in}NL A∈NL ;主要证明给定输入 w w w ,在对数空间内构造 < G , s , t > {\lt}G,s,t{\gt} <G,s,t>
由于格局包括状态、两个读写头的位置和工作带内容,其中最长的是工作带内容,因此给出一个对数空间转换器 M M M ,只需要顺序遍历出所有长度为 c l o g ( n ) c{\,}log(n) clog(n) 的字符串,判断它是不是 M M M 在 w w w 上的合法格局,并将合法的格局写到输出带上
(这里的 ”合法“ 并不是说要从 w w w 可以生成,而是说它至少得是个格局,而不是随机的一串;所以这次判断只要花费常数空间)
类似地, M M M 也可以枚举出所有的长度为边的长度的字符串,并且验证这是不是两条格局的边、这两个格局之间可不可以一步转化,将合法的边写到输出带上
(因为验证边只需要考虑比如 c 1 c_1 c1 格局可不可以一步到达 c 2 c_2 c2 格局,所以只需要计算出 c 1 c_1 c1 的下一格局,并与 c 2 c_2 c2 比较,因此花费空间为 c l o g ( n ) c{\,}log(n) clog(n))
Th 8.21: N L ⊆ P NL{\,}{\subseteq}{\,}P NL⊆P
只要看 N L NL NL 中的 N L NL NL 完全问题,比如刚刚的 P A T H PATH PATH 问题,前面已知 P A T H PATH PATH 是 P P P 类问题,所以显而易见
8.6 NL = coNL
这个记结论就好了hhhhh,书上是证明了 P A T H ‾ \overline{PATH} PATH 是 N L NL NL 问题,而 c o N L coNL coNL 问题都可以对数空间可归约到 P A T H ‾ \overline{PATH} PATH 上,因此成立