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
    • which means  c,limnf(n)g(n)c\exists~c, \overline{lim}_{n \rightarrow \infty}\frac{f(n)}{g(n)}\le c, c is constant
  • f(n)=o(g(n)): <f(n)=o(g(n)):~ \lt
    • which means limnf(n)g(n)=0\overline{lim}_{n \rightarrow \infty}\frac{f(n)}{g(n)} = 0
  • f(n)=Ω(g(n)): f(n)=\Omega(g(n)):~ \ge
    • which means g(n)=O(f(n))g(n)=O(f(n))
  • f(n)=ω(g(n)): >f(n)=\omega(g(n)):~ \gt
    • which means g(n)=o(f(n))g(n)=o(f(n))
  • f(n)=Θ(g(n)): =f(n)=\Theta(g(n)):~ =
    • which means f(n)=O(g(n))f(n)=O(g(n)) and f(n)=Ω(g(n))f(n)=\Omega(g(n))

0x02 QuickSort

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

  • Find random yy of set SS; (O(1))
  • Partition S{y}S \setminus \{y\} into two sets S1S_1 and S2S_2; (n)
  • Recursively sort S1S_1 and S2S_2
  • Time complexity: O(nlogn)O(n log n) does not depend on input. It holds for every input.
    E(T(n)) =1nk=1n(E(T(n))  Xn=k)=1nk=1n(E(T(k1))+E(T(nk))+n1  Xn=k)=1nk=1n(E(T(k1))+E(T(nk))+n1)E(T(n)) =1nk=1n(E(T(k1))+E(T(nk))+(n1)) \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}

0x03 Comparison Probability

判斷序列中的兩個數在QuickSort中被比較過的概率

當第ii個數字和第jj個數字曾經被比較過,設 Xij=1X_{ij}=1,反之爲0。
E(Xij)=PijE(X_{ij})= P_{ij},從而有 T(n)=1i<jnXijT(n)= \sum_{1\le i<j\le n} X_{ij}
P12 =1, P1n=2n, Pij=2ji+1P_{12}~=1,~ P_{1n}=\frac{2}{n},~ P_{ij}=\frac{2}{j-i+1}
E(T(n)) =1i<jnPijE(T(n))~=\sum_{1\le i<j\le n} P_{ij}

1i<jn1ji+1=21in1j=2ni+11j2(n1)j=2n1j2(n1)lnn\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

其中可通過洛必達準則(忘記是不是這個名字了),計算出調和級數實際和 y=1xy=\frac{1}{x} 相同
12+13++1n1n1x=lnn\frac{1}{2} + \frac{1}{3} + \cdots + \frac{1}{n} \le \int_{1}^{n}\frac{1}{x}=\ln n
1+12+13++1n1n1x=lnnln11 + \frac{1}{2} + \frac{1}{3} + \cdots + \frac{1}{n} \ge \int_{1}^{n}\frac{1}{x} = \ln n - \ln 1

於是我們可以得到 E(T(n))=Θ(nlnn)E(T(n)) = \Theta(n \ln n)
不過這個計算出來除了作爲一道題而言,還有沒有其它的用處呢?

0x04 Min-Cut

Min-Cut problem: Given a graph 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.

fix min cut C. C=k fix~min~cut~C.~|C|=k
Pr(E1E2En1), Ei: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) =EkE12knk=12nE nk2Notes: Pr(E2  E1) 12n1, not Pr(E2)12n1Pr(Ei  E1, ,Ei1) 12ni+1Pr(E1E2En2) =Pr(E1)Pr(E2  E1)Pr(E3  E1,E2)(12n)(12n1)(123)=(n2n)(n3n1)2413=Θ(1n2) \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(Ei  E1, ,Ei1)=Ω(1n2)Pr(E_i~|~E_1,\cdots, E_{i-1})= \Omega(\frac{1}{n^2})
於是我們可以重複 n2n^2 次,從而使得這個隨機算法成功概率提升至:
1(11n2)n211e1-(1-\frac{1}{n^2})^{n^2} \sim 1-\frac{1}{e}

0x05 FastCut

