Advanced Algorithm 听课笔记(Introduction & Complexity Class)

0x00 前言

作为学术生涯的最后一门课,选了一门据说是最难的,上下来的感觉也确实是难得不行,不太懂……
决定照着ppt和上课的笔记整理一下,以此争取达到复习的目的。
(意思是有些虽然写出来了,但自己都不见得明白,有的部分存疑后续去询问之后再做修改)

Introduction of Randomized Algorithm

0x01 Big O notation

  • f ( n ) = O ( g ( n ) ) :   ≤ f(n)=O(g(n)):~ \le f(n)=O(g(n)): 
    • which means ∃   c , l i m ‾ n → ∞ f ( n ) g ( n ) ≤ c \exists~c, \overline{lim}_{n \rightarrow \infty}\frac{f(n)}{g(n)}\le c  c,limng(n)f(n)c, c is constant
  • f ( n ) = o ( g ( n ) ) :   &lt; f(n)=o(g(n)):~ \lt f(n)=o(g(n)): <
    • which means l i m ‾ n → ∞ f ( n ) g ( n ) = 0 \overline{lim}_{n \rightarrow \infty}\frac{f(n)}{g(n)} = 0 limng(n)f(n)=0
  • f ( n ) = Ω ( g ( n ) ) :   ≥ f(n)=\Omega(g(n)):~ \ge f(n)=Ω(g(n)): 
    • which means g ( n ) = O ( f ( n ) ) g(n)=O(f(n)) g(n)=O(f(n))
  • f ( n ) = ω ( g ( n ) ) :   &gt; f(n)=\omega(g(n)):~ \gt f(n)=ω(g(n)): >
    • which means g ( n ) = o ( f ( n ) ) g(n)=o(f(n)) g(n)=o(f(n))
  • f ( n ) = Θ ( g ( n ) ) :   = f(n)=\Theta(g(n)):~ = f(n)=Θ(g(n)): =
    • which means f ( n ) = O ( g ( n ) ) f(n)=O(g(n)) f(n)=O(g(n)) and f ( n ) = Ω ( g ( n ) ) f(n)=\Omega(g(n)) f(n)=Ω(g(n))

0x02 QuickSort

Sorting Problem: Given a set S of n numbers, sort them into ascending order.

  • Find random y y y of set S S S; (O(1))
  • Partition S ∖ { y } S \setminus \{y\} S{y} into two sets S 1 S_1 S1 and S 2 S_2 S2; (n)
  • Recursively sort S 1 S_1 S1 and S 2 S_2 S2
  • Time complexity: O ( n l o g n ) O(n log n) O(nlogn) does not depend on input. It holds for every input.
    E ( T ( n ) )   = 1 n ∑ k = 1 n ( E ( T ( n ) )   ∣   X n = k ) = 1 n ∑ k = 1 n ( E ( T ( k − 1 ) ) + E ( T ( n − k ) ) + n − 1   ∣   X n = k ) = 1 n ∑ k = 1 n ( E ( T ( k − 1 ) ) + E ( T ( n − k ) ) + n − 1 ) ∴ E ( T ( n ) )   = 1 n ∑ k = 1 n ( E ( T ( k − 1 ) ) + E ( T ( n − k ) ) + ( n − 1 ) ) \begin{aligned} E(T(n))~&amp;=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(n)) ~|~ X_n=k \right) \\ &amp;=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(k-1)) + E(T(n-k)) + n-1 ~|~ X_n=k \right) \\ &amp;=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(k-1)) + E(T(n-k)) + n-1 \right) \\ \therefore E(T(n))~&amp;=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(k-1)) + E(T(n-k)) + (n-1) \right) \\ \end{aligned} E(T(n)) E(T(n)) =n1k=1n(E(T(n))  Xn=k)=n1k=1n(E(T(k1))+E(T(nk))+n1  Xn=k)=n1k=1n(E(T(k1))+E(T(nk))+n1)=n1k=1n(E(T(k1))+E(T(nk))+(n1))

0x03 Comparison Probability

判断序列中的两个数在QuickSort中被比较过的概率

当第 i i i个数字和第 j j j个数字曾经被比较过,设 X i j = 1 X_{ij}=1 Xij=1,反之为0。
E ( X i j ) = P i j E(X_{ij})= P_{ij} E(Xij)=Pij,从而有 T ( n ) = ∑ 1 ≤ i &lt; j ≤ n X i j T(n)= \sum_{1\le i&lt;j\le n} X_{ij} T(n)=1i<jnXij
P 12   = 1 ,   P 1 n = 2 n ,   P i j = 2 j − i + 1 P_{12}~=1,~ P_{1n}=\frac{2}{n},~ P_{ij}=\frac{2}{j-i+1} P12 =1, P1n=n2, Pij=ji+12
E ( T ( n ) )   = ∑ 1 ≤ i &lt; j ≤ n P i j E(T(n))~=\sum_{1\le i&lt;j\le n} P_{ij} E(T(n)) =1i<jnPij

∑ 1 ≤ i &lt; j ≤ n 1 j − i + 1 = 2 ∑ 1 ≤ i ≤ n − 1 ∑ j = 2 n − i + 1 1 j ≤ 2 ( n − 1 ) ∑ j = 2 n 1 j ≈ 2 ( n − 1 ) ⋅ ln ⁡ n \sum_{1\le i &lt; j \le n} \frac{1}{j-i+1} = 2\sum_{1\le i \le n-1} \sum_{j=2}^{n-i+1} \frac{1}{j} \le 2(n-1)\sum_{j=2}^{n}\frac{1}{j} \approx 2(n-1) \cdot \ln n 1i<jnji+11=21in1j=2ni+1j12(n1)j=2nj12(n1)lnn

其中可通过洛必达准则(忘记是不是这个名字了),计算出调和级数实际和 y = 1 x y=\frac{1}{x} y=x1 相同
1 2 + 1 3 + ⋯ + 1 n ≤ ∫ 1 n 1 x = ln ⁡ n \frac{1}{2} + \frac{1}{3} + \cdots + \frac{1}{n} \le \int_{1}^{n}\frac{1}{x}=\ln n 21+31++n11nx1=lnn
1 + 1 2 + 1 3 + ⋯ + 1 n ≥ ∫ 1 n 1 x = ln ⁡ n − ln ⁡ 1 1 + \frac{1}{2} + \frac{1}{3} + \cdots + \frac{1}{n} \ge \int_{1}^{n}\frac{1}{x} = \ln n - \ln 1 1+21+31++n11nx1=lnnln1

于是我们可以得到 E ( T ( n ) ) = Θ ( n ln ⁡ n ) E(T(n)) = \Theta(n \ln n) E(T(n))=Θ(nlnn)
不过这个计算出来除了作为一道题而言,还有没有其它的用处呢?

