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,limn→∞g(n)f(n)≤c, c is constant
-
f
(
n
)
=
o
(
g
(
n
)
)
:
<
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 limn→∞g(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
)
)
:
>
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))~&=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(n)) ~|~ X_n=k \right) \\ &=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(k-1)) + E(T(n-k)) + n-1 ~|~ X_n=k \right) \\ &=\frac{1}{n}\sum_{k=1}^{n}\left( E(T(k-1)) + E(T(n-k)) + n-1 \right) \\ \therefore E(T(n))~&=\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=1∑n(E(T(n)) ∣ Xn=k)=n1k=1∑n(E(T(k−1))+E(T(n−k))+n−1 ∣ Xn=k)=n1k=1∑n(E(T(k−1))+E(T(n−k))+n−1)=n1k=1∑n(E(T(k−1))+E(T(n−k))+(n−1))
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
<
j
≤
n
X
i
j
T(n)= \sum_{1\le i<j\le n} X_{ij}
T(n)=∑1≤i<j≤nXij。
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=j−i+12
E
(
T
(
n
)
)
=
∑
1
≤
i
<
j
≤
n
P
i
j
E(T(n))~=\sum_{1\le i<j\le n} P_{ij}
E(T(n)) =1≤i<j≤n∑Pij
∑ 1 ≤ i < 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 < 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 1≤i<j≤n∑j−i+11=21≤i≤n−1∑j=2∑n−i+1j1≤2(n−1)j=2∑nj1≈2(n−1)⋅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+⋯+n1≤∫1nx1=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+⋯+n1≥∫1nx1=lnn−ln1
于是我们可以得到
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(E1∧E2∧⋯∧En−1), 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 , ⋯   , 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) ~&= \frac{|E|-k}{|E|} \le 1- \frac{2k}{nk} = 1 - \frac{2}{n} \\ |E| ~&\ge \frac{nk}{2} \\ \textbf{Notes: } Pr(E_2~|~E_1) ~&\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}) ~&\ge 1-\frac{2}{n-i+1} \\ Pr(E_1 \land E_2 \land \cdots \land E_{n-2}) ~&= Pr(E_1) \cdot Pr(E_2~|~E_1) \cdot Pr(E_3~|~E_1,E_2) \cdots \\ &\ge (1-\frac{2}{n})(1-\frac{2}{n-1})\cdots(1-\frac{2}{3}) \\ &= (\frac{n-2}{n}) \cdot (\frac{n-3}{n-1})\cdots \frac{2}{4} \cdot \frac{1}{3} \\ &= \Theta(\frac{1}{n^2})\\ \end{aligned} Pr(E1) ∣E∣ Notes: Pr(E2 ∣ E1) Pr(Ei ∣ E1,⋯,Ei−1) Pr(E1∧E2∧⋯∧En−2) =∣E∣∣E∣−k≤1−nk2k=1−n2≥2nk≥1−n−12, not Pr(E2)≥1−n−12≥1−n−i+12=Pr(E1)⋅Pr(E2 ∣ E1)⋅Pr(E3 ∣ E1,E2)⋯≥(1−n2)(1−n−12)⋯(1−32)=(nn−2)⋅(n−1n−3)⋯42⋅31=Θ(n21)
可得该随机算法的成功概率为:
P
r
(
E
i
∣
E
1
,
⋯
 
,
E
i
−
1
)
=
Ω
(
1
n
2
)
Pr(E_i~|~E_1,\cdots, E_{i-1})= \Omega(\frac{1}{n^2})
Pr(Ei ∣ E1,⋯,Ei−1)=Ω(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−(1−n21)n2∼1−e1
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−(1−2ρh−1)2=2ρh−1(2−2ρh−1)=ρh−1−4ρh−12
首先,设
f
(
x
)
=
x
−
x
2
4
f(x) = x - \frac{x^2}{4}
f(x)=x−4x2,则有
f
′
(
x
)
=
1
−
x
2
f'(x)= 1 - \frac{x}{2}
f′(x)=1−2x,即在 [0,1] 中该函数单调递增,
通过数学归纳法可证得
ρ
h
≥
1
h
+
1
\rho_{h} \ge \frac{1}{h+1}
ρh≥h+11:
ρ
1
=
1
−
(
1
2
)
2
=
3
4
>
1
1
+
1
ρ
h
=
f
(
ρ
h
−
1
)
≥
f
(
1
(
h
−
1
)
+
1
)
=
1
h
−
1
4
h
2
≥
1
h
+
1
,
for
h
>
1
\begin{aligned} \rho_{1} &= 1 - (\frac{1}{2})^2 = \frac{3}{4} > \frac{1}{1+1} \\ \rho_{h} &= f(\rho_{h-1}) \ge f(\frac{1}{(h-1)+1}) \\ &= \frac{1}{h} - \frac{1}{4h^2} \\ &\ge \frac{1}{h+1} \textbf{, for } h > 1 \\ \end{aligned}
ρ1ρh=1−(21)2=43>1+11=f(ρh−1)≥f((h−1)+11)=h1−4h21≥h+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+11≥3+log2n1=Ω(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 n−1 次操作
- 将比 p i v o t pivot pivot 大的数都放到 p i v o t pivot pivot 左边: 共 k − 1 k-1 k−1 次操作
- 将比 p i v o t pivot pivot 小的数都放到 p i v o t pivot pivot 右边: 共 n − k n-k n−k 次操作
则有:
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=1∑n(E(T(k−1))+E(T(n−k))+(n−1) ∣ 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) &= \frac{1}{n} \sum_{k_1=1}^{n} \left( f(k_1-1) + f(n-k_1) + (n-1) \right) \\ &= \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) \\ &+ \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) \\ &= \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) \\ &+ \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=1∑n(f(k1−1)+f(n−k1)+(n−1))=n1k1=1∑n(k11k2=1∑k1−1(f(k2−1)+f(k1−k2)+(k1−1)))+n1k1=1∑n(n−k11k3=k1∑n(f(k3−k1)+f(n−k3)+(n−k1−1)))+n1k1=1∑n(n−1)=n1k1=1∑n(k11k2=1∑k1−1(f(k2−1)+f(k1−k2))+n−k11k3=k1∑n(f(k3−k1)+f(n−k3)))+n1k1=1∑n(k11k2=1∑k1−1(k1−1)+n−k11k3=k1∑n(n−k1−1)+(n−1))
其中:
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
)
)
<
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} & \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) \\ <& \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) \\ =& \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=1∑n(k11k2=1∑k1−1(k1−1)+n−k11k3=k1∑n(n−k1−1)+(n−1))n1k1=1∑n(k11k2=1∑k1−1k1+n−k11k3=k1∑n(n−k1)+n)n1k1=1∑n(k1+n−k1+n)=n1k1=1∑n(2n)=2n
则有:
第
1
1
1 轮取
p
i
v
o
t
pivot
pivot 时 (
m
∈
{
1
}
m \in \{1\}
m∈{1}):
f
(
n
)
<
1
n
∑
k
1
=
1
n
(
f
(
k
1
−
1
)
+
f
(
n
−
k
1
)
+
n
)
f(n) < \frac{1}{n} \sum_{k_1=1}^{n} \left( f(k_1-1) + f(n-k_1) + n \right)
f(n)<n1k1=1∑n(f(k1−1)+f(n−k1)+n)
第
2
2
2 轮取
p
i
v
o
t
pivot
pivot 时 (
m
∈
{
2
,
3
}
m \in \{2,3\}
m∈{2,3}):
f
(
n
)
<
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) < \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=1∑n(k11k2=1∑k1−1(f(k2−1)+f(k1−k2))+n−k11k3=k1∑n(f(k3−k1)+f(n−k3)))+2n
第
e
p
ep
ep 轮取
p
i
v
o
t
pivot
pivot 时 (
m
∈
{
m
∣
2
e
p
−
1
≤
m
<
2
e
p
}
m \in \{m | 2^{ep-1} \le m < 2^{ep}\}
m∈{m∣2ep−1≤m<2ep}):
f
(
n
)
<
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
)
)
+
⋯
 
)
)
)
+
n
⋅
e
p
f(n) < \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=1∑n⎝⎛k11k2=1∑k1−1⎝⎛k21k4=1∑k2−1⎝⎛⋯k2ep−11k2ep=1∑2ep−1−1(f(k2ep−1−1)+f(k2ep−2−k2ep−1))+⋯⎠⎞⎠⎞⎠⎞+n⋅ep
显然地,$ 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}
∑ij−1 求和,其外侧的
1
j
−
i
\frac{1}{j-i}
j−i1 刚好与之抵消,此时:
f ( n ) < 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 ) + ⋯   ) ) ) + n ⋅ max ( p i ) = ∑ n 1 + n ⋅ max ( p i ) \begin{aligned} f(n) ~&< \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) \\ &= \sum^{n}1 + n \cdot \max(p_i) \end{aligned} f(n) <n1k1=1∑n⎝⎛k11k2=1∑k1−1⎝⎛k21k4=1∑k2−1⎝⎛⋯k2p1−11k2p1=1∑2p1−1−1f(1)+⋯⎠⎞⎠⎞⎠⎞+n⋅max(pi)=∑n1+n⋅max(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
log2n≤pi≤n
所以:
f
(
n
)
<
n
+
n
log
2
n
f(n) < 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'
k′ 是最小切的规模:最小切的效果是将所有顶点分为两侧,即如果被最小切分在不同侧的两个顶点被结合,则本次找不到最小切,反之当最终结合成左右各剩下一个点时,这两个点之间即为最小切。
于是假设最小切将所有顶点分成了
k
k
k 个点和
n
−
k
n-k
n−k 个点的两侧,由于两侧的等效性,不妨设
k
>
=
n
−
k
k >= n-k
k>=n−k,称较多点 (
k
k
k 个点所在的一侧) 称作
A
A
A 侧,另一侧为
B
B
B 侧,则有:
1
≤
n
−
k
≤
n
2
≤
k
<
n
,
k
<
=
k
′
1 \le n-k \le \frac{n}{2} \le k < n, \quad k <= k'
1≤n−k≤2n≤k<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⋅(n−k)
则有:
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
<
C
n
/
2
2
+
C
n
/
2
2
C
n
2
=
2
⋅
n
2
4
⋅
n
2
<
1
2
\begin{aligned} p(S_1) &= 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}} \\ &< \frac{C_{n/2}^{2} + C_{n/2}^{2}}{C_{n}^{2}} = \frac{2 \cdot n^2}{4 \cdot n^2} < \frac{1}{2} \end{aligned}
p(S1)=1−Cn2k⋅(n−k)=Cn2Cn2−k⋅(n−k)=Cn2Ck2+Cn−k2<Cn2Cn/22+Cn/22=4⋅n22⋅n2<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) &= p(S_2|S_1, A) \cdot p(S_1, A) + p(S_2|S_1,\lnot A) \cdot p(S_1, \lnot A)\\ &= \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}} \\ &= \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} \\ &= \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} \\ &= \frac{k \cdot (n-k) \cdot (C_k^2 + C_{n-k}^2 - n/2 - 1)}{C_{n-1}^2 \cdot C_n^2} \\ &= \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(S2∣S1)=p(S2∣S1,A)⋅p(S1,A)+p(S2∣S1,¬A)⋅p(S1,¬A)=Cn−12(k−1)⋅(n−k)⋅Cn2Ck2+Cn−12k⋅(n−k−1)⋅Cn2Cn−k2=Cn−12⋅Cn2k⋅(n−k)⋅(Ck2+Cn−k2)−Cn−k1⋅Ck2−Ck1⋅Cn−k2=Cn−12⋅Cn2k⋅(n−k)⋅(Ck2+Cn−k2)−k⋅(n−k)⋅21((k−1)+(n−k−1))=Cn−12⋅Cn2k⋅(n−k)⋅(Ck2+Cn−k2−n/2−1)=Cn−12⋅Cn2k⋅(n−k)⋅(Cn2−k⋅(n−k)−n/2−1)
又因为:
1
≤
n
−
k
≤
n
2
≤
k
<
n
1 \le n-k \le \frac{n}{2} \le k < n
1≤n−k≤2n≤k<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=Ci−12⋅ii−2=Ci−j2⋅k=1∏ji−k+1i−k−1=Ci−j2⋅ii−j−1
上式可得:
p
(
S
2
∣
S
1
)
<
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) &< \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} \\ &= \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} \\ &= \frac{\frac{n^4}{16} - \frac{n^3}{8}}{\frac{n-2}{n} \cdot \frac{n^4}{4}}\\ &= \frac{(n-2) \cdot n^3}{4(n-2) \cdot n^3} \\ &= \frac{1}{4} \end{aligned}
p(S2∣S1)<Cn2⋅nn−2⋅Cn22n⋅2n⋅(Cn/22−2n⋅2n−2n)=Cn2⋅nn−2⋅Cn24n2⋅(2n2−4n2−2n)=nn−2⋅4n416n4−8n3=4(n−2)⋅n3(n−2)⋅n3=41
第
m
m
m 次"缩点"操作中,未选中影响最小切的点对的概率:
p
(
S
m
∣
⋂
i
<
m
S
i
)
<
∑
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
<
∑
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<m} S_i) &< \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}}\\ &< \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}} \\ &= \frac{O(n^{m+1})}{2^{m} \cdot O(n^{m+1})}\\ &= \frac{1}{2^{m}} \end{aligned}
p(Sm∣i<m⋂Si)<(Cn2)m⋅∏c=1mCn2Cn−c2∑j=1m((∏a=k−jkCa2)⋅(∏b=n−k−jn−kCb2)))<2mn2m⋅∏c=1mCn2Cn−c2∑j=1m((Cn/22)j⋅∏a=1jCn/22Cn/2−a2+(Cn/22)m−j⋅∏b=1m−jCn/22Cn/2−b2)=2m⋅O(nm+1)O(nm+1)=2m1
特别地,第 n − 2 n-2 n−2 次缩点后,最终剩下两个顶点,此时剩下的两点之间即为所求,若每次缩点都没有破坏最小切,则此时的两个顶点间即为最小切,概率为 O ( 2 − ( n − 2 ) ) O(2^{-(n-2)}) O(2−(n−2))
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=t∏n(1−i2)=n⋅(n−1)(t−1)(t−2)
重复运行
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−(1−p(n))k=1−(1−n2t2)k
取
k
=
ln
2
⋅
n
2
t
2
k = \ln 2 \cdot \frac{n^2}{t^2}
k=ln2⋅t2n2,此时:
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}) &= 1 - ( 1 - \frac{t^2}{n^2})^{\ln 2 \cdot \frac{n^2}{t^2}} \\ &= 1 - ((1 - \frac{t^2}{n^2})^{\frac{n^2}{t^2}})^{\ln 2}) \\ &\ge 1 - (\frac{1}{e})^{\ln 2} \\ &= \frac{1}{2} \end{aligned}
P(n,ln2⋅t2n2)=1−(1−n2t2)ln2⋅t2n2=1−((1−n2t2)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
>
n
2
>
n
2
3
∴
k
⋅
T
(
n
)
>
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) &= \frac{C_1 \cdot (n+t+1) \cdot (n-t)}{2} + C_2 \cdot t^3 \\ &= \frac{C_1}{2} (n^2 + n - t^2 - t) + C_2t^3 \\ &= \frac{C_1}{2} (n^2 + n) - \frac{C_1t^2}{2} - \frac{C_1t}{2} + C_2t^3 \\ \\ k \cdot T(n) &= \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 ~ &> n^2 > n^{\frac{2}{3}} \\ \therefore k \cdot T(n) &> \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) \\ &= \Omega (n^2 \cdot n^{\frac{2}{3}}) = \Omega (n^{\frac{8}{3}}) \end{aligned}
T(n)k⋅T(n)∵ n2+n ∴k⋅T(n)=2C1⋅(n+t+1)⋅(n−t)+C2⋅t3=2C1(n2+n−t2−t)+C2t3=2C1(n2+n)−2C1t2−2C1t+C2t3=t2ln2⋅n2⋅(2C1(n2+n)−2C1t2−2C1t+C2t3)>n2>n32>t2ln2⋅n2⋅(2C1n32−2C1t2−2C1t+C2t3)=Ω(n2⋅n32)=Ω(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.
L∈P⇔∃ 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∈Σ∗,{x∈L⇒A(x) acceptsx∈/L⇒A(x) rejects
NP
L
∈
N
P
⇔
∃
polynomial time algorithm
A
s
.
t
.
L \in NP \Leftrightarrow \exists ~ \text{polynomial time algorithm } A ~s.t.
L∈NP⇔∃ 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∈Σ∗,{x∈L⇒∃y,∣y∣=poly(∣x∣),A(x,y) acceptsx∈/L⇒∀y,∣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 ∣ L∈NP}
- 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.
L∈RP⇔∃ 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∈Σ∗,{x∈L⇒Pr(A(x) accepts)≥1/2x∈/L⇒Pr(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.
L∈co-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∈Σ∗,{x∈L⇒Pr(A(x) accepts)=1x∈/L⇒Pr(A(x) accepts)≤1/2
What’s more, we have R P ⊆ N P RP \subseteq NP RP⊆NP and co- R P ⊆ co- N P \text{co-}RP \subseteq \text{co-}NP co-RP⊆co-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.
L∈BPP⇔∃ 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∈Σ∗,{x∈L⇒Pr(A(x) accepts)≥3/4x∈/L⇒Pr(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.
L∈PP⇔∃ 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
)
<
1
/
2
\forall x \in \Sigma^*, \begin{cases} x \in L \Rightarrow Pr\left( A(x) \text{ accepts} \right) > 1/2\\ x \notin L \Rightarrow Pr\left( A(x) \text{ accepts} \right) < 1/2 \end{cases}
∀x∈Σ∗,{x∈L⇒Pr(A(x) accepts)>1/2x∈/L⇒Pr(A(x) accepts)<1/2
What’s more, we have R P ⊆ B P P ⊆ P P RP \subseteq BPP \subseteq PP RP⊆BPP⊆PP and N P ⊆ P P NP \subseteq PP NP⊆PP.
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=RP∩co-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|), &A(x,y) \text{ accepts}\\ x \notin L \Rightarrow \forall y,|y|=poly(|x|), &A(x,y) \text{ rejects} \end{cases} NP:{x∈L⇒∃y,∣y∣=poly(∣x∣),x∈/L⇒∀y,∣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:{x∈L⇒Pr(B(x) accepts)≥1/2x∈/L⇒Pr(B(x) accepts)=0
∀
L
∈
R
P
⇒
B
\forall L \in RP \Rightarrow B
∀L∈RP⇒B
在
L
∈
N
P
L\in NP
L∈NP 中构造
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
L∈PP 时,存在
A
(
x
)
A(x)
A(x) 符合如下定义:
∀
x
∈
Σ
∗
{
x
∈
L
⇒
P
r
(
A
(
x
)
a
c
c
e
p
t
s
)
<
1
2
x
∉
L
⇒
P
r
(
A
(
x
)
a
c
c
e
p
t
s
)
>
1
2
\forall x \in \Sigma^* \begin{cases} x \in L \Rightarrow Pr(A(x)~accepts) < \frac{1}{2} \\ x \notin L \Rightarrow Pr(A(x)~accepts) > \frac{1}{2} \end{cases}
∀x∈Σ∗{x∈L⇒Pr(A(x) accepts)<21x∈/L⇒Pr(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
)
>
1
2
x
∉
L
⇒
P
r
(
B
(
x
)
a
c
c
e
p
t
s
)
<
1
2
\forall x \in \Sigma^* \begin{cases} x \in L \Rightarrow Pr(B(x)~accepts) > \frac{1}{2} \\ x \notin L \Rightarrow Pr(B(x)~accepts) < \frac{1}{2} \end{cases}
∀x∈Σ∗{x∈L⇒Pr(B(x) accepts)>21x∈/L⇒Pr(B(x) accepts)<21
即 L ∈ co- P P L \in \text{co-}PP L∈co-PP,故 co- P P ⊆ P P \text{co-}PP \subseteq PP co-PP⊆PP,反之同理, P P = co- P P PP=\text{co-}PP PP=co-PP 得证。
同理,当
L
∈
B
P
P
L \in BPP
L∈BPP 时,存在
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∈Σ∗{x∈L⇒Pr(A(x) accepts)≤41x∈/L⇒Pr(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∈Σ∗{x∈L⇒Pr(B(x) accepts)≥41x∈/L⇒Pr(B(x) accepts)≤43
即 L ∈ co- B P P L \in \text{co-}BPP L∈co-BPP,故 co- B P P ⊆ B P P \text{co-}BPP \subseteq BPP co-BPP⊆BPP,反之同理, B P P = co- B P P BPP=\text{co-}BPP BPP=co-BPP 得证。