我們把FastCut的過程等效的看作一棵二叉樹,其中每個節點都以一定的概率染成黑色或白色,
每一次生成子節點的過程,是將當前圖的頂點數變爲原來的 c (c=2)c~(c=\sqrt{2}) 倍,
父節點到該節點過程中,縮圖未影響最小切時,染爲黑色,反之染爲白色。
那麼顯然地,當且僅當存在一條從根到葉子節點的路徑上,所有的點都爲黑色時,說明當前算法成功的找到了最小切。
而對於一棵深度爲 hh 的二叉樹隨機二染色,尋找存在從根到葉的黑色路徑,成功概率爲:
ρh=1(1ρh12)2=ρh12(2ρh12)=ρh1ρh124\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}

首先,設 f(x)=xx24f(x) = x - \frac{x^2}{4},則有 f(x)=1x2f'(x)= 1 - \frac{x}{2},即在 [0,1] 中該函數單調遞增,
通過數學歸納法可證得 ρh1h+1\rho_{h} \ge \frac{1}{h+1}
ρ1=1(12)2=34>11+1ρh=f(ρh1)f(1(h1)+1)=1h14h21h+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}
於是有:
Pr(h)=1h+113+log2n=Ω(1logn) Pr(h) = \frac{1}{h+1} \ge \frac{1}{3+\log_{\sqrt{2}}n} = \Omega(\frac{1}{\log n})

0xFF Prove in detail

Prove the expected running time for 0x02

T(n)T(n) 表示快排 nn 個亂序數的執行時間,快排的每一步分爲三個部分,
當第 mm 次取的 pivotpivot 爲第 kmk_{m} 大,以第一次爲例,當第一次取的 pivotpivotk1=kk_1 = k 時:

  • 將其它數分別與 pivotpivot 比較大小: 共 n1n-1 次操作
  • 將比 pivotpivot 大的數都放到 pivotpivot 左邊: 共 k1k-1 次操作
  • 將比 pivotpivot 小的數都放到 pivotpivot 右邊: 共 nkn-k 次操作

則有:
E(T(n))=1nk=1n(E(T(k1))+E(T(nk))+(n1)  pivot=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)
由於選取 pivot=kpivot=kT(k)T(k) 間具有獨立性,令 f(n):=E(T(n))f(n) := E(T(n)),則有:
f(n)=1nk1=1n(f(k11)+f(nk1)+(n1))=1nk1=1n(1k1k2=1k11(f(k21)+f(k1k2)+(k11)))+1nk1=1n(1nk1k3=k1n(f(k3k1)+f(nk3)+(nk11)))+1nk1=1n(n1)=1nk1=1n(1k1k2=1k11(f(k21)+f(k1k2))+1nk1k3=k1n(f(k3k1)+f(nk3)))+1nk1=1n(1k1k2=1k11(k11)+1nk1k3=k1n(nk11)+(n1)) \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}

其中:
1nk1=1n(1k1k2=1k11(k11)+1nk1k3=k1n(nk11)+(n1))<1nk1=1n(1k1k2=1k11k1+1nk1k3=k1n(nk1)+n)=1nk1=1n(k1+nk1+n)=1nk1=1n(2n)=2n \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}

則有:
11 輪取 pivotpivot 時 (m{1}m \in \{1\}):
f(n)<1nk1=1n(f(k11)+f(nk1)+n)f(n) < \frac{1}{n} \sum_{k_1=1}^{n} \left( f(k_1-1) + f(n-k_1) + n \right)

22 輪取 pivotpivot 時 (m{2,3}m \in \{2,3\}):
f(n)<1nk1=1n(1k1k2=1k11(f(k21)+f(k1k2))+1nk1k3=k1n(f(k3k1)+f(nk3)))+2nf(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

epep 輪取 pivotpivot 時 (m{m2ep1m<2ep}m \in \{m | 2^{ep-1} \le m < 2^{ep}\}):
f(n)<1nk1=1n(1k1k2=1k11(1k2k4=1k21(1k2ep1k2ep=12ep11(f(k2ep11)+f(k2ep2k2ep1))+ )))+nep 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(1)=1 $,在有限輪(不超過 nn)之後,所有的 f()=f(1)=1f(\cdot)=f(1)=1
對於每一層的 ij1\sum_{i}^{j-1} 求和,其外側的 1ji\frac{1}{j-i} 剛好與之抵消,此時:

f(n) <1nk1=1n(1k1k2=1k11(1k2k4=1k21(1k2p11k2p1=12p111f(1)+ )))+nmax(pi)=n1+nmax(pi) \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}

其中 pip_i 指的是 對於第 ii 大的數,取到其作爲 pivot 是在第 pip_i 輪時,
並且當且僅當每次選取pivot都恰好取到當前數列的中位數時,構成層數最少的滿二叉樹,從而有:
log2npin\log_2 n \le p_i \le n