0x04 Min-Cut

Min-Cut problem: Given a graph G = ( V , E ) G = (V, E) G=(V,E) which is a connected, un-directed multi-graph, find a cut with minimum cardinality.

  • Pick an edge uniformly at random;
  • Merge the endpoints of this edge;
  • Remove self-loops;
  • Repeat steps 1-3 until there are only two vertices remain.
  • The remaining edges form a candidate cut.

f i x   m i n   c u t   C .   ∣ C ∣ = k fix~min~cut~C.~|C|=k fix min cut C. C=k
P r ( E 1 ∧ E 2 ∧ ⋯ ∧ E n − 1 ) ,   E i : the i-th chosen edge is not in C Pr(E_1 \land E_2 \land \cdots \land E_{n-1}),~ E_i: \text{the i-th chosen edge is not in C} Pr(E1E2En1), Ei:the i-th chosen edge is not in C

P r ( E 1 )   = ∣ E ∣ − k ∣ E ∣ ≤ 1 − 2 k n k = 1 − 2 n ∣ E ∣   ≥ n k 2 Notes:   P r ( E 2   ∣   E 1 )   ≥ 1 − 2 n − 1 ,   not   P r ( E 2 ) ≥ 1 − 2 n − 1 P r ( E i   ∣   E 1 , ⋯ &ThinSpace; , E i − 1 )   ≥ 1 − 2 n − i + 1 P r ( E 1 ∧ E 2 ∧ ⋯ ∧ E n − 2 )   = P r ( E 1 ) ⋅ P r ( E 2   ∣   E 1 ) ⋅ P r ( E 3   ∣   E 1 , E 2 ) ⋯ ≥ ( 1 − 2 n ) ( 1 − 2 n − 1 ) ⋯ ( 1 − 2 3 ) = ( n − 2 n ) ⋅ ( n − 3 n − 1 ) ⋯ 2 4 ⋅ 1 3 = Θ ( 1 n 2 ) \begin{aligned} Pr(E_1) ~&amp;= \frac{|E|-k}{|E|} \le 1- \frac{2k}{nk} = 1 - \frac{2}{n} \\ |E| ~&amp;\ge \frac{nk}{2} \\ \textbf{Notes: } Pr(E_2~|~E_1) ~&amp;\ge 1 - \frac{2}{n-1},~ \textbf{not}~Pr(E_2) \ge 1 - \frac{2}{n-1}\\ Pr(E_i~|~E_1,\cdots, E_{i-1}) ~&amp;\ge 1-\frac{2}{n-i+1} \\ Pr(E_1 \land E_2 \land \cdots \land E_{n-2}) ~&amp;= Pr(E_1) \cdot Pr(E_2~|~E_1) \cdot Pr(E_3~|~E_1,E_2) \cdots \\ &amp;\ge (1-\frac{2}{n})(1-\frac{2}{n-1})\cdots(1-\frac{2}{3}) \\ &amp;= (\frac{n-2}{n}) \cdot (\frac{n-3}{n-1})\cdots \frac{2}{4} \cdot \frac{1}{3} \\ &amp;= \Theta(\frac{1}{n^2})\\ \end{aligned} Pr(E1) E Notes: Pr(E2  E1) Pr(Ei  E1,,Ei1) Pr(E1E2En2) =EEk1nk2k=1n22nk1n12, not Pr(E2)1n121ni+12=Pr(E1)Pr(E2  E1)Pr(E3  E1,E2)(1n2)(1n12)(132)=(nn2)(n1n3)4231=Θ(n21)

可得该随机算法的成功概率为: P r ( E i   ∣   E 1 , ⋯ &ThinSpace; , E i − 1 ) = Ω ( 1 n 2 ) Pr(E_i~|~E_1,\cdots, E_{i-1})= \Omega(\frac{1}{n^2}) Pr(Ei  E1,,Ei1)=Ω(n21)
于是我们可以重复 n 2 n^2 n2 次,从而使得这个随机算法成功概率提升至:
1 − ( 1 − 1 n 2 ) n 2 ∼ 1 − 1 e 1-(1-\frac{1}{n^2})^{n^2} \sim 1-\frac{1}{e} 1(1n21)n21e1

0x05 FastCut

我们把FastCut的过程等效的看作一棵二叉树,其中每个节点都以一定的概率染成黑色或白色,
每一次生成子节点的过程,是将当前图的顶点数变为原来的 c   ( c = 2 ) c~(c=\sqrt{2}) c (c=2 ) 倍,
父节点到该节点过程中,缩图未影响最小切时,染为黑色,反之染为白色。
那么显然地,当且仅当存在一条从根到叶子节点的路径上,所有的点都为黑色时,说明当前算法成功的找到了最小切。
而对于一棵深度为 h h h 的二叉树随机二染色,寻找存在从根到叶的黑色路径,成功概率为:
ρ h = 1 − ( 1 − ρ h − 1 2 ) 2 = ρ h − 1 2 ( 2 − ρ h − 1 2 ) = ρ h − 1 − ρ h − 1 2 4 \rho_{h} = 1-(1- \frac{\rho_{h-1}}{2})^2 = \frac{\rho_{h-1}}{2}(2-\frac{\rho_{h-1}}{2}) = \rho_{h-1} - \frac{\rho_{h-1}^2}{4} ρh=1(12ρh1)2=2ρh1(22ρh1)=ρh14ρh12

首先,设 f ( x ) = x − x 2 4 f(x) = x - \frac{x^2}{4} f(x)=x4x2,则有 f ′ ( x ) = 1 − x 2 f&#x27;(x)= 1 - \frac{x}{2} f(x)=12x,即在 [0,1] 中该函数单调递增,
通过数学归纳法可证得 ρ h ≥ 1 h + 1 \rho_{h} \ge \frac{1}{h+1} ρhh+11
ρ 1 = 1 − ( 1 2 ) 2 = 3 4 &gt; 1 1 + 1 ρ h = f ( ρ h − 1 ) ≥ f ( 1 ( h − 1 ) + 1 ) = 1 h − 1 4 h 2 ≥ 1 h + 1 ,   for   h &gt; 1 \begin{aligned} \rho_{1} &amp;= 1 - (\frac{1}{2})^2 = \frac{3}{4} &gt; \frac{1}{1+1} \\ \rho_{h} &amp;= f(\rho_{h-1}) \ge f(\frac{1}{(h-1)+1}) \\ &amp;= \frac{1}{h} - \frac{1}{4h^2} \\ &amp;\ge \frac{1}{h+1} \textbf{, for } h &gt; 1 \\ \end{aligned} ρ1ρh=1(21)2=43>1+11=f(ρh1)f((h1)+11)=h14h21h+11, for h>1
于是有:
P r ( h ) = 1 h + 1 ≥ 1 3 + log ⁡ 2 n = Ω ( 1 log ⁡ n ) Pr(h) = \frac{1}{h+1} \ge \frac{1}{3+\log_{\sqrt{2}}n} = \Omega(\frac{1}{\log n}) Pr(h)=h+113+log2 n1=Ω(logn1)

