计算复杂性理论习题及解答
计算复杂性理论习题及解答。
计算复杂性理论习题及解答
计算复杂性课程这门课的一共有48学时,其中的思想需要慢慢品味。不得不承认,我仅仅学习了一些皮毛,很多东西都没有搞懂。下面是我整理的作业题答案,肯定有很多地方是错误的,仅供参考。
第1章 计算理论
问题1
设计一个计算两个自然数相乘的图灵机。
解答:
设计一个三带图灵机。第一条带子为输入带,第二条带子为草稿带,第三条带子用于保存结果。图灵机将自然数乘运算转换为移位运算和加法运算。首先,将乘数复制到第二条带子上,读取被乘数的高位,若被乘数的高位为1,则进行对乘数进行相应的移位运算;否则,读取被乘数的下一位。第二条带子上移位运算完成后,再与第三条带子上保存的结果相加。
问题2
在第14页,定义了何谓一台图灵机 M \mathbb{M} M解决一个问题 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f:\{0,1\}^{*}\rightarrow\{0,1\}^{*} f:{0,1}∗→{0,1}∗。证明绝大部分问题是不可计算的。
解答:
我的答案错的离谱,就不写了。
助教给的意见:这道题是希望你证明可计算问题的数目是可数的(与自然数等势),而所有问题的总数是不可数的(与实数等势)。
问题3
设计一台将一进制数 1 n 1^{n} 1n转换成二进制数 ⌞ n ⌟ \llcorner n\lrcorner └n┘的图灵机。你设计的图灵机的时间函数是什么?将二进制数转换成一进制数呢?
解答:
-
一进制数转换成二进制数:
- 设计一个双带图灵机。其中一条带子为输入带,另外一条带子用于保存结果和打草稿。第二条带子上初始化为0。从左向右扫描输入的一进制数。若未读取完输入,则从左向右扫描第二条带子。若第二条带子上的读写头所指位置为1,则置0,读写头向右移动一格;若第二条带子上的读写头所指位置为0,则置1,读写头移动到最左端。
- 时间函数为 n l o g ( n ) nlog(n) nlog(n),其中, n n n为输入长度。
-
二进制数转换成一进制数:
- 设计一个三带图灵机。其中一条带子为输入带,第二条打草稿,第三条用于保存结果。从左向右扫描输入的二进制数。在第二条带子上记录输入带的读写头位置。若输入带读写头所指位置为1,则根据第二条带子上记录输入带的读写头位置,向第三条带子上写相应数量的1。
- 时间函数为 n 2 n n2^{n} n2n,其中, n n n为输入长度。
问题7
设 T ( n ) , T ′ ( n ) T(n),T'(n) T(n),T′(n)为时间可构造。证明 T ( n ) + T ′ ( n ) T(n)+T'(n) T(n)+T′(n)、 T ( n ) ⋅ T ′ ( n ) T(n){\cdot}T'(n) T(n)⋅T′(n)、 T ( n ) T ′ ( n ) T(n)^{T'(n)} T(n)T′(n)均为时间可构造。能证明 T ( n ) / T ′ ( n ) T(n)/T'(n) T(n)/T′(n)是时间可构造吗? log T ( n ) \log T(n) logT(n)呢?
解答:
-
因为 T ( n ) T(n) T(n)为时间可构造,所以, ∃ M \exists M ∃M在 C T ( n ) CT(n) CT(n)步内停机。因为 T ′ ( n ) T'(n) T′(n)为时间可构造,所以, ∃ M ′ \exists M' ∃M′在 C T ′ ( n ) CT'(n) CT′(n)步内停机。
-
O ( T ( n ) + T ′ ( n ) ) = O ( T ( n ) ) ∣ O ( T ′ ( n ) ) O(T(n)+T'(n))=O(T(n)) | O(T'(n)) O(T(n)+T′(n))=O(T(n))∣O(T′(n)),所以, M ∣ M ′ M | M' M∣M′在 C T ( T ( n ) + T ′ ( n ) ) CT(T(n)+T'(n)) CT(T(n)+T′(n))步内停机。因此, T ( n ) + T ′ ( n ) T(n)+T'(n) T(n)+T′(n)时间可构造。
-
构造一个图灵机 T T T, T T T复合了 M M M和 M ′ M' M′, M M M每执行一步,都要运行一次 M ′ M' M′,当 M M M和 M ′ M' M′均停机时, T T T停机。 T T T在 C T ( n ) ⋅ T ′ ( n ) CT(n){\cdot}T'(n) CT(n)⋅T′(n)步内停机。因此, T ( n ) ⋅ T ′ ( n ) T(n){\cdot}T'(n) T(n)⋅T′(n)时间可构造。
-
构造一个图灵机 T T T,依次运行 M , M ′ M,M' M,M′,记录运行步数 x , y x,y x,y. T T T每执行一步,都会产生 x x x个迁移函数,选择其中一个迁移函数. T T T执行 y y y步后,重新回到跟节点,直到遍历完整棵树。 T T T在 T ( n ) T ′ ( n ) T(n)^{T'(n)} T(n)T′(n)步内停机。因此, T ( n ) T ′ ( n ) T(n)^{T'(n)} T(n)T′(n)时间可构造。
-
设 T ( n ) = n , T ′ ( n ) = n 2 T(n)=n,T'(n)=n^2 T(n)=n,T′(n)=n2,$\frac{1}{n} 不时间可构造, 不时间可构造, 不时间可构造,log(n) 不时间可构造 . 因此, 不时间可构造. 因此, 不时间可构造.因此,T(n)/T’(n) 不时间可构造, 不时间可构造, 不时间可构造,\log T(n)$不时间可构造。
问题8
如果在定理1.2的证明中,我们让 ∣ R i ∣ = 2 ⋅ 2 i 2 |R_i|=2{\cdot}2^{i^{2}} ∣Ri∣=2⋅2i2。证明在哪一步会出问题?如果没有问题的话,我们会得到一个更高效的通用图灵机!
解答:
涉及对区间 L i , ⋯ , L 0 , R 0 , ⋯ , R i L_i,\cdots,L_0,R_0,\cdots,R_i Li,⋯,L0,R0,⋯,Ri的调整次数的计算会出现问题。
问题10
证明推论1.3。
解答:
将图灵机 M M M中的长度是 m m m的符号串用图灵机 M ′ M' M′中的一个符号表示。 M ′ M' M′的计算时间不超过 n + 2 + n m + 5 m T ( n ) n+2+\frac{n}{m}+\frac{5}{m}T(n) n+2+mn+m5T(n).
T ( n ) T(n) T(n)的增长速度严格大于线性函数, n + 2 + n m + 5 m T ( n ) < 6 m T ( n ) n+2+\frac{n}{m}+\frac{5}{m}T(n)<\frac{6}{m}T(n) n+2+mn+m5T(n)<m6T(n).
因此,对 ∀ ϵ > 0 \forall \epsilon >0 ∀ϵ>0,均存在图灵机 M ′ M' M′, M ′ M' M′能在 ϵ T ( n ) \epsilon T(n) ϵT(n)步内判定 L L L.
问题11
利用分配律 x ∧ ( y ∨ z ) = ( x ∧ y ) ∨ ( x ∧ z ) x\wedge(y\vee z)=(x\wedge y)\vee(x\wedge z) x∧(y∨z)=(x∧y)∨(x∧z)和 x ∨ ( y ∧ z ) = ( x ∨ y ) ∧ ( x ∨ z ) x\vee(y\wedge z)=(x\vee y)\wedge(x\vee z) x∨(y∧z)=(x∨y)∧(x∨z),是否可在多项式时间内将合(析)取范式转换成析(合)取范式?
解答:
不能,除非 P=NP。
注意到 DNF-SAT 问题是P的:只需要任何一个子句可满足即可。而如果 CNF 可以在多项式时间内转化为 DNF,那么 CNF-SAT 也是 P的,矛盾。
助教给的意见:这题的结果不需要依赖P不等于NP的假设。考虑最简单的2CNF,假设它包含n个literal,如果用分配律展开,得到的DNF将会有 2 n 2^n 2n个term,因而转换过程会花费指数时间。
问题13
说明:若忽略不终止性,在第35页上定义的非确定的“通用”图灵机是正确的。
解答:
所猜测的快照序列反映了 N α ( x ) \mathbb{N}_\alpha (x) Nα(x) 的一个终止与接受状态的计算路径,可以模拟输入图灵机的运行。
问题14
证明命题1。
解答:
若 A ≤ K B ≤ K C A \le _K B \le _K C A≤KB≤KC,则从 A A A到 B B B有一个多项式可以计算的 m m m-可计算函数 f ( x ) f(x) f(x), 从 B B B到 C C C有一个多项式可以计算的 m m m-可计算函数 g ( x ) g(x) g(x). 从 A A A到 C C C有一个多项式可以计算的 m m m-可计算函数 g ( f ( x ) ) g(f(x)) g(f(x)),因此, A ≤ K C A \le _K C A≤KC.
若 A ≤ C B ≤ C C A \le _C B \le _C C A≤CB≤CC,则 A ∈ P B A \in P^{B} A∈PB, B ∈ P C B \in P^{C} B∈PC. 显然, A ∈ P C A \in P^{C} A∈PC,因此, A ≤ C C A \le _C C A≤CC
问题15
证明 E X P E X P = 2 \mathbf{EXP}^{\mathbf{EXP}}=2 EXPEXP=2- E X P \mathbf{EXP} EXP。
解答:
设 L ∈ E X P E X P L \in \mathbf{EXP}^{\mathbf{EXP}} L∈EXPEXP, L L L由图灵机 E E E在指数时间判定, E E E在计算时会用到一个 E X P \mathbf{EXP} EXP中的神谕 O O O.对于长度为 n n n的输入,调用神谕 O O O时,对应的输入长度为 2 n 2 2^{\frac{n}{2} } 22n。此时,可以判定 2 2 2- E X P \mathbf{EXP} EXP的问题。因此, E X P E X P = 2 \mathbf{EXP}^{\mathbf{EXP}}=2 EXPEXP=2- E X P \mathbf{EXP} EXP。
助教给的意见:还需要证明另一个方向 2 − E X P ∈ E X P E X P 2-EXP \in EXP^{EXP} 2−EXP∈EXPEXP。假设 M ∈ 2 − E X P M \in 2-EXP M∈2−EXP,我们需要构造 M ’ ∈ E X P E X P M’\in EXP^{EXP} M’∈EXPEXP来模拟 M M M。 M ′ M' M′会在输入 x x x的末尾填充指数多个冗余比特得到 y y y,然后用新的 y y y去调用神谕 A A A, A ( y ) A(y) A(y)去模拟 M ( x ) M(x) M(x)的运行并输出对应的结果(注意神谕A的输入 y y y是指数长,运行时间是双指数,所以它属于 E X P EXP EXP类)。
问题16
证明 2 SAT ∈ P 2\texttt{SAT}\in\mathbf{P} 2SAT∈P。
解答:
假设2-SAT问题中有 N N N个变量,则构造一个有向图包含 2 N 2N 2N个节点。每个节点代表一个变量或者变量的非(即代表一个文字)。对每个子句 a ∨ b a \vee b a∨b,在途中加2条有向边 ( ¬ a \neg a ¬a, b b b)和( ¬ b \neg b ¬b, a a a) 。然后对这个有向图求强连通分量,把每个强连通分量看作一个点(缩点),这样新的有向图是无环的(无环有向图又叫DAG)。如果一个强连通分量里同时包含了同一个变量以及它的非,则原问题是不可满足的。否则,我们可以构造解,对这个DAG可以进行拓扑排序,按照节点的拓扑排序顺序的倒序进行如下操作:找到此顺序中第一个没有标记的节点,把此节点标记成true,并且把和此节点矛盾的节点(一个节点包含了 a a a,另外一个节点包含了 ¬ a \neg a ¬a,则称它们是矛盾的),以及祖先标记成false,直到所有节点都有标记,结束。这些标记也对应着变量的取值。
该算法可以找到一组2-SAT的可行解,或者判断无解。
该算法的复杂度:求强连通分量、拓扑排序、以及遍历图都是O( m m m)的,其中 m m m是边数。
因此, 2 SAT ∈ P 2\texttt{SAT}\in\mathbf{P} 2SAT∈P
问题17
写一段对数空间程序,解决在(1.16.1)中定义的问题 MULP \texttt{MULP} MULP。
解答:
c=0;
while(b>0){
c=c*2;
if(b%2){
c=c+a;
}
b=b/2;
}
问题18
证明定理1.13。
解答:
M ′ M' M′可以从 M = ( Q , Γ , δ ) M=(Q,\Gamma ,\delta ) M=(Q,Γ,δ)构造出来。一个简单的想法是: M ′ = ( Q ′ , Γ ′ , δ ′ ) M'=(Q',\Gamma ',\delta ') M′=(Q′,Γ′,δ′)的符号集需要包含$\Gamma 和笛卡尔集 和笛卡尔集 和笛卡尔集\Gamma ^{m} ; 换言之,长度为 ;换言之,长度为 ;换言之,长度为m 的 的 的\Gamma ^{*} 中的符号串可以用 中的符号串可以用 中的符号串可以用\Gamma ' 中的一个符号表示。令 中的一个符号表示。令 中的一个符号表示。令m=1/\epsilon , 则 ,则 ,则M’ 可以在 可以在 可以在\epsilon S(n)+1 空间中判定 空间中判定 空间中判定L$。
问题21
说明定理1.17的证明中构造的 φ x \varphi_x φx是对数空间可计算的。
解答:
要输出 φ x \varphi_x φx,只需记住正在输出哪个 φ i \varphi_i φi。因此只需维护一个长度是 l o g S ( ∣ x ∣ ) log S(|x|) logS(∣x∣) 的计数器。
问题23
证明 P S P A C E P S P A C E = P S P A C E \mathbf{PSPACE}^{\mathbf{PSPACE}}=\mathbf{PSPACE} PSPACEPSPACE=PSPACE。
解答:
设 L ∈ P S P A C E P S P A C E L \in \mathbf{PSPACE}^{\mathbf{PSPACE}} L∈PSPACEPSPACE, L L L由图灵机 M M M在多项式空间判定, M M M在计算时会用到一个 P S P A C E \mathbf{PSPACE} PSPACE中的神谕 O O O. 在整个执行过程中,仍然只使用了多项式空间。因此, P S P A C E P S P A C E = P S P A C E \mathbf{PSPACE}^{\mathbf{PSPACE}}=\mathbf{PSPACE} PSPACEPSPACE=PSPACE。
助教给的意见: 由于 P S P A C E PSPACE PSPACE的图灵机可能会调用 P S P A C E PSPACE PSPACE的Oracle指数多次,所以要指出空间是可以重用的这一关键性质。
第2章 难解性
问题1
证明:假定 N P ≠ P \mathbf{NP}\ne\mathbf{P} NP=P,不存在保持可满足性的多项式时间算法将合取范式转换成析取范式。
解答:
假设存在保持可满足性的多项式时间算法将合取范式转换成析取范式。注意,DNF-SAT问题是 P \mathbf{P} P的,而CNF-SAT问题是 N P \mathbf{NP} NP的。因为存在保持可满足性的多项式时间算法将合取范式转换成析取范式,所以CNF-SAT问题可以卡普规约到DNF-SAT问题,那么CNF-SAT问题也是 P \mathbf{P} P的。因为 N P ≠ P \mathbf{NP}\ne\mathbf{P} NP=P,矛盾。因此,不存在保持可满足性的多项式时间算法将合取范式转换成析取范式。
问题2
证明:若 A , B ∈ N P A,B\in\mathbf{NP} A,B∈NP,则 A ∪ B , A ∩ B , A B ∈ N P A\cup B,A\cap B,AB\in\mathbf{NP} A∪B,A∩B,AB∈NP。
解答:
A
,
B
∈
N
P
A,B\in\mathbf{NP}
A,B∈NP,即
x
1
∈
A
,
∃
u
1
∈
{
0
,
1
}
p
1
(
∣
x
1
∣
)
.
M
1
(
x
1
,
u
1
)
=
1
x_1 \in A ,\exists u_1 \in \left \{ 0,1 \right \} ^{p_1(|x_1|)}.\mathbb{M}_1 (x_1,u_1)=1
x1∈A,∃u1∈{0,1}p1(∣x1∣).M1(x1,u1)=1
x
2
∈
B
,
∃
u
2
∈
{
0
,
1
}
p
2
(
∣
x
2
∣
)
.
M
2
(
x
2
,
u
2
)
=
1
x_2 \in B ,\exists u_2 \in \left \{ 0,1 \right \} ^{p_2(|x_2|)}.\mathbb{M}_2 (x_2,u_2)=1
x2∈B,∃u2∈{0,1}p2(∣x2∣).M2(x2,u2)=1
可以得到:
x
∈
A
∪
B
,
∃
u
∈
{
0
,
1
}
p
(
∣
x
∣
)
.
M
(
x
,
u
)
=
1
x \in A\cup B, \exists u \in \left \{ 0,1 \right \} ^{p(|x|)}.\mathbb{M} (x,u)=1
x∈A∪B,∃u∈{0,1}p(∣x∣).M(x,u)=1
其中,
p
p
p为
p
1
,
p
2
p_1,p_2
p1,p2的复合。
M
\mathbb{M}
M为
M
1
\mathbb{M}_1
M1和
M
2
\mathbb{M}_2
M2的复合,如果
M
1
\mathbb{M}_1
M1和
M
2
\mathbb{M}_2
M2中有一个输出1,则
M
\mathbb{M}
M输出1。
p
p
p为多项式,
M
\mathbb{M}
M为多项式时间图灵机。因此,
A
∪
B
∈
N
P
A\cup B\in\mathbf{NP}
A∪B∈NP。
可以得到:
x
∈
A
∩
B
,
∃
u
∈
{
0
,
1
}
p
(
∣
x
∣
)
.
M
(
x
,
u
)
=
1
x \in A\cap B, \exists u \in \left \{ 0,1 \right \} ^{p(|x|)}.\mathbb{M} (x,u)=1
x∈A∩B,∃u∈{0,1}p(∣x∣).M(x,u)=1
其中,
p
p
p为
p
1
,
p
2
p_1,p_2
p1,p2的复合。
M
\mathbb{M}
M为
M
1
\mathbb{M}_1
M1和
M
2
\mathbb{M}_2
M2的复合,如果
M
1
\mathbb{M}_1
M1和
M
2
\mathbb{M}_2
M2均输出1,则
M
\mathbb{M}
M输出1。
p
p
p为多项式,
M
\mathbb{M}
M为多项式时间图灵机。因此,
A
∩
B
∈
N
P
A\cap B\in\mathbf{NP}
A∩B∈NP。
可以得到:
x
∈
A
B
,
∃
u
∈
{
0
,
1
}
p
(
∣
x
∣
)
.
M
(
x
,
u
)
=
1
x \in AB, \exists u \in \left \{ 0,1 \right \} ^{p(|x|)}.\mathbb{M} (x,u)=1
x∈AB,∃u∈{0,1}p(∣x∣).M(x,u)=1
其中,
p
p
p为
p
1
,
p
2
p_1,p_2
p1,p2的复合。
M
\mathbb{M}
M为
M
1
\mathbb{M}_1
M1和
M
2
\mathbb{M}_2
M2的复合,如果
M
1
\mathbb{M}_1
M1和
M
2
\mathbb{M}_2
M2均输出1,则
M
\mathbb{M}
M输出1。
p
p
p为多项式,
M
\mathbb{M}
M为多项式时间图灵机。因此,
A
B
∈
N
P
AB\in\mathbf{NP}
AB∈NP。
助教给的意见:M为M_1和M_2的复合表意不清,判定第二种情况 (A \cap B)以及第三种情况 (AB, 表示concatenation操作)的图灵机M显然是不同的。
问题3
设 A ∈ N P C A\in\mathbf{NPC} A∈NPC和 B ∈ P B\in\mathbf{P} B∈P。证明:若 A ∩ B = ∅ A\cap B=\emptyset A∩B=∅,则 A ∪ B ∈ N P C A\cup B\in\mathbf{NPC} A∪B∈NPC。
解答:
A ∈ N P C A\in\mathbf{NPC} A∈NPC,因此, ∀ L ∈ N P , L ≤ K A \forall L \in \mathbf{NP},L \le _K A ∀L∈NP,L≤KA,并且 A ∈ N P A \in \mathbf{NP} A∈NP。若 A ∩ B = ∅ A\cap B=\emptyset A∩B=∅,显然, A ≤ K A ∪ B A \le _K A\cup B A≤KA∪B,并且 A ∪ B ∈ N P A\cup B\in\mathbf{NP} A∪B∈NP。
∀ L ∈ N P , L ≤ K A ∪ B , A ∪ B ∈ N P \forall L \in \mathbf{NP},L \le _K A\cup B,A\cup B\in\mathbf{NP} ∀L∈NP,L≤KA∪B,A∪B∈NP。因此, A ∪ B ∈ N P C A\cup B\in\mathbf{NPC} A∪B∈NPC。
助教给的意见:在你这个证明中,应当给出A到 A U B 的规约函数并且说明正确性。
更改:对于 A A A问题的判定,输入 x x x,可以先调用 B B B对应的图灵机,若在 B B B中,则说明 x ∉ A x \notin A x∈/A,输出0;若在 B B B中,直接调用 A ∪ B A\cup B A∪B对应的图灵机。这个规约过程是多项式时间的,因此 A ≤ K A ∪ B A \le _K A\cup B A≤KA∪B。
问题4
证明: SAT ≤ K IP \texttt{SAT}\le_{K}\texttt{IP} SAT≤KIP。
解答:
IP \texttt{IP} IP问题即为整数规划问题, A x ≥ b Ax\ge b Ax≥b。其中, A A A为 m × n m×n m×n的整数矩阵, b b b为 m m m维整数向量, x x x为 n n n维整数向量。
我们可以对CNF进行一遍扫描,设置矩阵 A A A。 m m m为CNF的clause数量, n n n为CNF中不同的literal数量。 A A A中元素为0或1, b b b中元素均为1。从而,将 SAT \texttt{SAT} SAT问题转化为0,1整数规划问题。规约过程中使用多项式时间的规约函数,因此, SAT ≤ K IP \texttt{SAT}\le_{K}\texttt{IP} SAT≤KIP。
助教给的意见:要说明规约如何实现,即对应的整数规划问题中的约束条件是什么,进一步还要说明规约的正确性。
问题7
设 TMEXP \texttt{TMEXP} TMEXP为语言 { ⟨ α , x , 1 n ⟩ ∣ M α ( x ) 在 2 n 步内输出 1 } \{\langle\alpha,x,1^{n}\rangle \mid \mathbb{M}_{\alpha}(x)\text{在}2^n\text{步内输出}1\} {⟨α,x,1n⟩∣Mα(x)在2n步内输出1}。证明 TMEXP \texttt{TMEXP} TMEXP是 E X P \mathbf{EXP} EXP-完全的。这种构造时间复杂性类完全问题的一般方法是否适用于空间复杂性类,比如 P S P A C E \mathbf{PSPACE} PSPACE?
解答:
设 L ∈ E X P L \in \mathbf{EXP} L∈EXP可由一个指数时间的图灵机 M \mathbb{M} M计算, M M M在 2 ∣ x ∣ c 2^{|x|^c} 2∣x∣c步内停机。容易将 L L L归约到 ⟨ ⌞ M ⌟ , x , 1 ∣ x ∣ c ⟩ ∈ TMEXP \langle \llcorner \mathbb{M}\lrcorner,x,1^{|x|^c}\rangle \in \texttt{TMEXP} ⟨└M┘,x,1∣x∣c⟩∈TMEXP。规约时间是多项式的。显然, TMEXP ∈ E X P \texttt{TMEXP} \in \mathbf{EXP} TMEXP∈EXP.因此, TMEXP \texttt{TMEXP} TMEXP是 E X P \mathbf{EXP} EXP-完全的。
这种构造时间复杂性类完全问题的一般方法是否适用于空间复杂性类。
助教给的意见: 类似的构造也适用于空间复杂性。唯一需要注意的是 M α ( x ) M_{\alpha}(x) Mα(x)在不超过某个大小S的空间上的运行可能会存在循环而不停机。这时我们就需要引入关于S多项式长的计数器来限制模拟图灵机的运行时间不超过指数步(如果超过了,说明一定存在循环)。
问题9
指出下面“证明”的错误:假定 N P = P \mathbf{NP}=\mathbf{P} NP=P,那么 N P O = P O \mathbf{NP}^O=\mathbf{P}^O NPO=PO对任意神谕 O O O成立。根据定理2.6,存在神谕 B B B使得 N P B ≠ P B \mathbf{NP}^B\ne\mathbf{P}^B NPB=PB。矛盾。因此 N P ≠ P \mathbf{NP}\not=\mathbf{P} NP=P。
解答:
N P = P \mathbf{NP}=\mathbf{P} NP=P的证明是不可相对化的。 N P = P \mathbf{NP}=\mathbf{P} NP=P无法推得 N P O = P O \mathbf{NP}^O=\mathbf{P}^O NPO=PO。
问题13
证明: Σ i p = Σ i + 1 p \Sigma_i^p=\Sigma_{i+1}^p Σip=Σi+1p蕴含 Σ i p = P H \Sigma_i^p=\mathbf{PH} Σip=PH。
解答:
∑
i
p
=
∑
i
+
1
p
=
N
P
∑
i
p
=
N
P
∑
i
+
1
p
=
∑
i
+
2
p
=
∑
i
+
3
p
⋯
=
∑
i
+
n
p
=
P
H
{\textstyle \sum_{i}^{p}}= {\textstyle \sum_{i+1}^{p}} =NP^{{\textstyle \sum_{i}^{p}}} =NP^{{\textstyle \sum_{i+1}^{p}}} = {\textstyle \sum_{i+2}^{p}} = {\textstyle \sum_{i+3}^{p}} \dots = {\textstyle \sum_{i+n}^{p}} =\mathbf{PH}
∑ip=∑i+1p=NP∑ip=NP∑i+1p=∑i+2p=∑i+3p⋯=∑i+np=PH
问题14
定义一个神谕 A A A,使得 P H A = P A \mathbf{PH}^{A}=\mathbf{P}^{A} PHA=PA成立。
解答:
A A A为 P H \mathbf{PH} PH, P H P H = P P H \mathbf{PH}^{PH}=\mathbf{P}^{PH} PHPH=PPH
问题16
证明:若 A , B ∈ Σ i p A,B\in\Sigma_i^p A,B∈Σip,必有 A ∪ B , A ∩ B ∈ Σ i p A\cup B,A\cap B\in\Sigma_i^p A∪B,A∩B∈Σip。
解答:
假设判定 A , B A,B A,B对应的图灵机分别为 M 1 , M 2 \mathbb{M}_1,\mathbb{M}_2 M1,M2。
对于问题 A ∪ B A\cup B A∪B,仅需将 M 1 , M 2 \mathbb{M}_1,\mathbb{M}_2 M1,M2各运行一次,若 M 1 , M 2 \mathbb{M}_1,\mathbb{M}_2 M1,M2中有一个输出1,则判定 A ∪ B A\cup B A∪B的图灵机输出1.
对于问题 A ∩ B A\cap B A∩B,仅需将 M 1 , M 2 \mathbb{M}_1,\mathbb{M}_2 M1,M2各运行一次,若 M 1 , M 2 \mathbb{M}_1,\mathbb{M}_2 M1,M2均输出1,则判定 A ∩ B A\cap B A∩B的图灵机输出1.
因此,若 A , B ∈ Σ i p A,B\in\Sigma_i^p A,B∈Σip,必有 A ∪ B , A ∩ B ∈ Σ i p A\cup B,A\cap B\in\Sigma_i^p A∪B,A∩B∈Σip。
第3章 电路复杂性
问题1
一个输入变量为 x 1 , … , x n x_1,\ldots,x_n x1,…,xn的布尔非转移程序(straight-line program)是一个指令序列,其中第 i i i条指令或为 y i = z i ∧ z i ′ y_i=z_i\wedge z_i' yi=zi∧zi′,或为 y i = z i ∨ z i ′ y_i=z_i\vee z_i' yi=zi∨zi′。这里 z i z_i zi和 z i ′ z_i' zi′或为输入变量,或为输入变量的反,或为满足 j < i j<i j<i的某个下标 y j y_j yj。程序的最后一条指令计算出的变量值即为程序的输出。证明:若一个布尔函数可由含有 S S S个门的电路计算,则该函数可由含有 S S S条指令的非转移程序计算。
解答:
一个电路是一个有向无圈图,可以用深度优先遍历法遍历所有的门,计算出访问过的门的输出值。
需要用用一个长度为 l o g ( n ) \mathbf{log}(n) log(n)的计数器记住当前访问的门的位置。
遍历门的数量为 S S S,因此,该函数可由含有 S S S条指令的非转移程序计算。
问题2
通过对布尔函数的输入变量个数进行归纳,证明一个布尔函数可由一个单调电路计算当仅当该布尔函数是单调的。
解答:
假设存在一个输入变量为 x 1 , … , x n x_1,\ldots,x_n x1,…,xn的单调布尔函数 f f f。
当 n = 1 n=1 n=1时,经过验证,显然,该布尔函数可由一个单调电路计算。
假设,当 n = k n=k n=k时,该布尔函数可由一个单调电路计算。
当 n = k + 1 n=k+1 n=k+1时, f ( x 1 , ⋯ , x k , x k + 1 ) = f ( x 1 , ⋯ , x k , 0 ) ∨ ( x k + 1 ∧ f ( x 1 , ⋯ , x k , 1 ) ) f(x_1,\cdots,x_k,x_k+1)=f(x_1,\cdots,x_k,0)\vee (x_{k+1}\wedge f(x_1,\cdots,x_k,1)) f(x1,⋯,xk,xk+1)=f(x1,⋯,xk,0)∨(xk+1∧f(x1,⋯,xk,1)). 注意, f ( x 1 , ⋯ , x k , 0 ) f(x_1,\cdots,x_k,0) f(x1,⋯,xk,0)和 f ( x 1 , ⋯ , x k , 1 ) f(x_1,\cdots,x_k,1) f(x1,⋯,xk,1)可由一个单调电路计算。此时,仅需要增加一个与门和一个或门, f ( x 1 , ⋯ , x k , x k + 1 ) f(x_1,\cdots,x_k,x_k+1) f(x1,⋯,xk,xk+1)就可由单调电路计算。因此,单调布尔函数可以由一个单调电路计算。
若一个布尔函数可以由一个单调电路计算,即该电路中没有非门,显然,该函数是单调函数。
因此,一个布尔函数可由一个单调电路计算当仅当该布尔函数是单调的。
问题3
证明:若 N P ⊆ P / l o g \mathbf{NP}\subseteq\mathbf{P}_{/\mathbf{log}} NP⊆P/log,则 N P = P \mathbf{NP}=\mathbf{P} NP=P。
解答:
若 N P ⊆ P / l o g \mathbf{NP}\subseteq\mathbf{P}_{/\mathbf{log}} NP⊆P/log,则 ∀ L ∈ N P \forall L \in \mathbf{NP} ∀L∈NP, L L L 可被具有对数建议类型的多项式时间图灵机判定。也就是说,可以根据对数大小的建议生成讲义中图1.5所示的计算结构。因为建议是对数大小,且生成的计算结构中布尔公式是相同的,所以,可以在多项式时间生成计算结构,然后使用多项式时间完成计算。因此, L ∈ P L \in P L∈P,即 N P ⊆ P \mathbf{NP}\subseteq\mathbf{P} NP⊆P.
显然, P ⊆ N P \mathbf{P}\subseteq\mathbf{NP} P⊆NP
因此,若 N P ⊆ P / l o g \mathbf{NP}\subseteq\mathbf{P}_{/\mathbf{log}} NP⊆P/log,则 N P = P \mathbf{NP}=\mathbf{P} NP=P。
问题4
说明二进制减法运算在 N C 1 \mathbf{NC}^1 NC1中。
解答:
仅需要将并行二进制加法修改一下,就可以产生并行二进制减法。
假设
a
n
a
n
−
1
⋯
a
1
a
0
a_{n}a_{n-1}\cdots a_{1}a_{0}
anan−1⋯a1a0与
b
n
b
n
−
1
⋯
b
1
b
0
b_{n}b_{n-1}\cdots b_{1}b_{0}
bnbn−1⋯b1b0为二进制数,用
x
i
x_i
xi表示第
i
i
i位减法产生的借位。定义
g
i
=
a
i
∧
b
i
,
借位产生位
g_i=a_i \wedge b_i,\text{借位产生位}
gi=ai∧bi,借位产生位
g i = a i ∧ b i , 借位产生位 g_i=a_i \wedge b_i,\text{借位产生位} gi=ai∧bi,借位产生位
使用并行前置算法,可以在 2 l o g ( n ) 2log(n) 2log(n)步内计算得出 x 0 , x 1 , ⋯ , x n − 1 x_0,x_1,\cdots,x_{n-1} x0,x1,⋯,xn−1借位。
最后,经过常数步并行计算出二进制减法结果。
因此,二进制减法运算在 N C 1 \mathbf{NC}^1 NC1中。
问题5
证明 N C 1 \mathbf{NC}^1 NC1是 P S P A C E \mathbf{PSPACE} PSPACE的严格的子类。
解答:
一个电路是一个有向无环圈,可以用深度优先遍历所有的门,计算访问过的门的输出值。需要用用一个长度为 l o g ( n ) log(n) log(n)的计数器记住当前访问过的门的位置。因此, N C 1 ⊆ L \mathbf{NC}^1 \subseteq \mathbf{L} NC1⊆L
根据空间谱系定理,若空间函数 f , g f,g f,g为空间可构造,且 f ( n ) = o ( g ( n ) ) f(n)=o(g(n)) f(n)=o(g(n))。包含关系 S P A C E ( f ( n ) ) ⊆ S P A C E ( g ( n ) ) \mathbf{SPACE}(f(n)) \subseteq \mathbf{SPACE}(g(n)) SPACE(f(n))⊆SPACE(g(n))是严格的。
因此, L ⊆ P S P A C E \mathbf{L} \subseteq \mathbf{PSPACE} L⊆PSPACE是严格的。
显然, N C 1 \mathbf{NC}^1 NC1是 P S P A C E \mathbf{PSPACE} PSPACE的严格的子类。
问题6
证明:若 N C i = N C i + 1 \mathbf{NC}^{i}=\mathbf{NC}^{i+1} NCi=NCi+1,则 N C i = N C \mathbf{NC}^{i}=\mathbf{NC} NCi=NC。
解答:
我们可以将
N
C
i
\mathbf{NC}^{i}
NCi和
N
C
1
\mathbf{NC}^{1}
NC1对应的电路进行复合,得到
N
C
i
+
1
\mathbf{NC}^{i+1}
NCi+1对应的电路,记为
N
C
i
+
1
=
N
C
1
N
C
i
\mathbf{NC}^{i+1}={\mathbf{NC}^{1}}^{\mathbf{NC}^{i}}
NCi+1=NC1NCi
若
N
C
i
=
N
C
i
+
1
\mathbf{NC}^{i}=\mathbf{NC}^{i+1}
NCi=NCi+1
N
C
i
+
1
=
N
C
1
N
C
i
=
N
C
1
N
C
i
+
1
=
N
C
i
+
2
=
N
C
i
+
N
\mathbf{NC}^{i+1}={\mathbf{NC}^{1}}^{\mathbf{NC}^{i}} ={\mathbf{NC}^{1}}^{\mathbf{NC}^{i+1}}=\mathbf{NC}^{i+2}=\mathbf{NC}^{i+N}
NCi+1=NC1NCi=NC1NCi+1=NCi+2=NCi+N
因此,若
N
C
i
=
N
C
i
+
1
\mathbf{NC}^{i}=\mathbf{NC}^{i+1}
NCi=NCi+1,则
N
C
i
=
N
C
\mathbf{NC}^{i}=\mathbf{NC}
NCi=NC。
问题7
证明:若 N C \mathbf{NC} NC有个完全问题,则 N C 1 ⊆ N C 2 ⊆ … ⊆ N C i ⊆ … \mathbf{NC}^{1}\subseteq\mathbf{NC}^{2}\subseteq\ldots \subseteq\mathbf{NC}^{i}\subseteq\ldots NC1⊆NC2⊆…⊆NCi⊆…塌陷。
解答:
若 N C \mathbf{NC} NC有个完全问题 L L L,则 L ∈ N C i L \in \mathbf{NC}^{i} L∈NCi, i ∈ N i \in N i∈N.
N C i + 1 \mathbf{NC}^{i+1} NCi+1中的所有问题都可以规约到完全问题 L L L,因此, N C i = N C i + 1 \mathbf{NC}^{i}=\mathbf{NC}^{i+1} NCi=NCi+1。
根据问题6中的结论, N C i = N C \mathbf{NC}^{i}=\mathbf{NC} NCi=NC。
若 N C \mathbf{NC} NC有个完全问题,则 N C 1 ⊆ N C 2 ⊆ … ⊆ N C i ⊆ … \mathbf{NC}^{1}\subseteq\mathbf{NC}^{2}\subseteq\ldots \subseteq\mathbf{NC}^{i}\subseteq\ldots NC1⊆NC2⊆…⊆NCi⊆…塌陷。
问题8
若存在多项式 p ( n ) p(n) p(n),对任意 n n n,有不等式 ∣ L ∩ { 0 , 1 } n ∣ ≤ p ( n ) |L\cap\{0,1\}^n|\le p(n) ∣L∩{0,1}n∣≤p(n),称 L L L是稀疏的。证明每个稀疏的语言都在 P / p o l y \mathbf{P}_{/\mathbf{poly}} P/poly里。
解答:
L ∈ P / p o l y L \in \mathbf{P}_{/\mathbf{poly}} L∈P/poly,当仅当 L L L可被具有多项式建议类型的多项式时间图灵机判定。
L L L是稀疏的,显然, L L L只包含任意长度的多项式多个输入。使用一个查找表,该查找表包含所有的可接受的输入。该查找表的大小为多项式,作为建议。对于每个输入 x x x,可以查询 x x x是否在该查找表中,若在,则输出1,否则,输出0。 L L L可被此多项式建议类型的多项式时间图灵机判定。因此,每个稀疏的语言都在 P / p o l y \mathbf{P}_{/\mathbf{poly}} P/poly里。
问题9
证明 N C 0 \mathbf{NC}^0 NC0严格包含在 A C 0 \mathbf{AC}^0 AC0中。
解答:
一个扇入为 k k k的与门可以用一个由扇入为 2 的与门构成的电路实现,该电路的高度为 l o g ( k ) log(k) log(k). 显然, N C 0 ⊆ A C 0 ⊆ N C 1 \mathbf{NC}^0 \subseteq \mathbf{AC}^0 \subseteq \mathbf{NC}^1 NC0⊆AC0⊆NC1
对于常数高度的 N C NC NC电路族,显然,其不能判定 ∣ x ∣ |x| ∣x∣为多项式的情况,而$\mathbf{AC}^0 $中的电路族可以判定这种问题。
因此, N C 0 \mathbf{NC}^0 NC0严格包含在 A C 0 \mathbf{AC}^0 AC0中。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)