所以:
f(n)<n+nlog2nf(n) < n + n\log_2 n
E(T(n))=O(n+nlog2n)=O(nlog2n)E(T(n)) = O(n + n\log_2 n) = O(n\log_2 n)

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.

設在我們的最小切算法的每一步中,不是隨機地選擇一條邊做收縮,而是隨機地選擇兩個頂點並將他們結合成一個頂點。說明存在輸入,使得這個改變後的算法找到最小切的概率是指數級小的。

kk' 是最小切的規模:最小切的效果是將所有頂點分爲兩側,即如果被最小切分在不同側的兩個頂點被結合,則本次找不到最小切,反之當最終結合成左右各剩下一個點時,這兩個點之間即爲最小切。
於是假設最小切將所有頂點分成了 kk 個點和 nkn-k 個點的兩側,由於兩側的等效性,不妨設 k>=nkk >= n-k,稱較多點 ( kk 個點所在的一側) 稱作 AA 側,另一側爲 BB 側,則有:
1nkn2k<n,k<=k 1 \le n-k \le \frac{n}{2} \le k < n, \quad k <= k'
定義 SiS_i 表示在第 ii 次操作中沒有選中了影響最小切的點對,則第一次"縮點"操作中,選中影響最小切的點對的概率爲:
p(¬S1)=k(nk)Cn2 p(\lnot S_1) = \frac{k \cdot (n-k)}{C_{n}^{2}}

則有:
p(S1)=1k(nk)Cn2=Cn2k(nk)Cn2=Ck2+Cnk2Cn2<Cn/22+Cn/22Cn2=2n24n2<12 \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}

第二次"縮點"操作中,選中影響最小切的點對的概率,會受前一次結合的頂點處於 AA 側或 BB 側的影響:
p(S2S1)=p(S2S1,A)p(S1,A)+p(S2S1,¬A)p(S1,¬A)=(k1)(nk)Cn12Ck2Cn2+k(nk1)Cn12Cnk2Cn2=k(nk)(Ck2+Cnk2)Cnk1Ck2Ck1Cnk2Cn12Cn2=k(nk)(Ck2+Cnk2)k(nk)12((k1)+(nk1))Cn12Cn2=k(nk)(Ck2+Cnk2n/21)Cn12Cn2=k(nk)(Cn2k(nk)n/21)Cn12Cn2 \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}

又因爲:
1nkn2k<n 1 \le n-k \le \frac{n}{2} \le k < n
Ci2=Ci12i2i=Cij2k=1jik1ik+1=Cij2ij1i 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}

上式可得:
p(S2S1)<n2n2(Cn/22n2n2n2)Cn2n2nCn2=n24(n22n24n2)Cn2n2nCn2=n416n38n2nn44=(n2)n34(n2)n3=14 \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}

mm 次"縮點"操作中,未選中影響最小切的點對的概率:
p(Smi<mSi)<j=1m((a=kjkCa2)(b=nkjnkCb2)))(Cn2)mc=1mCnc2Cn2<j=1m((Cn/22)ja=1jCn/2a2Cn/22+(Cn/22)mjb=1mjCn/2b2Cn/22)n2m2mc=1mCnc2Cn2=O(nm+1)2mO(nm+1)=12m \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}

特別地,第 n2n-2 次縮點後,最終剩下兩個頂點,此時剩下的兩點之間即爲所求,若每次縮點都沒有破壞最小切,則此時的兩個頂點間即爲最小切,概率爲 O(2(n2))O(2^{-(n-2)})

Expansion problem for 0x05

Consider running the contraction algorithm until the number of vertices is reduced to tt 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 Ω(n8/3)\Omega (n^{8/3})

考慮執行收縮算法直到頂點數目被降低到 tt,然後用立方時間的算法在被收縮後的圖中尋找最小切。證明執行上述過程足夠多次以保證至少 1/2 的成功概率,算法需要運行時間 Ω(n8/3)\Omega (n^{8/3})