0xFF Prove in detail

Prove the expected running time for 0x02

T ( n ) T(n) T(n) 表示快排 n n n 个乱序数的执行时间,快排的每一步分为三个部分,
当第 m m m 次取的 p i v o t pivot pivot 为第 k m k_{m} km 大,以第一次为例,当第一次取的 p i v o t pivot pivot k 1 = k k_1 = k k1=k 时:

  • 将其它数分别与 p i v o t pivot pivot 比较大小: 共 n − 1 n-1 n1 次操作
  • 将比 p i v o t pivot pivot 大的数都放到 p i v o t pivot pivot 左边: 共 k − 1 k-1 k1 次操作
  • 将比 p i v o t pivot pivot 小的数都放到 p i v o t pivot pivot 右边: 共 n − k n-k nk 次操作

则有:
E ( T ( n ) ) = 1 n ∑ k = 1 n ( E ( T ( k − 1 ) ) + E ( T ( n − k ) ) + ( n − 1 )   ∣   p i v o t = k ) E(T(n)) = \frac{1}{n} \sum_{k=1}^{n} \left( E(T(k-1)) + E(T(n-k)) + (n-1)~|~pivot = k \right) E(T(n))=n1k=1n(E(T(k1))+E(T(nk))+(n1)  pivot=k)
由于选取 p i v o t = k pivot=k pivot=k T ( k ) T(k) T(k) 间具有独立性,令 f ( n ) : = E ( T ( n ) ) f(n) := E(T(n)) f(n):=E(T(n)),则有:
f ( n ) = 1 n ∑ k 1 = 1 n ( f ( k 1 − 1 ) + f ( n − k 1 ) + ( n − 1 ) ) = 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( f ( k 2 − 1 ) + f ( k 1 − k 2 ) + ( k 1 − 1 ) ) ) + 1 n ∑ k 1 = 1 n ( 1 n − k 1 ∑ k 3 = k 1 n ( f ( k 3 − k 1 ) + f ( n − k 3 ) + ( n − k 1 − 1 ) ) ) + 1 n ∑ k 1 = 1 n ( n − 1 ) = 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( f ( k 2 − 1 ) + f ( k 1 − k 2 ) ) + 1 n − k 1 ∑ k 3 = k 1 n ( f ( k 3 − k 1 ) + f ( n − k 3 ) ) ) + 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( k 1 − 1 ) + 1 n − k 1 ∑ k 3 = k 1 n ( n − k 1 − 1 ) + ( n − 1 ) ) \begin{aligned} f(n) &amp;= \frac{1}{n} \sum_{k_1=1}^{n} \left( f(k_1-1) + f(n-k_1) + (n-1) \right) \\ &amp;= \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1}(f(k_2-1) + f(k_1-k_2) + (k_1-1)) \right) \\ &amp;+ \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{n-k_1}\sum_{k_3=k_1}^{n}(f(k_3-k_1) + f(n-k_3) + (n-k_1-1)) \right) + \frac{1}{n} \sum_{k_1=1}^{n} \left( n-1 \right) \\ &amp;= \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1}(f(k_2-1) + f(k_1-k_2)) + \frac{1}{n-k_1}\sum_{k_3=k_1}^{n}(f(k_3-k_1) + f(n-k_3)) \right) \\ &amp;+ \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1}(k_1-1) + \frac{1}{n-k_1}\sum_{k_3=k_1}^{n}(n-k_1-1) + (n-1) \right) \end{aligned} f(n)=n1k1=1n(f(k11)+f(nk1)+(n1))=n1k1=1n(k11k2=1k11(f(k21)+f(k1k2)+(k11)))+n1k1=1n(nk11k3=k1n(f(k3k1)+f(nk3)+(nk11)))+n1k1=1n(n1)=n1k1=1n(k11k2=1k11(f(k21)+f(k1k2))+nk11k3=k1n(f(k3k1)+f(nk3)))+n1k1=1n(k11k2=1k11(k11)+nk11k3=k1n(nk11)+(n1))

其中:
1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( k 1 − 1 ) + 1 n − k 1 ∑ k 3 = k 1 n ( n − k 1 − 1 ) + ( n − 1 ) ) &lt; 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 k 1 + 1 n − k 1 ∑ k 3 = k 1 n ( n − k 1 ) + n ) = 1 n ∑ k 1 = 1 n ( k 1 + n − k 1 + n ) = 1 n ∑ k 1 = 1 n ( 2 n ) = 2 n \begin{aligned} &amp; \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1}(k_1-1) + \frac{1}{n-k_1}\sum_{k_3=k_1}^{n}(n-k_1-1) + (n-1) \right) \\ &lt;&amp; \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1}k_1 + \frac{1}{n-k_1}\sum_{k_3=k_1}^{n}(n-k_1) + n \right) \\ =&amp; \frac{1}{n} \sum_{k_1=1}^{n} \left( k_1 + n - k_1 + n \right) = \frac{1}{n} \sum_{k_1=1}^{n} \left( 2n \right) = 2n \end{aligned} <=n1k1=1n(k11k2=1k11(k11)+nk11k3=k1n(nk11)+(n1))n1k1=1n(k11k2=1k11k1+nk11k3=k1n(nk1)+n)n1k1=1n(k1+nk1+n)=n1k1=1n(2n)=2n

则有:
1 1 1 轮取 p i v o t pivot pivot 时 ( m ∈ { 1 } m \in \{1\} m{1}):
f ( n ) &lt; 1 n ∑ k 1 = 1 n ( f ( k 1 − 1 ) + f ( n − k 1 ) + n ) f(n) &lt; \frac{1}{n} \sum_{k_1=1}^{n} \left( f(k_1-1) + f(n-k_1) + n \right) f(n)<n1k1=1n(f(k11)+f(nk1)+n)

2 2 2 轮取 p i v o t pivot pivot 时 ( m ∈ { 2 , 3 } m \in \{2,3\} m{2,3}):
f ( n ) &lt; 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( f ( k 2 − 1 ) + f ( k 1 − k 2 ) ) + 1 n − k 1 ∑ k 3 = k 1 n ( f ( k 3 − k 1 ) + f ( n − k 3 ) ) ) + 2 n f(n) &lt; \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1}(f(k_2-1) + f(k_1-k_2)) + \frac{1}{n-k_1}\sum_{k_3=k_1}^{n}(f(k_3-k_1) + f(n-k_3)) \right) + 2n f(n)<n1k1=1n(k11k2=1k11(f(k21)+f(k1k2))+nk11k3=k1n(f(k3k1)+f(nk3)))+2n

