貝爾利網(wǎng)站網(wǎng)絡(luò)推廣內(nèi)容
六、算法復(fù)雜性初步
重要的復(fù)雜性類
-
P P P 的定義
-
多項式時間內(nèi)可解的問題
-
若 L ∈ P L∈P L∈P,則存在確定性多項式時間的圖靈機 M M M,使得
M ( x ) = 1 ? x ∈ L M(x)=1?x∈L M(x)=1?x∈L
-
-
N P NP NP 的定義
-
多項式時間內(nèi)可驗證驗證解的正確性
-
(表示非確定性多項式時間而不是非多項式時間)
-
若 L ∈ N P L∈NP L∈NP,則存在確定性多項式時間的圖靈機 M M M,使得
x ∈ L ? ? w ∈ { 0 , 1 } p l o y ( n ) s . t . M ( x , w ) = 1 x∈L?\exist w∈\{0,1\}^{ploy(n)}\ \ s.t.\ M(x,w)=1 x∈L??w∈{0,1}ploy(n)??s.t.?M(x,w)=1
注:如果 x ∈ L x∈L x∈L,那么存在一個證書 w w w,使 M M M能夠在多項式時間內(nèi)驗證 x ∈ M x∈M x∈M
-
-
N P ? h a r d NP-hard NP?hard
- 若一個問題屬于 N P ? h a r d NP-hard NP?hard,那么它可以在多項式時間內(nèi)規(guī)約成 N P NP NP 問題
-
N P ? c o m p l e t e NP-complete NP?complete
- 是 N P NP NP和 N P ? h a r d NP-hard NP?hard的交集,即 N P C = N P ∩ N P H NPC=NP∩NPH NPC=NP∩NPH
- N P C NPC NPC是 N P NP NP中最難的問題,如果找到多項式時間解決 N P C NPC NPC,那么 P = N P P=NP P=NP
SAT 問題
定義:給定一個布爾邏輯表達式,判斷是否存在一個布爾變量賦值,使得整個表達式的值為真。
合取范式(CNF):一種布爾邏輯表達式的標準化形式,若干個句子合取(AND),每個句子中若干個文字析取(OR)
例如,以下一個CNF公式:
( ? a 1 ∨ a 2 ) ∧ ( ? a 1 ∨ a 3 ∨ a 4 ) ∧ ( a 1 ∨ ? a 2 ∨ a 3 ∨ ? a 4 ) (\neg a_1 \lor a_2) \land (\neg a_1 \lor a_3 \lor a_4) \land (a_1 \lor \neg a_2 \lor a_3 \lor \neg a_4) (?a1?∨a2?)∧(?a1?∨a3?∨a4?)∧(a1?∨?a2?∨a3?∨?a4?)
注:存在一種賦值,使其中一個句子為真,整個CNF即為真。
2-SAT問題:每個子句恰好包含2個文字。 P P P 類問題。
3-SAT問題:每個子句恰好包含3個文字。 N P ? c o m p l e t e NP-complete NP?complete 問題。
- 例如: ( l 1 ∨ l 2 ∨ l 3 ) ∧ ( l 4 ∨ l 5 ∨ l 6 ) ∧ ? (l_1 \lor l_2 \lor l_3) \land (l_4 \lor l_5 \lor l_6) \land \cdots (l1?∨l2?∨l3?)∧(l4?∨l5?∨l6?)∧?
當n>2,n-SAT問題就是NP-hard的。任何n-SAT都可以通過引入新變量的方法轉(zhuǎn)化為3-SAT問題。
隨機化算法
ZPP類型
- 保證一定能找到正確答案
- 需要多次運行,可以在期望的多項式時間內(nèi)找到結(jié)果
- 即:保證正確性,運行時間隨機性
- 如:隨機化快速排序、隨機化選擇算法
BPP類型
- 不保證得到正確答案,結(jié)果可能出錯
- 時間是確定的多項式時間
- 即:時間復(fù)雜度好,結(jié)果不好
- 如:矩陣恒等式測試
6.1 證明: P ? N P P?NP P?NP
證明:
- 對于 P P P問題的圖靈機 M M M,構(gòu)造另一個圖靈機 M ′ M' M′:輸入是 w w w和 x x x,對于相同的 x x x有相同的輸出, w w w對輸出無影響
- 當 x ∈ L x∈L x∈L時, M ( x ) = 1 M(x)=1 M(x)=1,存在 w ′ ∈ 0 , 1 p l o y ( n ) w'∈{0,1}^{ploy(n)} w′∈0,1ploy(n), M ′ ( x , w ′ ) = 1 M'(x,w')=1 M′(x,w′)=1
- 當 x ? L x ?L x∈/L時, M ( x ) = 0 M(x)=0 M(x)=0,對于任意的 w w w, M ′ ( x , w ) = 0 M'(x,w)=0 M′(x,w)=0
- 顯然 M ′ M' M′是確定性多項式圖靈機,結(jié)合 N P NP NP問題定義,存在 w ′ ∈ 0 , 1 p l o y ( n ) w'∈{0,1}^{ploy(n)} w′∈0,1ploy(n), M ′ ( x , w ′ ) = 1 M'(x,w')=1 M′(x,w′)=1,驗證解是否正確。所以該 P P P問題也是一個 N P NP NP問題,所以 P ? N P P?NP P?NP。
6.2 證明: 如果存在 N P NP NP 難的問題 Π ∈ P Π ∈ P Π∈P,則 P = N P P = NP P=NP
證明:
- 根據(jù) Π ∈ P Π ∈ P Π∈P,得 Π Π Π在多項式時間可解決
- 根據(jù) N P ? h a r d NP-hard NP?hard 定義,所有 N P NP NP問題 F F F可在多項式時間內(nèi)規(guī)約到 Π Π Π,即 F ∈ N P F∈NP F∈NP,有 F ≤ p Π F≤_pΠ F≤p?Π
- 所以 F F F在多項式時間轉(zhuǎn)化為 Π Π Π,再多項式求解 Π Π Π,整個過程是多項式時間完成的,所以 N P ? P NP?P NP?P
- 又已知 P ? N P P?NP P?NP,所以證得 P = N P P=NP P=NP。
6.3 證明:如果 N P = P NP=P NP=P,則單向陷門不存在。
- 假設(shè)算法
Invert
用來尋找函數(shù) f f f的逆映射:利用一系列語言 L i Li Li,表示是否存在 w w w使得 y = f ( z ∣ ∣ w ) y=f(z||w) y=f(z∣∣w) - 根據(jù)文本內(nèi)容, L i Li Li屬于 N P NP NP,同依據(jù)條件,也屬于 P P P
- 如果 P = N P P=NP P=NP,那么該算法能在多項式內(nèi)求解,即找到了函數(shù) f f f的逆映射,也就是找到 x x x使得 f ( x ) = y f(x)=y f(x)=y
- 綜上,若 N = N P N=NP N=NP,多項式時間可破壞單項函數(shù)的不可逆的性質(zhì),則單向陷門不存在