對於一次成功的收縮,頂點數被降低到 tt 時,每條選中的邊都未選中涉及最小切的邊,此時的成功概率爲:
p(n)=i=tn(12i)=(t1)(t2)n(n1) p(n) = \prod_{i=t}^{n}(1-\frac{2}{i}) = \frac{(t-1)(t-2)}{n \cdot (n-1)}
重複運行 kk 次的成功概率爲:
P(n,k)=1(1p(n))k=1(1t2n2)k P(n, k) = 1 - (1 - p(n))^k = 1 - ( 1 - \frac{t^2}{n^2})^k
k=ln2n2t2k = \ln 2 \cdot \frac{n^2}{t^2},此時:
P(n,ln2n2t2)=1(1t2n2)ln2n2t2=1((1t2n2)n2t2)ln2)1(1e)ln2=12 \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}
單次運行的時間複雜度爲:
T(n)=C1(n+t+1)(nt)2+C2t3=C12(n2+nt2t)+C2t3=C12(n2+n)C1t22C1t2+C2t3kT(n)=ln2t2n2(C12(n2+n)C1t22C1t2+C2t3) n2+n >n2>n23kT(n)>ln2t2n2(C12n23C1t22C1t2+C2t3)=Ω(n2n23)=Ω(n83) \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}

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^* is any collection of strings over Σ\Sigma.
Usually Σ={0,1}\Sigma = \{0,1\} , and Σ\Sigma^* is the set of all possible strings over this alphabet.

P

LP polynomial time algorithm A s.t.L \in P \Leftrightarrow \exists ~ \text{polynomial time algorithm } A ~s.t.
xΣ,{xLA(x) acceptsxLA(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}

NP

LNP polynomial time algorithm A s.t.L \in NP \Leftrightarrow \exists ~ \text{polynomial time algorithm } A ~s.t.
xΣ,{xLy,y=poly(x),A(x,y) acceptsxLy,y=poly(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}
co-NP={L  LNP}\text{co-}NP=\{\overline L ~|~ L \in 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

LRP 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.
xΣ,{xLPr(A(x) accepts)1/2xLPr(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}

Lco-RP 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.
xΣ,{xLPr(A(x) accepts)=1xLPr(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}

What’s more, we have RPNPRP \subseteq NP and co-RPco-NP\text{co-}RP \subseteq \text{co-}NP.

BPP and PP

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

LBPP 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.
xΣ,{xLPr(A(x) accepts)3/4xLPr(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}

LPP 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.
xΣ,{xLPr(A(x) accepts)>1/2xLPr(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}

What’s more, we have RPBPPPPRP \subseteq BPP \subseteq PP and NPPPNP \subseteq 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.

ZPP=RPco-RPZPP = RP \cap \text{co-}RP

0xFF Prove in detail

RP \subseteq NP

NP:{xLy,y=poly(x),A(x,y) acceptsxLy,y=poly(x),A(x,y) rejectsNP: \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}

RP:{xLPr(B(x) accepts)1/2xLPr(B(x) accepts)=0RP: \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}

LRPB\forall L \in RP \Rightarrow B
LNPL\in NP 中構造 AAyy 爲一個隨機串,長度爲 rrr=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

LPPL \in PP 時,存在 A(x)A(x) 符合如下定義:
xΣ{xLPr(A(x) accepts)<12xLPr(A(x) accepts)>12 \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}

則可以構造 B(x),令:
B(x)={accepts, when A(x) rejectsrejects, when A(x) accepts B(x)= \begin{cases} accepts,~ \text{when } A(x) ~rejects \\ rejects,~ \text{when } A(x) ~accepts \end{cases}

此時的 B(x)B(x) 符合以下條件:
xΣ{xLPr(B(x) accepts)>12xLPr(B(x) accepts)<12 \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}

Lco-PPL \in \text{co-}PP,故 co-PPPP\text{co-}PP \subseteq PP,反之同理,PP=co-PPPP=\text{co-}PP 得證。

同理,當 LBPPL \in BPP 時,存在 A(x)A(x) 符合如下定義:
xΣ{xLPr(A(x) accepts)14xLPr(A(x) accepts)34 \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}

則可以構造 B(x),令:
B(x)={accepts, when A(x) rejectsrejects, when A(x) accepts B(x)= \begin{cases} accepts,~ \text{when } A(x) ~rejects \\ rejects,~ \text{when } A(x) ~accepts \end{cases}

此時的 B(x)B(x) 符合以下條件:
xΣ{xLPr(B(x) accepts)14xLPr(B(x) accepts)34 \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}

Lco-BPPL \in \text{co-}BPP,故 co-BPPBPP\text{co-}BPP \subseteq BPP,反之同理,BPP=co-BPPBPP=\text{co-}BPP 得證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章