e p ep ep 轮取 p i v o t pivot pivot 时 ( m ∈ { m ∣ 2 e p − 1 ≤ m &lt; 2 e p } m \in \{m | 2^{ep-1} \le m &lt; 2^{ep}\} m{m2ep1m<2ep}):
f ( n ) &lt; 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( 1 k 2 ∑ k 4 = 1 k 2 − 1 ( ⋯ 1 k 2 e p − 1 ∑ k 2 e p = 1 2 e p − 1 − 1 ( f ( k 2 e p − 1 − 1 ) + f ( k 2 e p − 2 − k 2 e p − 1 ) ) + ⋯ &ThinSpace; ) ) ) + n ⋅ e p f(n) &lt; \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1} \left( \frac{1}{k_2}\sum_{k_4=1}^{k_2-1} \left( \cdots \frac{1}{k_{2^{ep-1}}}\sum_{k_{2^{ep}}=1}^{2^{ep-1}-1}(f(k_{2^{ep-1}} - 1) + f(k_{2^{ep-2}} - k_{2^{ep-1}})) + \cdots \right)\right)\right) + n \cdot ep f(n)<n1k1=1nk11k2=1k11k21k4=1k21k2ep11k2ep=12ep11(f(k2ep11)+f(k2ep2k2ep1))++nep
显然地,$ f(1)=1 $,在有限轮(不超过 n n n)之后,所有的 f ( ⋅ ) = f ( 1 ) = 1 f(\cdot)=f(1)=1 f()=f(1)=1
对于每一层的 ∑ i j − 1 \sum_{i}^{j-1} ij1 求和,其外侧的 1 j − i \frac{1}{j-i} ji1 刚好与之抵消,此时:

f ( n )   &lt; 1 n ∑ k 1 = 1 n ( 1 k 1 ∑ k 2 = 1 k 1 − 1 ( 1 k 2 ∑ k 4 = 1 k 2 − 1 ( ⋯ 1 k 2 p 1 − 1 ∑ k 2 p 1 = 1 2 p 1 − 1 − 1 f ( 1 ) + ⋯ &ThinSpace; ) ) ) + n ⋅ max ⁡ ( p i ) = ∑ n 1 + n ⋅ max ⁡ ( p i ) \begin{aligned} f(n) ~&amp;&lt; \frac{1}{n} \sum_{k_1=1}^{n} \left( \frac{1}{k_1}\sum_{k_2=1}^{k_1-1} \left( \frac{1}{k_2}\sum_{k_4=1}^{k_2-1} \left( \cdots \frac{1}{k_{2^{p_1-1}}}\sum_{k_{2^{p_1}}=1}^{2^{p_1-1}-1}f(1) + \cdots \right)\right)\right) + n \cdot \max(p_i) \\ &amp;= \sum^{n}1 + n \cdot \max(p_i) \end{aligned} f(n) <n1k1=1nk11k2=1k11k21k4=1k21k2p111k2p1=12p111f(1)++nmax(pi)=n1+nmax(pi)

其中 p i p_i pi 指的是 对于第 i i i 大的数,取到其作为 pivot 是在第 p i p_i pi 轮时,
并且当且仅当每次选取pivot都恰好取到当前数列的中位数时,构成层数最少的满二叉树,从而有:
log ⁡ 2 n ≤ p i ≤ n \log_2 n \le p_i \le n log2npin

所以:
f ( n ) &lt; n + n log ⁡ 2 n f(n) &lt; n + n\log_2 n f(n)<n+nlog2n
E ( T ( n ) ) = O ( n + n log ⁡ 2 n ) = O ( n log ⁡ 2 n ) E(T(n)) = O(n + n\log_2 n) = O(n\log_2 n) E(T(n))=O(n+nlog2n)=O(nlog2n)

Expansion problem for 0x04

Suppose that at each step of our min-cut algorithm, instead of choosing a random edge for contraction we choose two vertices at random and coalesce them into a single vertex. Show that there are inputs on which the probability that this modified algorithm finds a min-cut is exponentially small.

设在我们的最小切算法的每一步中,不是随机地选择一条边做收缩,而是随机地选择两个顶点并将他们结合成一个顶点。说明存在输入,使得这个改变后的算法找到最小切的概率是指数级小的。

k ′ k&#x27; k 是最小切的规模:最小切的效果是将所有顶点分为两侧,即如果被最小切分在不同侧的两个顶点被结合,则本次找不到最小切,反之当最终结合成左右各剩下一个点时,这两个点之间即为最小切。
于是假设最小切将所有顶点分成了 k k k 个点和 n − k n-k nk 个点的两侧,由于两侧的等效性,不妨设 k &gt; = n − k k &gt;= n-k k>=nk,称较多点 ( k k k 个点所在的一侧) 称作 A A A 侧,另一侧为 B B B 侧,则有:
1 ≤ n − k ≤ n 2 ≤ k &lt; n , k &lt; = k ′ 1 \le n-k \le \frac{n}{2} \le k &lt; n, \quad k &lt;= k&#x27; 1nk2nk<n,k<=k
定义 S i S_i Si 表示在第 i i i 次操作中没有选中了影响最小切的点对,则第一次"缩点"操作中,选中影响最小切的点对的概率为:
p ( ¬ S 1 ) = k ⋅ ( n − k ) C n 2 p(\lnot S_1) = \frac{k \cdot (n-k)}{C_{n}^{2}} p(¬S1)=Cn2k(nk)

则有:
p ( S 1 ) = 1 − k ⋅ ( n − k ) C n 2 = C n 2 − k ⋅ ( n − k ) C n 2 = C k 2 + C n − k 2 C n 2 &lt; C n / 2 2 + C n / 2 2 C n 2 = 2 ⋅ n 2 4 ⋅ n 2 &lt; 1 2 \begin{aligned} p(S_1) &amp;= 1 - \frac{k \cdot (n-k)}{C_{n}^{2}} = \frac{C_n^2 - k \cdot (n-k)}{C_n^2} = \frac{C_{k}^{2} + C_{n-k}^{2}}{C_{n}^{2}} \\ &amp;&lt; \frac{C_{n/2}^{2} + C_{n/2}^{2}}{C_{n}^{2}} = \frac{2 \cdot n^2}{4 \cdot n^2} &lt; \frac{1}{2} \end{aligned} p(S1)=1Cn2k(nk)=Cn2Cn2k(nk)=Cn2Ck2+Cnk2<Cn2Cn/22+Cn/22=4n22n2<21

