9.1
题目
问题 1. 证明当 TQBF(真量化布尔公式问题)限制在量词后面的部分是合取范式(CNF)时,它仍然是 PSPACE-完全的。
解答
证明步骤
步骤 1: CNF-TQBF ∈ PSPACE
步骤 2: CNF-TQBF 是 PSPACE-难(PSPACE-hard)
- 要证明 CNF-TQBF 是 PSPACE-难的,需证明标准 TQBF(其矩阵可以是任意布尔公式)可以多项式时间归约到 CNF-TQBF。
- 归约思路:给定一个标准 TQBF 实例 Φ=Q1x1Q2x2⋯Qnxnϕ(x1,…,xn),其中 ϕ 是任意布尔公式,我们将其转换为一个等价的 CNF-TQBF 实例 Φ′,其中矩阵是 CNF 形式。这通过以下步骤实现:
- 应用 Tseitin 变换:将矩阵 ϕ 转换为 CNF 形式,但引入额外的辅助变量。
- Tseitin 变换是一种多项式时间算法,可将任意布尔公式 ϕ 转换为一个 CNF 公式 ϕ′,同时引入一组新变量 y1,…,ym,使得:
ϕ(x1,…,xn)≡∃y1⋯∃ymϕ′(x1,…,xn,y1,…,ym),
其中 ϕ′ 是 CNF 公式,且变换后公式大小(变量数和子句数)是原始公式大小的线性倍(因此多项式时间可完成)。
- 新变量 y1,…,ym 是“存在量化”的,因为它们用于编码 ϕ 的子公式的结构,确保 ϕ′ 在逻辑上等价于 ϕ(在给定存在量词下)。
- 构造新公式:将 Tseitin 变换的结果嵌入原量词序列中:
Φ′=Q1x1Q2x2⋯Qnxn∃y1⋯∃ymϕ′(x1,…,xn,y1,…,ym).
- 这里,新添加的量词 ∃y1⋯∃ym 被放置在原量词序列的最后(即最内层),因为辅助变量 yi 依赖于所有先前的变量 x1,…,xn。
- 等价性证明:Φ 等价于 Φ′,即:
Φ 为真⟺Φ′ 为真.
- 理由:由 Tseitin 变换的性质,对于任意固定赋值给 x1,…,xn,存在赋值给 y1,…,ym 使得 ϕ′(x1,…,xn,y1,…,ym) 为真当且仅当 ϕ(x1,…,xn) 为真。因此,整个量化公式的真值被保留。
- 量词顺序不变(仅在最内层添加存在量词),因此等价性成立。
- 矩阵是 CNF:ϕ′ 是 CNF 公式,因此 Φ′ 是一个有效的 CNF-TQBF 实例。
- 归约复杂度:Tseitin 变换可在多项式时间内完成(相对于原始公式大小),且引入的新变量和子句数量是原始公式大小的线性函数,因此整个归约是多项式时间。
- PSPACE-难性:由于标准 TQBF 是 PSPACE-完全的,且我们给出了从 TQBF 到 CNF-TQBF 的多项式时间归约,因此 CNF-TQBF 是 PSPACE-难的。
9.2
题目
设 SUM={(x,y,z)∣x,y,z>0 是满足 x+y=z 的二进制整数}。证明 SUM∈L。
解答
假设输入格式为字符串 w=x#y#z,其中 # 是分隔符。
算法描述
-
计算字符串长度:
- 扫描输入,计算 x 的长度 lenx:初始化计数器 lenx=0,从输入起始位置向右扫描,每读到一个非 # 字符,lenx 加 1,直到遇到第一个 #。
- 类似地,计算 y 的长度 leny:从第一个 # 后开始,初始化 leny=0,扫描直到第二个 #,每读一个字符,leny 加 1。
- 计算 z 的长度 lenz:从第二个 # 后开始,初始化 lenz=0,扫描直到输入结束,每读一个字符,lenz 加 1。
- 空间分析:每个长度计数器最多为 n,存储需 O(logn) 位。
-
计算最大位置:
- 计算 max_lenxy=max(lenx,leny)。
- 设 max_pos=max_lenxy+1(因为 z 可能比 max(lenx,leny) 多一位)。
- 空间分析:max_lenxy 和 max_pos 最多为 n+1,存储需 O(logn) 位。
-
初始化进位:
- carry=0(初始进位)。
- 空间分析:carry 为 0 或 1,需 O(1) 空间。
-
逐位加法验证:
- 对于位置 t 从 0 到 max_pos(包含):
- 计算索引:
- 对于 x,索引 ix=lenx−t(若 1≤ix≤lenx,则位有效,否则为 0)。
- 对于 y,索引 iy=leny−t(若 1≤iy≤leny,则位有效,否则为 0)。
- 对于 z,索引 iz=lenz−t(仅当比较时需要)。
- 获取位值:
- bitx={input[ix]0if 1≤ix≤lenxotherwise
- bity={input[starty+iy−1]0if 1≤iy≤lenyotherwise
其中 starty=lenx+2(y 的起始位置)。
- 类似地,z 的起始位置 startz=lenx+leny+3。
- 空间分析:索引计算和位置值最多为 O(n),存储需 O(logn) 位。
- 计算和与期望位:
- s=bitx+bity+carry
- exp_z_bit=smod2
- new_carry=⌊s/2⌋
- 空间分析:s≤3,exp_z_bit 和 new_carry 为常数大小,需 O(1) 空间。
- 验证:
- 若 t<lenz:
- 获取实际位 bitz=input[startz+iz−1](若 1≤iz≤lenz)。
- 若 bitz=exp_z_bit,拒绝。
- 若 t≥lenz:
- 若 exp_z_bit=0,拒绝(因为 z 无此位,但期望值非零)。
- 更新进位:carry=new_carry.
- 空间分析:t 最多为 max_pos≤n+1,存储需 O(logn) 位。
-
结束处理:
- 循环结束后,若未拒绝,则接受(即 x+y=z)。
- 注意:在 t=max_pos 时,new_carry 必为 0,因此无需额外检查进位。
空间复杂度分析
- 存储的长度(lenx,leny,lenz)需 O(logn) 位。
- max_lenxy,max_pos,t 需 O(logn) 位。
- 进位(carry,new_carry)需 O(1) 空间。
- 临时变量(索引、位值、和等)需 O(logn) 或 O(1) 空间。
- 总工作空间为 O(logn).
9.3
题目
(a) 一个无向图是二分图(bipartite),如果其节点可以被划分为两个集合,使得所有边都连接一个集合中的节点与另一个集合中的节点。证明一个图是二分图当且仅当它不包含节点数为奇数的环(即奇环)。
(b) 设 BIPARTITE={⟨G⟩∣G 是一个二分图}。证明 BIPARTITE 属于复杂度类 NL(非确定性对数空间)。
解答
(a) 证明:一个图是二分图当且仅当它不包含奇环
-
如果 G 是二分图,则 G 中不存在奇环。
假设 G 是二分图,则节点集 V 可以被划分为两个不相交的集合 U 和 V,使得每条边都连接 U 中的一个节点和 V 中的一个节点(即没有边在同一个集合内)。
考虑 G 中的任意一个环 C=v1−v2−⋯−vk−v1,其中 k≥3。由于 G 是二分图,节点在环中必须交替地属于 U 和 V。不失一般性,假设 v1∈U。则:
- v2∈V(因为边 (v1,v2) 连接 U 和 V),
- v3∈U(因为边 (v2,v3) 连接 V 和 U),
- 依此类推。
一般地,对于节点 vi:
- 如果 i 是奇数,则 vi∈U,
- 如果 i 是偶数,则 vi∈V.
现在,考虑节点 vk 和 v1:
- 如果 k 是奇数,则 vk∈U(因为 k 奇数)。
- 但边 (vk,v1) 要求 vk 和 v1 属于不同集合,而 v1∈U 和 vk∈U 矛盾(因为两者都在 U)。
因此,当 k 为奇数时,环 C 不可能存在。换言之,G 中不存在奇环。
如果 k 是偶数,则 vk∈V 和 v1∈U 属于不同集合,没有矛盾,因此偶环可以存在。
-
如果 G 中不存在奇环,则 G 是二分图。
假设 G 中不存在奇环。需要证明 G 是二分图。由于图的连通分量相互独立,如果每个连通分量都是二分图,则整个图是二分图。因此,只需考虑 G 连通的情况(若不连通,对每个连通分量单独证明)。
选取一个起始节点 s∈V。通过 BFS(广度优先搜索)对节点着色:
- 令层 0 为 {s},着色为颜色 0。
- 层 1 为 s 的所有邻居,着色为颜色 1。
- 层 2 为层 1 节点的所有未访问邻居,着色为颜色 0。
- 依此类推,交替着色。
具体地,对每个节点,根据其 BFS 层数(距离 s 的最短路径长度)着色:
- 如果距离为偶数,着色为颜色 0。
- 如果距离为奇数,着色为颜色 1。
现在,证明这种着色是有效的二分图着色:即每条边都连接不同颜色的节点(即不同集合)。
在 BFS 中,所有边要么连接相邻层(即距离相差 1 的节点),要么可能连接同层节点(如果存在非树边)。如果存在一条边连接同层的两个节点,则会导致矛盾。
假设存在边 (u,v) 且 u 和 v 都在同一层 k(即 dist(s,u)=dist(s,v)=k)。设 x 是 s 到 u 和 s 到 v 的最短路径上的最后一个共同祖先节点。令 d=dist(s,x),则:
- dist(x,u)=k−d,
- dist(x,v)=k−d.
路径 x→u 和 x→v 是不相交的(因为 x 是最后一个共同节点)。考虑路径:x→u→v→x(即从 x 到 u,然后边 (u,v),然后从 v 返回 x)。这形成一个环,其长度为:
dist(x,u)+1+dist(x,v)=(k−d)+1+(k−d)=2(k−d)+1,
这是奇数(因为 2(k−d) 是偶数,加 1 为奇数)。
由于路径 x→u 和 x→v 不相交,这是一个简单环。因此,G 中存在奇环,与假设矛盾。
故,不存在边连接同层节点。所有边都连接相邻层(距离相差 1),因此每条边都连接颜色 0 和颜色 1 的节点。着色有效,G 是二分图。
(b) 证明 BIPARTITE 属于 NL
利用 Immerman-Szelepcsényi 定理:由于 NL = coNL,证明 BIPARTITE={⟨G⟩∣G 不是二分图} 属于 NL 即可。等价地,证明检查“是否存在奇环”在 NL 中。
算法思路:
- 非确定性猜测一个起始节点 v0。
- 从 v0 开始非确定性遍历一条路径,记录当前节点、路径长度模 2(奇偶性),以及步数计数器。
- 如果在某步移动后,当前节点回到 v0 且路径长度模 2 为 1(奇数),则接受(找到奇闭行走,隐含奇环)。
详细算法:
- 非确定性选择一个起始节点 v0∈V(存储 v0,需要 ⌈log2n⌉ 位)。
- 初始化:
- 当前节点 c←v0,
- 当前路径长度模 2 len←0,
- 步数计数器 step←0(用于限制路径长度,避免无限循环)。
- 重复以下步骤最多 n 次(因为路径长度超过 n 时必有重复节点):
- 非确定性选择一个邻居 d 与 c 相邻(通过扫描输入磁带检查边 (c,d) 是否存在)。
- 更新:
- cnext←d,
- new_len←(len+1)mod2(更新长度奇偶性)。
- 检查:如果 cnext=v0 且 new_len=1,则接受(找到从 v0 到 v0 的奇闭行走)。
- 否则,设置:
- c←cnext,
- len←new_len,
- step←step+1.
- 如果步数超过 n 仍未接受,则拒绝。
空间分析:
- 存储 v0:O(logn) 位。
- 存储当前节点 c:O(logn) 位。
- 存储 len(模 2):1 位。
- 存储步数计数器 step(计数到 n):O(logn) 位。
总空间:O(logn),符合 NL 要求。
正确性:
- 如果 G 有奇环: 设奇环为 C=v0−v1−⋯−vk−v0,其中 k 为奇数。非确定性选择 v0 为起始节点,并沿环遍历:从 v0 到 v1,再到 v2,…,最后回到 v0。移动 k 步后:
- 初始:c=v0, len=0。
- 第 k 步移动后:cnext=v0, new_len=(lenprev+1)mod2。由于环长 k 为奇数,且 lenprev 为 k−1(偶数),故 new_len=even+1=odd=1。满足接受条件,M 接受。
- 如果 G 无奇环: 则不存在奇闭行走。对于任何 v0 和任何路径,当移动回 v0 时,路径长度必为偶数(否则与无奇环矛盾)。因此,new_len=1 的条件永不满足,M 不接受。
9.4
题目
设 S(n)≥logn 是一个空间可构造函数。证明 NSPACE(S(n))=coNSPACE(S(n)) 是 NL=coNL 的一个推论。
解答
设 L 是一个语言,使得 L∈coNSPACE(S(n))。则其补语言 L∈NSPACE(S(n))。即存在一个非确定性图灵机 M 在空间 O(S(n)) 内判定 L。
由于 PATH(有向图可达性问题)是 NSPACE(S(n))-完全的(对于 S(n)≥logn),存在一个对数空间规约将 L 规约到 PATH。具体地:
- 给定输入 x(长度 n=∣x∣),规约机器输出一个配置图 G 和两个节点 s,t。
- x∈L 当且仅当在 G 中存在从 s 到 t 的路径。
- 等价地,x∈L 当且仅当在 G 中不存在从 s 到 t 的路径,即 (G,s,t)∈coPATH。
- 图 G 的节点数 N=2O(S(n))(因为空间界限为 S(n),配置大小 O(S(n)),配置数 2O(S(n)))。
- 输入到 coPATH 的大小 m(即描述 (G,s,t) 的字符串长度)满足 m=Θ(Nk)=2O(S(n)) 对于某个常数 k(例如,使用邻接矩阵表示时 m=O(N2))。
由假设 NL=coNL,且 PATH 是 NL-完全的,因此 coPATH ∈coNL=NL。即 coPATH 可用非确定性图灵机在空间 O(logm) 内判定(相对于输入大小 m)。
现在构造一个非确定性图灵机 M′ 判定 L:
- 在输入 x(长度 n) 上,运行对数空间规约,生成 (G,s,t)。
- 规约使用确定性空间 O(logn)(因为是对数空间规约)。
- 输出 (G,s,t) 的大小 m=2O(S(n))。
- 在输出 (G,s,t) 上,非确定性判定 coPATH。
- 使用空间 O(logm).
- 由于 m=2O(S(n)),有 logm=O(S(n)),因此空间为 O(S(n)).
总空间使用:
- 规约步骤:空间 O(logn)。
- coPATH 判定:空间 O(logm)=O(S(n))。
- 因为 S(n)≥logn,有 O(logn)⊆O(S(n)),故总空间为 O(S(n)).
M′ 接受 x 当且仅当 (G,s,t)∈coPATH,即当且仅当 x∈L。因此,L∈NSPACE(S(n)).
综上,对任意 L∈coNSPACE(S(n)),有 L∈NSPACE(S(n)),即 coNSPACE(S(n))⊆NSPACE(S(n))。由对称性(或类似论证),NSPACE(S(n))⊆coNSPACE(S(n)) 也成立(因为补的补是原语言)。故 NSPACE(S(n))=coNSPACE(S(n)).