复杂性理论
c e n t e r p r o b l e m : P ≠ N P center\ \ problem:P \ne NP center problem:P=NP
1.P、EXP、NP
定义1 D T I M E DTIME DTIME
T : N → N T:\N\rightarrow \N T:N→N,语言 L ∈ D T I M E ( T ( n ) ) L\in DTIME(T(n)) L∈DTIME(T(n)),当且仅当存在一个多带图灵机(常数带),可以在时间 O ( T ( n ) ) O(T(n)) O(T(n))的时间里判定 L L L
定义2 P 、 E X P P、EXP P、EXP
P = ⋃ c ≥ 1 D T I M E ( n c ) P=\bigcup_{c\ge1 } DTIME(n^c) P=⋃c≥1DTIME(nc)(多项式时间)
E x p = ⋃ c > 1 D T I M E ( 2 n c ) Exp =\bigcup_{c>1} DTIME(2^{n^c}) Exp=⋃c>1DTIME(2nc)(指数时间)
例如:
最短路 O ( M 2 ) O ( ∣ E ∣ + M l o g M ) O(M^2)\ O(|E|+MlogM) O(M2) O(∣E∣+MlogM)
最小生成树 O ( ∣ E ∣ l o g M ) O ( ∣ E ∣ + M l o g ∣ M ∣ ) O(|E|log M)\ O(|E|+Mlog|M|) O(∣E∣logM) O(∣E∣+Mlog∣M∣)
最大流:
增广路算法 O ( ∣ v ∣ ∣ E ∣ 2 ) O(|v||E|^2) O(∣v∣∣E∣2)
预流推进 O ( ∣ v ∣ 3 ) O(|v|^3) O(∣v∣3)
CKLPGS(22年) O ( ∣ E ∣ ( 1 + O ( 1 ) ) ) O(|E|^{(1+O(1))}) O(∣E∣(1+O(1)))
线性规划:(n个变量,输入有L位bit长)
g ( n ) ∈ O ~ ( ) g(n)\in\tilde{O}() g(n)∈O~(),如果 ( ∃ c > 0 ) ( g ( n ) ∈ O ( f ( n ) l o g c n ) ) (\exist c\gt 0)(g(n)\in O(f(n)log^cn)) (∃c>0)(g(n)∈O(f(n)logcn))
字符串匹配 O ( ∣ v ∣ + ∣ E ∣ ) O(|v|+|E|) O(∣v∣+∣E∣)
并查集 O ( m α ( n ) ) , α O(m\alpha(n)),\alpha O(mα(n)),α是 A c k e r m a n Ackerman Ackerman的反函数
e f f i c i e n t = n O ( 1 ) efficient = n^{O(1)} efficient=nO(1)多项式时间,
定理3 有向图中判断是否有路属于P
P A T H = { < G , s , t > : G 是有向图,且存在一条 s 到 t 的路 } PATH=\{<G,s,t>:G是有向图,且存在一条s到t的路\} PATH={<G,s,t>:G是有向图,且存在一条s到t的路}
定理4 判断互质属于P
R E L P R I M E = { < x , y > : x , y 互质 } RELPRIME=\{<x,y>:x,y互质\} RELPRIME={<x,y>:x,y互质}
使用欧几里得算法
E u c l i d G C D ( x , y ) : Euclid\ GCD(x,y): Euclid GCD(x,y):
i f x < y t h e n s w a p x , y if\ x<y\ then\ swap\ x,y if x<y then swap x,y
w h i l e y > 0 : while\ y>0: while y>0:
$ x \leftarrow x\ mod\ y$
s w a p x , y swap\ x,y swap x,y
r e t u r n x return\ x return x
在欧几里得算法中,x每次都会减半
若 x 2 ≥ y \frac x2 \ge y 2x≥y,那么 x % y < y ≤ x 2 x\% y<y \le \frac x2 x%y<y≤2x
若 x 2 < y \frac x2 <y 2x<y,那么 x % y = x = ⌊ x y ⌋ y = x − y < x 2 x\%y = x=\lfloor\frac xy\rfloor y=x-y\lt \frac x2 x%y=x=⌊yx⌋y=x−y<2x
所以 x x x每次至少减半
则 # i t e r a t i o n s = O ( l o g 2 x ) = O ( l o g 2 2 O ( l 1 ) ) = O ( l 1 ) = O ( n ) \# iterations = O(log_2x)=O(log_22^{O(l_1)})=O(l_1)=O(n) #iterations=O(log2x)=O(log22O(l1))=O(l1)=O(n)计算理论中的 n n n表示输入的长度
在每次循环中,我们要计算取模,需要 O ( n 2 ) O(n^2) O(n2)
则总共需要 O ( n 3 ) O(n^3) O(n3)
定理5 判断质数属于EXP
P R I M E = { x : x 是一个二进制形式的质数 } PRIME=\{x:x是一个二进制形式的质数\} PRIME={x:x是一个二进制形式的质数}
P R I M E ∈ E X P PRIME\in EXP PRIME∈EXP
P r o o f Proof Proof
P R I M E ( x ) : PRIME(x): PRIME(x):
y ← 2 y\leftarrow 2 y←2
w h i l e y < x while\ y \lt x while y<x
i f x m o d y = 0 t h e n r e j e c t if\ x\ mod\ y\ =0 \ then\ reject if x mod y =0 then reject
y ← y + 1 y\leftarrow y+1 y←y+1
a c c e p t accept accept
n = ⌈ l o g 2 x ⌉ → l o g 2 x ≤ n → x ≤ 2 n n=\lceil log_2 x\rceil\rightarrow log_2x\le n\rightarrow x\le 2^n n=⌈log2x⌉→log2x≤n→x≤2n
则需要循环 2 n 2^n 2n次
则总共需要 2 n × O ( n 2 ) = 2 O ( n ) 2^n\times O(n^2)=2^{O(n)} 2n×O(n2)=2O(n)
定理6 [AKS 2002] 判断质数属于P
定义7 NP
N:不确定的
P:多项式的
直观地说,NP是可在多项式时间内验证的
P是可在多项式时间内被判定的(解决的)
P v s N P P\ vs \ NP P vs NP问题: P ≠ N P P\ne NP P=NP
如果 P = N P P =NP P=NP 所有数学家都会失业,所有加密的系统都不安全
语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗属于NP
,如果存在一个多项式 p : N → N p:\N\rightarrow \N p:N→N,和一个多项式时间的TM M,称为 L L L的证书, ∀ x ∈ { 0 , 1 } ∗ \forall x\in\{0,1\}^* ∀x∈{0,1}∗:
x ∈ L ⇔ ∃ w ∈ { 0 , 1 } p ( ∣ x ∣ ) , s . t . M ( x , w ) = 1 x\in L\Leftrightarrow \exist w\in\{0,1\}^{p(|x|)},s.t. M(x,w)=1 x∈L⇔∃w∈{0,1}p(∣x∣),s.t.M(x,w)=1
x ∉ L ⇔ ∀ w ∈ { 0 , 1 } p ( ∣ x ∣ ) , s . t . M ( x , w ) = 0 x\notin L \Leftrightarrow \forall w\in\{0,1\}^{p(|x|)},s.t. M(x,w)=0 x∈/L⇔∀w∈{0,1}p(∣x∣),s.t.M(x,w)=0
即验证过程有三步
- 证明者为验证者提供一个多项式长度的输入
- 验证者运行一个图灵机(使用某种算法),在多项式时间内能得出答案
- 验证者返回结果(接收或拒绝)
NP判定的练习
练习 8 图同构问题
G r a p h I s o m o r p h i s m = { < G , H > : 无向图 G , H s 是同构的 } ∈ N P Graph\ Isomorphism=\{<G,H>:无向图G,Hs是同构的\}\in NP Graph Isomorphism={<G,H>:无向图G,Hs是同构的}∈NP
两个图同构时,一定有双射 f : V ( G ) → V ( H ) f:V(G)\rightarrow V(H) f:V(G)→V(H),有 ( u , v ) ∈ E ( G ) (u,v)\in E(G) (u,v)∈E(G)当且仅当 ( f ( u ) , f ( v ) ) ∈ E ( H ) (f(u),f(v))\in E(H) (f(u),f(v))∈E(H),
证书:
- f f f是 V ( G ) → V ( H ) V(G)\rightarrow V(H) V(G)→V(H)的一个双射
- 检查 ( u , v ) ∈ E ( G ) , 则 ( f ( u ) , f ( v ) ) ∈ E ( H ) (u,v)\in E(G),则(f(u),f(v))\in E(H) (u,v)∈E(G),则(f(u),f(v))∈E(H),而这个检查时间是 O ( n 2 ) O(n^2) O(n2)的
那么 f f f是可以被验证的,但如何找到这样的 f f f可能是很困难的,但NP问题不用考虑
练习9 完全图子图问题
k − C L I Q U E = { < G , f > : 图 G 中含有 K k 子图 } k-CLIQUE=\{<G,f>:图G中含有K_k子图\} k−CLIQUE={<G,f>:图G中含有Kk子图}(完全图)
证书:在 G G G中找 k k k个点,提供给这个TM,记为 u 1 , u 2 , ⋯ , u k u_1,u_2,\cdots,u_k u1,u2,⋯,uk,检查它们间是否两两有边, O ( n 2 ) O(n^2) O(n2)
练习10 旅行商问题
旅行商给出n个节点 C n 2 C^2_n Cn2个数字, d i j d_{ij} dij表示节点 i i i和节点 j j j问题和一个数字 k k k,确定是否存在一条经过所有节点的回路并且总长度小于等于k
这个问题是NP的
证书:给出一条路,先判断是回路,且经过所有顶点,并计算他的长度,是多项式时间的
练习 11
给定 N , L , U N,L,U N,L,U,判断是否 N N N有一个 [ L , U ] [L,U] [L,U](区间)中的质因数
证书:给出一个 p ∈ [ L , U ] , s . t . p p\in[L,U],s.t.p p∈[L,U],s.t.p是质数并且 p ∣ N p|N p∣N
练习12 0/1 整数规划问题
给定 m m m个线性的整数系数的不等式,有 n n n个变量, u 1 , u 2 , ⋯ , u n u_1,u_2,\cdots,u_n u1,u2,⋯,un
判断是否有一个 0和1的赋值给 u 1 , u 2 , ⋯ , u n u_1,u_2,\cdots,u_n u1,u2,⋯,un,满足所有的不等式
整数:显然只需要将给定的数值带进去判定是否满足即可
练习13 子集合问题(背包问题)
给定 n n n个整数 A 1 , A 2 , ⋯ , A n A_1,A_2,\cdots,A_n A1,A2,⋯,An,和一个数字 T T T,判断是否有一个子集,它的和大于T
显然属于 N P NP NP,把给的数加一下就行了
练习14 图不同构
G r a p h N o t I s o m o r p h i c = { < G , H > : G ≆ H } GraphNotIsomorphic=\{<G,H>:G\ncong H\} GraphNotIsomorphic={<G,H>:G≆H}
不属于NP,这是个很难的问题,要将所有的双射都找一遍
练习15 没有完全图子图
N o C l i q u e = { < G , k > : G 没有 K k 子图 } NoClique=\{<G,k>:G没有K_k子图\} NoClique={<G,k>:G没有Kk子图}
不属于NP,也是要把所有的k个节点的子图都找一遍。
C n l o g n C_n^{log_n} Cnlogn不是一个多项式
P P P的否也在 P P P内
N P NP NP的否不一定在 N P NP NP内
定理16 P,NP,EXP的包含关系
P ⊆ N P ⊆ E X P P\subseteq NP \subseteq EXP P⊆NP⊆EXP
( P ⊆ N P ) (P\subseteq NP) (P⊆NP) 如果一个问题属于P,那么直接让证书为空串,那么验证者可以用一个图灵机在多项式时间内来判定。
令 L ∈ P , 则证明 L ∈ N P L\in P,则证明L\in NP L∈P,则证明L∈NP
令 p ( n ) = 0 p(n)=0 p(n)=0,则构造M为:
x ∈ L , M ( x , ϵ ) = 1 x\in L,M(x,\epsilon)=1 x∈L,M(x,ϵ)=1
x ∉ L . M ( x , ϵ ) = 0 x\notin L.M(x,\epsilon )=0 x∈/L.M(x,ϵ)=0
($NP\subseteq EXP ),如果一个问题属于 N P ,则存在一个多项式 ),如果一个问题属于NP,则存在一个多项式 ),如果一个问题属于NP,则存在一个多项式p:\N\rightarrow \N ,令一个多项式时间的 T M M 可以判定,构造一个 T M M ‘,枚举所有的 ,令一个多项式时间的TM M可以判定,构造一个TM M‘,枚举所有的 ,令一个多项式时间的TMM可以判定,构造一个TMM‘,枚举所有的w\in {0,1}^{p|x|} ,来判定是否有 ,来判定是否有 ,来判定是否有M(x,w)=1 , 如果存在这样的 ,如果存在这样的 ,如果存在这样的w ,则 M ′ 接收 ,则M'接收 ,则M′接收x$。
M ′ M' M′的总共运行时间为 2 p ( n ) , p o l y ( n ) = 2 n O ( 1 ) , n O ( 1 ) = 2 n O ( 1 ) 2^{p(n)},poly(n)=2^{n^{O(1)}},n^{O(1)}=2^{n^{O(1)}} 2p(n),poly(n)=2nO(1),nO(1)=2nO(1)
非确定性图灵机(Nondeterministic TMs)
总是会选对。
在任何时候,非确定性图灵机的转移结果可能有多个(可以只有1个)。转移函数 δ \delta δ:
δ : Q × Γ → P ( Q × Γ × { L , R , S } ) \delta: Q\times \Gamma \rightarrow P(Q\times \Gamma\times\{L,R,S\}) δ:Q×Γ→P(Q×Γ×{L,R,S})
转移结果是一个集合。
形式化地,一个 N T M M = ( ∑ , Γ , Q , δ , q 0 , q a c c e p t , q r e j e c t ) NTM\ M=(\sum,\Gamma,Q,\delta,q_0,q_{accept},q_{reject}) NTM M=(∑,Γ,Q,δ,q0,qaccept,qreject)
M M M接收 x x x,如果存在这样的一条路径接收 x x x
定义17 NTM的运行时间
如果对任意 x ∈ { 0 , 1 } ∗ x \in\{0,1\}^* x∈{0,1}∗,对于每个非确定的选择, M M M都在 T ( n ) T(n) T(n)步内到达终止状态,那么我们说一个 N T M M NTM\ M NTM M的运行时间为 T ( n ) T(n) T(n).(最坏的情况也能在 T ( n ) T(n) T(n)步内停下)
定义18 NTM可判定
如果对于任意 x ∈ { 0 , 1 } ∗ , x ∈ L ⟺ M ( x ) = 1 x\in\{0,1\}^*,x\in L \Longleftrightarrow M(x)=1 x∈{0,1}∗,x∈L⟺M(x)=1,我们说 N T M M NTM\ M NTM M可判定 L L L
定义19 Binary-choice NTM
M = ( Q , ∑ , Γ , δ 1 , δ 2 , q 0 , q a c c e p t , q r e j e c t ) M=(Q,\sum,\Gamma,\delta_1,\delta_2,q_0,q_{accept},q_{reject}) M=(Q,∑,Γ,δ1,δ2,q0,qaccept,qreject)
其中 δ 1 , δ 2 : Q × Γ → Q × Γ × { L , R , S } \delta_1,\delta_2: Q\times \Gamma \rightarrow Q\times \Gamma \times \{L,R,S\} δ1,δ2:Q×Γ→Q×Γ×{L,R,S},对于每一步转移, M M M随机使用 δ 1 \delta_1 δ1或是 δ 2 \delta_2 δ2
引理20 二选一NTM和NTM等价
令 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗,如果 L L L可以在时间 T ( n ) T(n) T(n)内被一个 N T M M NTM\ M NTM M内判定,那么 L L L可在 O M ( T ( n ) ) O_M(T(n)) OM(T(n))内被一个二选一(binary-choice)图灵机判定。
证明:
思路:对于一步四选一,可转换成两步二选一
对于任意一步, M M M至多有 2 ∣ Q ∣ × ∣ T ∣ × 3 2^{|Q|\times |T|\times 3} 2∣Q∣×∣T∣×3个选择(幂集的大小),则这可以被二选一在 l o g 2 2 ∣ Q ∣ × ∣ T ∣ × 3 = ∣ Q ∣ × ∣ T ∣ × 3 log_2 2^{|Q|\times |T|\times 3}=|Q|\times |T|\times 3 log22∣Q∣×∣T∣×3=∣Q∣×∣T∣×3步内完成模拟。
所以,总共的运行时间 T ′ ( n ) ≤ ∣ Q ∣ × ∣ T ∣ × 3 × T ( n ) = O M ( T ( n ) ) T'(n)\le |Q|\times |T|\times 3\times T(n)=O_M(T(n)) T′(n)≤∣Q∣×∣T∣×3×T(n)=OM(T(n)),( O M O_M OM表明参数与图灵机M有关)
定义21 NTIME
令 T : N → N T:\N\rightarrow \N T:N→N,定义 N T I M E ( T ( n ) ) NTIME(T(n)) NTIME(T(n))是一些语言的集合,这些语言可以被一个NTM在 O ( T ( n ) ) O(T(n)) O(T(n))内判定。
定理22 NP的形式化定义
N P = ⋃ c ≥ 1 N T I M E ( n c ) NP=\bigcup_{c\ge1} NTIME(n^c) NP=c≥1⋃NTIME(nc)
P r o o f Proof Proof
( ⋃ c ≥ 1 N T I M E ( n c ) ⊆ N P \bigcup_{c\ge1} NTIME(n^c)\subseteq NP ⋃c≥1NTIME(nc)⊆NP)
令 L ∈ N T I M E ( n c ) L\in NTIME(n^c) L∈NTIME(nc),则 L ∈ N P L\in NP L∈NP,
因为 L ∈ N T I M E ( n c ) L\in NTIME(n^c) L∈NTIME(nc),存在一个二选一NTM N 可以在时间 d ⋅ n c d\cdot n^c d⋅nc内判定 L , d > 0 L,d\gt 0 L,d>0。
令 p ( n ) = d ⋅ n c p(n)=d\cdot n^c p(n)=d⋅nc,并且令证书 w ∈ { 0 , 1 } p ( x ) w \in\{0,1\}^{p(x)} w∈{0,1}p(x)表明应该选择哪个转移函数。那么验证者可以检验,如果 N N N接收 x x x(如何选择是由证书决定)
( N P ⊆ ⋃ c ≥ 1 N T I M E ( n c ) ) (NP\subseteq \bigcup_{c\ge1}NTIME(n^c)) (NP⊆⋃c≥1NTIME(nc))
若 L ∈ N P L\in NP L∈NP,则 L ∈ ⋃ c ≥ 1 N T I M E ( n c ) L\in \bigcup_{c\ge1}NTIME(n^c) L∈⋃c≥1NTIME(nc)
构造一个 N T M NTM NTM:
- 猜测 w ∈ { 0 , 1 } p ( ∣ x ∣ ) w\in\{0,1\}^{p(|x|)} w∈{0,1}p(∣x∣),因为是NTM,所以每一位都能猜对。。。。如果猜错了,说明没有正确的,直接拒绝
- 以输入 ( x , w ) (x,w) (x,w)模拟 M M M,当且仅当 M M M接收 ( x , w ) (x,w) (x,w)时接收。M是NP的证书的那个图灵机
显然 N N N运行时间为多项式时间,那么 N N N判定 L L L。
定义 23 (karp reduction)
令 L , K ⊆ { 0 , 1 } ∗ L,K\subseteq \{0,1\}^* L,K⊆{0,1}∗,我们将 L L L karp reduction to K记作 L ≤ p K L\le_p K L≤pK。如果存在一个多项式时间
的TM M ,有对任意 x ∈ { 0 , 1 } ∗ , x ∈ L ⇔ N ( x ) ∈ K x\in \{0,1\}^*,x\in L \Leftrightarrow N(x)\in K x∈{0,1}∗,x∈L⇔N(x)∈K,即
- 如果 K ∈ P K\in P K∈P,那么 L ∈ P L\in P L∈P
- 如果 L ∉ P L\notin P L∈/P,那么 K ∉ P K\notin P K∈/P
引理24 karp reduction的性质
传递:如果 L 1 ≤ p L 2 , L 2 ≤ p L 3 L_1\le_p L_2,L_2\le_p L_3 L1≤pL2,L2≤pL3,则 L 1 ≤ p L 3 L_1\le_p L3 L1≤pL3
令 M 3 = M 2 ( M 1 ( x ) ) M_3=M_2(M_1(x)) M3=M2(M1(x)),是多项式时间内的
那么有 x ∈ L 1 ⇔ M 3 ( x ) ∈ L 3 x\in L_1 \Leftrightarrow M_3(x)\in L_3 x∈L1⇔M3(x)∈L3
3.NP难与NP完全问题
定义25 NP难问题
L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗是NP难问题,如果对所有的语言 K ∈ N P , K ≤ p L K\in NP,K\le_p L K∈NP,K≤pL,即 L L L至少不比NP简单
定义26 NP完全问题
NP完全,如果 L ∈ N P , L ∈ N P − h a r d L\in NP,L\in NP-hard L∈NP,L∈NP−hard
即 N P − c o m p l e t e = N P ⋂ N P − h a r d NP-complete =NP\bigcap NP-hard NP−complete=NP⋂NP−hard
引理27 P=NP 的证明思路1
如果 L L L是NP难问题,且 L ∈ P L\in P L∈P,那么 P = N P P=NP P=NP
引理28 P=NP 的证明思路2
令 L ∈ N P − c o m p l e t e L\in NP-complete L∈NP−complete,那么 L ∈ P ⇔ P = N P L\in P \Leftrightarrow P=NP L∈P⇔P=NP
Cook-Levin的理论
Cook-Levin在1923年证明了第一个NP完全问题 SQT
定理 29 SAT 是NP完全问题
布尔可满足性问题:
变量: x , y , z x,y,z x,y,z,可以取 T r u e True True或者 F a l s e False False
literal:变量和它的非, x , ¬ x , y , ¬ y x,\neg x,y,\neg y x,¬x,y,¬y
子句: O R OR OR(或),使用在一个或多个literals里, ¬ x ∨ y , ¬ y ∨ z , x ∨ y ¬ z \neg x\lor y,\neg y \lor z,x\lor y\neg z ¬x∨y,¬y∨z,x∨y¬z
formula: A N D AND AND(且),使用在一个或更多个literals
例如,对于 ϕ = ( ¬ x ∨ y ) ∧ ( ¬ y ∨ z ) ∧ ( x ∨ z ∨ y ) \phi=(\neg x\lor y)\land(\neg y\lor z)\land(x\lor z\lor y) ϕ=(¬x∨y)∧(¬y∨z)∧(x∨z∨y)
取 x=y=z=1,是可以满足的
但对于 ϕ = x ∧ ¬ x \phi = x\land \neg x ϕ=x∧¬x 是不可以被满足的
显然 S A T ∈ N P SAT \in NP SAT∈NP,显然可以用一个NTM来猜,也可以直接给一个证书(输入每个变量的值).