第二次"缩点"操作中,选中影响最小切的点对的概率,会受前一次结合的顶点处于 A A A 侧或 B B B 侧的影响:
p ( S 2 ∣ S 1 ) = p ( S 2 ∣ S 1 , A ) ⋅ p ( S 1 , A ) + p ( S 2 ∣ S 1 , ¬ A ) ⋅ p ( S 1 , ¬ A ) = ( k − 1 ) ⋅ ( n − k ) C n − 1 2 ⋅ C k 2 C n 2 + k ⋅ ( n − k − 1 ) C n − 1 2 ⋅ C n − k 2 C n 2 = k ⋅ ( n − k ) ⋅ ( C k 2 + C n − k 2 ) − C n − k 1 ⋅ C k 2 − C k 1 ⋅ C n − k 2 C n − 1 2 ⋅ C n 2 = k ⋅ ( n − k ) ⋅ ( C k 2 + C n − k 2 ) − k ⋅ ( n − k ) ⋅ 1 2 ( ( k − 1 ) + ( n − k − 1 ) ) C n − 1 2 ⋅ C n 2 = k ⋅ ( n − k ) ⋅ ( C k 2 + C n − k 2 − n / 2 − 1 ) C n − 1 2 ⋅ C n 2 = k ⋅ ( n − k ) ⋅ ( C n 2 − k ⋅ ( n − k ) − n / 2 − 1 ) C n − 1 2 ⋅ C n 2 \begin{aligned} p(S_2|S_1) &amp;= p(S_2|S_1, A) \cdot p(S_1, A) + p(S_2|S_1,\lnot A) \cdot p(S_1, \lnot A)\\ &amp;= \frac{(k-1) \cdot (n-k)}{C_{n-1}^{2}} \cdot \frac{C_{k}^{2}}{C_{n}^{2}} + \frac{k \cdot (n-k-1)}{C_{n-1}^{2}} \cdot \frac{C_{n-k}^{2}}{C_{n}^{2}} \\ &amp;= \frac{k \cdot (n-k) \cdot (C_k^2 + C_{n-k}^2) - C_{n-k}^{1} \cdot C_k^2 - C_{k}^{1} \cdot C_{n-k}^2 }{C_{n-1}^2 \cdot C_n^2} \\ &amp;= \frac{k \cdot (n-k) \cdot (C_k^2 + C_{n-k}^2) - k \cdot (n-k) \cdot \frac{1}{2} ((k-1)+(n-k-1))}{C_{n-1}^2 \cdot C_n^2} \\ &amp;= \frac{k \cdot (n-k) \cdot (C_k^2 + C_{n-k}^2 - n/2 - 1)}{C_{n-1}^2 \cdot C_n^2} \\ &amp;= \frac{k \cdot (n-k) \cdot (C_n^2 - k \cdot (n-k) - n/2 - 1)}{C_{n-1}^2 \cdot C_n^2} \end{aligned} p(S2S1)=p(S2S1,A)p(S1,A)+p(S2S1,¬A)p(S1,¬A)=Cn12(k1)(nk)Cn2Ck2+Cn12k(nk1)Cn2Cnk2=Cn12Cn2k(nk)(Ck2+Cnk2)Cnk1Ck2Ck1Cnk2=Cn12Cn2k(nk)(Ck2+Cnk2)k(nk)21((k1)+(nk1))=Cn12Cn2k(nk)(Ck2+Cnk2n/21)=Cn12Cn2k(nk)(Cn2k(nk)n/21)

又因为:
1 ≤ n − k ≤ n 2 ≤ k &lt; n 1 \le n-k \le \frac{n}{2} \le k &lt; n 1nk2nk<n
C i 2 = C i − 1 2 ⋅ i − 2 i = C i − j 2 ⋅ ∏ k = 1 j i − k − 1 i − k + 1 = C i − j 2 ⋅ i − j − 1 i C_i^2 = C_{i-1}^2 \cdot \frac{i-2}{i} = C_{i-j}^2 \cdot \prod_{k=1}^{j}\frac{i-k-1}{i-k+1} = C_{i-j}^2 \cdot \frac{i-j-1}{i} Ci2=Ci12ii2=Cij2k=1jik+1ik1=Cij2iij1

上式可得:
p ( S 2 ∣ S 1 ) &lt; n 2 ⋅ n 2 ⋅ ( C n / 2 2 − n 2 ⋅ n 2 − n 2 ) C n 2 ⋅ n − 2 n ⋅ C n 2 = n 2 4 ⋅ ( n 2 2 − n 2 4 − n 2 ) C n 2 ⋅ n − 2 n ⋅ C n 2 = n 4 16 − n 3 8 n − 2 n ⋅ n 4 4 = ( n − 2 ) ⋅ n 3 4 ( n − 2 ) ⋅ n 3 = 1 4 \begin{aligned} p(S_2|S_1) &amp;&lt; \frac{\frac{n}{2} \cdot \frac{n}{2} \cdot (C_{n/2}^2 - \frac{n}{2} \cdot \frac{n}{2} - \frac{n}{2})}{C_{n}^2 \cdot \frac{n-2}{n} \cdot C_n^2} \\ &amp;= \frac{\frac{n^2}{4} \cdot (\frac{n^2}{2} - \frac{n^2}{4} - \frac{n}{2})}{C_{n}^2 \cdot \frac{n-2}{n} \cdot C_n^2} \\ &amp;= \frac{\frac{n^4}{16} - \frac{n^3}{8}}{\frac{n-2}{n} \cdot \frac{n^4}{4}}\\ &amp;= \frac{(n-2) \cdot n^3}{4(n-2) \cdot n^3} \\ &amp;= \frac{1}{4} \end{aligned} p(S2S1)<Cn2nn2Cn22n2n(Cn/222n2n2n)=Cn2nn2Cn24n2(2n24n22n)=nn24n416n48n3=4(n2)n3(n2)n3=41

m m m 次"缩点"操作中,未选中影响最小切的点对的概率:
p ( S m ∣ ⋂ i &lt; m S i ) &lt; ∑ j = 1 m ( ( ∏ a = k − j k C a 2 ) ⋅ ( ∏ b = n − k − j n − k C b 2 ) ) ) ( C n 2 ) m ⋅ ∏ c = 1 m C n − c 2 C n 2 &lt; ∑ j = 1 m ( ( C n / 2 2 ) j ⋅ ∏ a = 1 j C n / 2 − a 2 C n / 2 2 + ( C n / 2 2 ) m − j ⋅ ∏ b = 1 m − j C n / 2 − b 2 C n / 2 2 ) n 2 m 2 m ⋅ ∏ c = 1 m C n − c 2 C n 2 = O ( n m + 1 ) 2 m ⋅ O ( n m + 1 ) = 1 2 m \begin{aligned} p(S_m|\bigcap_{i&lt;m} S_i) &amp;&lt; \frac{\sum_{j=1}^{m} ( (\prod_{a=k-j}^{k} C_{a}^2) \cdot (\prod_{b=n-k-j}^{n-k} C_{b}^2)))}{(C_{n}^2)^{m} \cdot \prod_{c=1}^{m}\frac{C_{n-c}^2}{C_{n}^2}}\\ &amp;&lt; \frac{\sum_{j=1}^{m} \left( (C_{n/2}^2)^j \cdot \prod_{a=1}^{j}\frac{C_{n/2-a}^2}{C_{n/2}^2} + (C_{n/2}^2)^{m-j} \cdot \prod_{b=1}^{m-j}\frac{C_{n/2-b}^2}{C_{n/2}^2} \right) }{\frac{n^{2m}}{2^m} \cdot \prod_{c=1}^{m} \frac{C_{n-c}^2}{C_{n}^2}} \\ &amp;= \frac{O(n^{m+1})}{2^{m} \cdot O(n^{m+1})}\\ &amp;= \frac{1}{2^{m}} \end{aligned} p(Smi<mSi)<(Cn2)mc=1mCn2Cnc2j=1m((a=kjkCa2)(b=nkjnkCb2)))<2mn2mc=1mCn2Cnc2j=1m((Cn/22)ja=1jCn/22Cn/2a2+(Cn/22)mjb=1mjCn/22Cn/2b2)=2mO(nm+1)O(nm+1)=2m1

特别地,第 n − 2 n-2 n2 次缩点后,最终剩下两个顶点,此时剩下的两点之间即为所求,若每次缩点都没有破坏最小切,则此时的两个顶点间即为最小切,概率为 O ( 2 − ( n − 2 ) ) O(2^{-(n-2)}) O(2(n2))

Expansion problem for 0x05

Consider running the contraction algorithm until the number of vertices is reduced to t t t and then using a cubic-time algorithm to find the min-cut in the contracted graph. Show that this process as many times as necessary to ensure a probability of success at least 1/2 leads to an algorithm with running time Ω ( n 8 / 3 ) \Omega (n^{8/3}) Ω(n8/3)

考虑执行收缩算法直到顶点数目被降低到 t t t,然后用立方时间的算法在被收缩后的图中寻找最小切。证明执行上述过程足够多次以保证至少 1/2 的成功概率,算法需要运行时间 Ω ( n 8 / 3 ) \Omega (n^{8/3}) Ω(n8/3)

对于一次成功的收缩,顶点数被降低到 t t t 时,每条选中的边都未选中涉及最小切的边,此时的成功概率为:
p ( n ) = ∏ i = t n ( 1 − 2 i ) = ( t − 1 ) ( t − 2 ) n ⋅ ( n − 1 ) p(n) = \prod_{i=t}^{n}(1-\frac{2}{i}) = \frac{(t-1)(t-2)}{n \cdot (n-1)} p(n)=i=tn(1i2)=n(n1)(t1)(t2)
重复运行 k k k 次的成功概率为:
P ( n , k ) = 1 − ( 1 − p ( n ) ) k = 1 − ( 1 − t 2 n 2 ) k P(n, k) = 1 - (1 - p(n))^k = 1 - ( 1 - \frac{t^2}{n^2})^k P(n,k)=1(1p(n))k=1(1n2t2)k
k = ln ⁡ 2 ⋅ n 2 t 2 k = \ln 2 \cdot \frac{n^2}{t^2} k=ln2t2n2,此时:
P ( n , ln ⁡ 2 ⋅ n 2 t 2 ) = 1 − ( 1 − t 2 n 2 ) ln ⁡ 2 ⋅ n 2 t 2 = 1 − ( ( 1 − t 2 n 2 ) n 2 t 2 ) ln ⁡ 2 ) ≥ 1 − ( 1 e ) ln ⁡ 2 = 1 2 \begin{aligned} P(n, \ln 2 \cdot \frac{n^2}{t^2}) &amp;= 1 - ( 1 - \frac{t^2}{n^2})^{\ln 2 \cdot \frac{n^2}{t^2}} \\ &amp;= 1 - ((1 - \frac{t^2}{n^2})^{\frac{n^2}{t^2}})^{\ln 2}) \\ &amp;\ge 1 - (\frac{1}{e})^{\ln 2} \\ &amp;= \frac{1}{2} \end{aligned} P(n,ln2t2n2)=1(1n2t2)ln2t2n2=1((1n2t2)t2n2)ln2)1(e1)ln2=21
单次运行的时间复杂度为:
T ( n ) = C 1 ⋅ ( n + t + 1 ) ⋅ ( n − t ) 2 + C 2 ⋅ t 3 = C 1 2 ( n 2 + n − t 2 − t ) + C 2 t 3 = C 1 2 ( n 2 + n ) − C 1 t 2 2 − C 1 t 2 + C 2 t 3 k ⋅ T ( n ) = ln ⁡ 2 t 2 ⋅ n 2 ⋅ ( C 1 2 ( n 2 + n ) − C 1 t 2 2 − C 1 t 2 + C 2 t 3 ) ∵   n 2 + n   &gt; n 2 &gt; n 2 3 ∴ k ⋅ T ( n ) &gt; ln ⁡ 2 t 2 ⋅ n 2 ⋅ ( C 1 2 n 2 3 − C 1 t 2 2 − C 1 t 2 + C 2 t 3 ) = Ω ( n 2 ⋅ n 2 3 ) = Ω ( n 8 3 ) \begin{aligned} T(n) &amp;= \frac{C_1 \cdot (n+t+1) \cdot (n-t)}{2} + C_2 \cdot t^3 \\ &amp;= \frac{C_1}{2} (n^2 + n - t^2 - t) + C_2t^3 \\ &amp;= \frac{C_1}{2} (n^2 + n) - \frac{C_1t^2}{2} - \frac{C_1t}{2} + C_2t^3 \\ \\ k \cdot T(n) &amp;= \frac{\ln 2}{t^2} \cdot n^2 \cdot (\frac{C_1}{2} (n^2 + n) - \frac{C_1t^2}{2} - \frac{C_1t}{2} + C_2t^3) \\ \because ~ n^2 + n ~ &amp;&gt; n^2 &gt; n^{\frac{2}{3}} \\ \therefore k \cdot T(n) &amp;&gt; \frac{\ln 2}{t^2} \cdot n^2 \cdot (\frac{C_1}{2} n^{\frac{2}{3}} - \frac{C_1t^2}{2} - \frac{C_1t}{2} + C_2t^3) \\ &amp;= \Omega (n^2 \cdot n^{\frac{2}{3}}) = \Omega (n^{\frac{8}{3}}) \end{aligned} T(n)kT(n) n2+n kT(n)=2C1(n+t+1)(nt)+C2t3=2C1(n2+nt2t)+C2t3=2C1(n2+n)2C1t22C1t+C2t3=t2ln2n2(2C1(n2+n)2C1t22C1t+C2t3)>n2>n32>t2ln2n2(2C1n322C1t22C1t+C2t3)=Ω(n2n32)=Ω(n38)

Complexity Class

0x01 Las Vegas VS. Monte Carlo

Las Vegas algorithm

  • 拉斯维加斯算法
  • 具有随机的执行时间
  • 一旦计算出来,得到的必然是正确结果
  • 举例:快排 Quick Sort

Monte Carlo algorithm

  • 蒙特卡罗算法
  • 具有随机的结果质量
  • 对于决策问题而言,可能出现单边或双边错误
  • 有一定概率获得最优答案,通过多次重复可以获得一个可接受的获得最优解的概率
  • 举例:随机最小割算法 randomized Min-cut algorithm

0x02 Denition

We only consider decision problem in this class.

Language

A language L ⊆ Σ ∗ L \subseteq \Sigma^* LΣ is any collection of strings over Σ \Sigma Σ.
Usually Σ = { 0 , 1 } \Sigma = \{0,1\} Σ={0,1} , and Σ ∗ \Sigma^* Σ is the set of all possible strings over this alphabet.

P

L ∈ P ⇔ ∃  polynomial time algorithm  A   s . t . L \in P \Leftrightarrow \exists ~ \text{polynomial time algorithm } A ~s.t. LP polynomial time algorithm A s.t.
∀ x ∈ Σ ∗ , { x ∈ L ⇒ A ( x )  accepts x ∉ L ⇒ A ( x )  rejects \forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow A(x) \text{ accepts}\\ x \notin L \Rightarrow A(x) \text{ rejects} \end{cases} xΣ,{xLA(x) acceptsx/LA(x) rejects

NP

L ∈ N P ⇔ ∃  polynomial time algorithm  A   s . t . L \in NP \Leftrightarrow \exists ~ \text{polynomial time algorithm } A ~s.t. LNP polynomial time algorithm A s.t.
∀ x ∈ Σ ∗ , { x ∈ L ⇒ ∃ y , ∣ y ∣ = p o l y ( ∣ x ∣ ) , A ( x , y )  accepts x ∉ L ⇒ ∀ y , ∣ y ∣ = p o l y ( ∣ x ∣ ) , A ( x , y )  rejects \forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow \exists y,|y|=poly(|x|), A(x,y) \text{ accepts}\\ x \notin L \Rightarrow \forall y,|y|=poly(|x|), A(x,y) \text{ rejects} \end{cases} xΣ,{xLy,y=poly(x),A(x,y) acceptsx/Ly,y=poly(x),A(x,y) rejects
co- N P = { L ‾   ∣   L ∈ N P } \text{co-}NP=\{\overline L ~|~ L \in NP \} co-NP={L  LNP}

  • NP-hard problem (informal denition): A is NP-hard
    ⇔ \Leftrightarrow if A is polynomial time solvable, all problems in NP are polynomial time solvable.
  • NP-complete problem: if A is NP-hard and A 2NP.
  • Famous NP-complete problems
    • 3-SAT
    • Vertex cover, Set cover
    • Clique, Independent set
    • Hamilton cycle, Traveling salesman problem
    • Integer programming

RP and co-RP

RP here is for Randomized Polynomial time

L ∈ R P ⇔ ∃  randomized algorithm  A  running in worst-case polynomial time  s . t . L \in RP \Leftrightarrow \exists ~ \text{randomized algorithm } A \text{ running in worst-case polynomial time} ~s.t. LRP randomized algorithm A running in worst-case polynomial time s.t.
∀ x ∈ Σ ∗ , { x ∈ L ⇒ P r ( A ( x )  accepts ) ≥ 1 / 2 x ∉ L ⇒ P r ( A ( x )  accepts ) = 0 \forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow Pr\left( A(x) \text{ accepts} \right) \ge 1/2\\ x \notin L \Rightarrow Pr\left( A(x) \text{ accepts} \right) = 0 \end{cases} xΣ,{xLPr(A(x) accepts)1/2x/LPr(A(x) accepts)=0

L ∈ co- R P ⇔ ∃  randomized algorithm  A  running in worst-case polynomial time  s . t . L \in \text{co-}RP \Leftrightarrow \exists ~ \text{randomized algorithm } A \text{ running in worst-case polynomial time} ~s.t. Lco-RP randomized algorithm A running in worst-case polynomial time s.t.
∀ x ∈ Σ ∗ , { x ∈ L ⇒ P r ( A ( x )  accepts ) = 1 x ∉ L ⇒ P r ( A ( x )  accepts ) ≤ 1 / 2 \forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow Pr\left( A(x) \text{ accepts} \right) = 1\\ x \notin L \Rightarrow Pr\left( A(x) \text{ accepts} \right) \le 1/2 \end{cases} xΣ,{xLPr(A(x) accepts)=1x/LPr(A(x) accepts)1/2

What’s more, we have R P ⊆ N P RP \subseteq NP RPNP and co- R P ⊆ co- N P \text{co-}RP \subseteq \text{co-}NP co-RPco-NP.

BPP and PP

BPP here is for Bounded-error Probabilistic Polynomial time
PP here is for Probabilistic Polynomial time

L ∈ B P P ⇔ ∃  randomized algorithm  A  running in worst-case polynomial time  s . t . L \in BPP \Leftrightarrow \exists ~ \text{randomized algorithm } A \text{ running in worst-case polynomial time} ~s.t. LBPP randomized algorithm A running in worst-case polynomial time s.t.
∀ x ∈ Σ ∗ , { x ∈ L ⇒ P r ( A ( x )  accepts ) ≥ 3 / 4 x ∉ L ⇒ P r ( A ( x )  accepts ) ≤ 1 / 4 \forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow Pr\left( A(x) \text{ accepts} \right) \ge 3/4\\ x \notin L \Rightarrow Pr\left( A(x) \text{ accepts} \right) \le 1/4 \end{cases} xΣ,{xLPr(A(x) accepts)3/4x/LPr(A(x) accepts)1/4

L ∈ P P ⇔ ∃  randomized algorithm  A  running in worst-case polynomial time  s . t . L \in PP \Leftrightarrow \exists ~ \text{randomized algorithm } A \text{ running in worst-case polynomial time} ~s.t. LPP randomized algorithm A running in worst-case polynomial time s.t.
∀ x ∈ Σ ∗ , { x ∈ L ⇒ P r ( A ( x )  accepts ) &gt; 1 / 2 x ∉ L ⇒ P r ( A ( x )  accepts ) &lt; 1 / 2 \forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow Pr\left( A(x) \text{ accepts} \right) &gt; 1/2\\ x \notin L \Rightarrow Pr\left( A(x) \text{ accepts} \right) &lt; 1/2 \end{cases} xΣ,{xLPr(A(x) accepts)>1/2x/LPr(A(x) accepts)<1/2

What’s more, we have R P ⊆ B P P ⊆ P P RP \subseteq BPP \subseteq PP RPBPPPP and N P ⊆ P P NP \subseteq PP NPPP.

ZPP

BPP here is for Zero-error Probabilistic Polynomial time
The class ZPP is the class of languages that have Las Vegas algorithms running in expected polynomial time.

Z P P = R P ∩ co- R P ZPP = RP \cap \text{co-}RP ZPP=RPco-RP

0xFF Prove in detail

RP ⊆ \subseteq NP

N P : { x ∈ L ⇒ ∃ y , ∣ y ∣ = p o l y ( ∣ x ∣ ) , A ( x , y )  accepts x ∉ L ⇒ ∀ y , ∣ y ∣ = p o l y ( ∣ x ∣ ) , A ( x , y )  rejects NP: \begin{cases} x \in L \Rightarrow \exists y,|y|=poly(|x|), &amp;A(x,y) \text{ accepts}\\ x \notin L \Rightarrow \forall y,|y|=poly(|x|), &amp;A(x,y) \text{ rejects} \end{cases} NP:{xLy,y=poly(x),x/Ly,y=poly(x),A(x,y) acceptsA(x,y) rejects

R P : { x ∈ L ⇒ P r ( B ( x )  accepts ) ≥ 1 / 2 x ∉ L ⇒ P r ( B ( x )  accepts ) = 0 RP: \begin{cases} x \in L \Rightarrow Pr\left( B(x) \text{ accepts} \right) \ge 1/2\\ x \notin L \Rightarrow Pr\left( B(x) \text{ accepts} \right) = 0 \end{cases} RP:{xLPr(B(x) accepts)1/2x/LPr(B(x) accepts)=0

∀ L ∈ R P ⇒ B \forall L \in RP \Rightarrow B LRPB
L ∈ N P L\in NP LNP 中构造 A A A y y y 为一个随机串,长度为 r r r ∣ r ∣ = p o l y ( ∣ x ∣ ) |r|=poly(|x|) r=poly(x)
串中为1的个数较多则Accept,反之reject。

NP ⊆ \subseteq PP

(complete this section later)

ZPP = RP ∩ \cap co-RP

(complete this section later)

PP = co-PP and BPP = co-BPP

L ∈ P P L \in PP LPP 时,存在 A ( x ) A(x) A(x) 符合如下定义:
∀ x ∈ Σ ∗ { x ∈ L ⇒ P r ( A ( x )   a c c e p t s ) &lt; 1 2 x ∉ L ⇒ P r ( A ( x )   a c c e p t s ) &gt; 1 2 \forall x \in \Sigma^* \begin{cases} x \in L \Rightarrow Pr(A(x)~accepts) &lt; \frac{1}{2} \\ x \notin L \Rightarrow Pr(A(x)~accepts) &gt; \frac{1}{2} \end{cases} xΣ{xLPr(A(x) accepts)<21x/LPr(A(x) accepts)>21

则可以构造 B(x),令:
B ( x ) = { a c c e p t s ,  when  A ( x )   r e j e c t s r e j e c t s ,  when  A ( x )   a c c e p t s B(x)= \begin{cases} accepts,~ \text{when } A(x) ~rejects \\ rejects,~ \text{when } A(x) ~accepts \end{cases} B(x)={accepts, when A(x) rejectsrejects, when A(x) accepts

此时的 B ( x ) B(x) B(x) 符合以下条件:
∀ x ∈ Σ ∗ { x ∈ L ⇒ P r ( B ( x )   a c c e p t s ) &gt; 1 2 x ∉ L ⇒ P r ( B ( x )   a c c e p t s ) &lt; 1 2 \forall x \in \Sigma^* \begin{cases} x \in L \Rightarrow Pr(B(x)~accepts) &gt; \frac{1}{2} \\ x \notin L \Rightarrow Pr(B(x)~accepts) &lt; \frac{1}{2} \end{cases} xΣ{xLPr(B(x) accepts)>21x/LPr(B(x) accepts)<21

L ∈ co- P P L \in \text{co-}PP Lco-PP,故 co- P P ⊆ P P \text{co-}PP \subseteq PP co-PPPP,反之同理, P P = co- P P PP=\text{co-}PP PP=co-PP 得证。

同理,当 L ∈ B P P L \in BPP LBPP 时,存在 A ( x ) A(x) A(x) 符合如下定义:
∀ x ∈ Σ ∗ { x ∈ L ⇒ P r ( A ( x )   a c c e p t s ) ≤ 1 4 x ∉ L ⇒ P r ( A ( x )   a c c e p t s ) ≥ 3 4 \forall x \in \Sigma^* \begin{cases} x \in L \Rightarrow Pr(A(x)~accepts) \leq \frac{1}{4} \\ x \notin L \Rightarrow Pr(A(x)~accepts) \geq \frac{3}{4} \end{cases} xΣ{xLPr(A(x) accepts)41x/LPr(A(x) accepts)43

则可以构造 B(x),令:
B ( x ) = { a c c e p t s ,  when  A ( x )   r e j e c t s r e j e c t s ,  when  A ( x )   a c c e p t s B(x)= \begin{cases} accepts,~ \text{when } A(x) ~rejects \\ rejects,~ \text{when } A(x) ~accepts \end{cases} B(x)={accepts, when A(x) rejectsrejects, when A(x) accepts

此时的 B ( x ) B(x) B(x) 符合以下条件:
∀ x ∈ Σ ∗ { x ∈ L ⇒ P r ( B ( x )   a c c e p t s ) ≥ 1 4 x ∉ L ⇒ P r ( B ( x )   a c c e p t s ) ≤ 3 4 \forall x \in \Sigma^* \begin{cases} x \in L \Rightarrow Pr(B(x)~accepts) \geq \frac{1}{4} \\ x \notin L \Rightarrow Pr(B(x)~accepts) \leq \frac{3}{4} \end{cases} xΣ{xLPr(B(x) accepts)41x/LPr(B(x) accepts)43

L ∈ co- B P P L \in \text{co-}BPP Lco-BPP,故 co- B P P ⊆ B P P \text{co-}BPP \subseteq BPP co-BPPBPP,反之同理, B P P = co- B P P BPP=\text{co-}BPP BPP=co-BPP 得证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果天王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值