三、近似算法
3.1 NP-完全性理論
圖靈機:
- 確定性圖靈機 DTM:執行的動作唯一
- 非確定性圖靈機 NTM:執行的動作有多個可選
P 類問題:\(P={L:L能在多項式時間內被DTM接受}\)
用確定性算法在多項式時間內可解
多項式時間內可解的問題\(=\)P
NP 類問題:\(P={L:L能在多項式時間內被NTM接受}\)
用非確定性算法在多項式時間內可解
多項式時間內可驗證的問\(=\)NP
多一規約:\(L_1和L_2是兩個判定問題,實例I_2=f(I_1)\)
多項式時間多一規約:\(f\)是多項式時間可計算的
NPC 問題:對於判定問題 q,滿足\(1)q\in NP;2)NP \le_m^p q;\)
NP-hard 問題:對於判定問題 q,滿足\(2)NP \le_m^p q;\)
\(NPC \sqsubseteq NP-hard\)
解題思路:
- \(一個問題不可判定 \Rightarrow 該問題\notin NP \Rightarrow 該問題 \notin NPC\)
- 證明\(q \in NPH\),找到\(q' \in NPC/NPH\),再將\(q'\)多項式歸約到\(q\)。
- 如果繼續證明\(q \in NP\),則\(q \in NPC\)
- NPC 問題:SAT 可滿足性問題、最大獨立集問題、背包問題、覆蓋問題、路徑問題
- NPH 問題:停機問題
規約策略:
-
\(X\le_pY,Y\le_pX \Rightarrow X \equiv_pY\),\(最大獨立集問題 \equiv_p 最小頂點覆蓋問題\)
-
特殊到一般,\(最小頂點覆蓋問題 \le_p 最小集合覆蓋問題\)
3.2 相關問題總結
- 獨立集問題(Independent-Set):圖的頂點集合的子集中,所有頂點兩兩沒有邊。
- 團問題:圖的頂點集合的子集中,所有頂點兩兩均有邊。
- 頂點覆蓋問題(Vertex-Cover):圖的頂點集合的子集中,邊集中至少有一個頂點在該子集中。
- 集合覆蓋問題(Set-Cover):非空集合的若干非空子集合的並集等於原有集合。
- 3-SAT 問題:3-CNF(合取范式)組成的布爾公式存在真值解。
- 哈密爾頓圈問題:圖中通過每一個頂點恰好一次的回路。
上述問題均是 NPC 的。
單源最短路徑和歐拉環是 P 問題。
3.3 近似算法
三種放寬要求的可能性:
- 超多項式時間啟發:存在一個偽多項式時間的算法,如背包問題。(缺點:只對弱 NPC 問題有效)
- 概率分析:不再要求問題的解滿足所有輸入實例。(缺點:選取一個特殊的輸入分布不容易)
- 近似算法:不再要求總是找到最優解。設計一個算法找出所有情況下的次優解來解 NP-hard 問題、
近似解分類:
- 容易近似:背包問題、調度問題、裝箱問題
- 中等難度:頂點覆蓋問題、歐式 TSP 問題、Steiner Trees
- 難於近似:着色問題、TSP、Clique(團)
性能保證:在最優解和近似解之間建立某種聯系。
絕對性能度量:絕對近似算法是優化問題的多項式時間近似算法 A,\(\exist k > 0\),使得
含義:近似解和最優解相差某一小的常數。
對於大多數的 NPH 問題,不存在絕對近似算法,除非\(P=NP\)。
兩種絕對近似算法:
圖是否可以 3 着色:
- G 為二部圖,即可 2 着色
- G 一定可以 4 着色,四色定理
- \(|A(G)-OPT(G)| \le 2\)
圖邊着色最小顏色數:
- 最大度 / 最大度+1
- \(|A(G)-OPT(G)|\le1\)
前提:已知最優解 或 值所在的小范圍
對於大多數 NPH 問題,存在絕對近似算法當且僅當存在多項式精確算法。
反證不存在絕對近似算法:
- 背包問題,通過 Scaling 放大利潤為 k+1 倍,再算解的值
- 最大團問題,構造\(G^{k+1}\)
相對性能度量:算法 A 在一個輸入實例上的性能比為
含義:近似解和最優解比值為某一小的常數。
- 絕對性能比:\(R_A = inf\{ r|R_A(I)\le r,\forall I \in D \} =性能比上界集合中的最小值\)
- 漸近性能比:\(R_A^\infty = inf \{ r | R_A(I)\le r,\forall I \in D 且OPT(I)\ge N \}=最優解要足夠大\)
- 最佳可達性能比:\(R_{MIN}(\Pi)=inf \{ r\ge1 | \exist多項式時間算法A,R_A^\infty\le r \}\)
- \(\begin{cases}1,最容易近似 \\有界,\bigtriangleup TSP問題 \\無界,難於近似 \end{cases}\)
\(1\le R_A^\infty \le R_A < \infty\)
對於有 Scaling 性質的問題,\(R_A^\infty = R_A\)
很多問題找不到絕對近似算法。
有些問題找不到有界性能比近似算法。
3.3.1 多機調度問題
List 調度算法:n 個作業依次分配給當前負載最小的機器。
\(\frac{A(I)}{OPT(I)} \le 2-\frac{1}{m}\)
證明上界:
\[\begin{align} &A(I) = L,作業運行時間最長\\ &OPT(I) \ge \frac{\sum P_i}{m}\ge \frac{m(L-P_{last})+P_{last}}{m} \\ &\Rightarrow OPT(I) \ge A(I) + \frac{1-m}{m}P_{last} \\ &\because OPT(I) \ge P_{last} \\ &\therefore 1 \ge \frac{A(I)}{OPT(I)} + (\frac{1}{m}-1)\frac{P_{last}}{OPT(I)}\\ &\therefore \frac{A(I)}{OPT(I)} \le (2-\frac{1}{m})\frac{P_{last}}{OPT(I) } \le 2-\frac{1}{m} \end{align} \]證明緊確界:有\(n=m(m-1)+1\)個作業
\[\begin{align} &P_1=\cdots=P_{n-1}=1,P_n=m \\ &OPT(I)=前n-1個機器每個運行m個作業+第n個機器運行P_n=m \\ &A(I)=前n個機器每個運行m-1個作業+第1個機器運行P_n=2m-1 \\ &R_A=2-\frac{1}{m} \end{align} \]
LPT 調度算法:將作業遞序排列,然后 List 策略調度。
\(\frac{A(I)}{OPT(I)} \le \frac{4}{3} -\frac{1}{3m}\)
3.3.2 裝箱問題 BP
n 件物品,每件物品在單位大小之內,按某種策略裝入單位大小的箱子中,令箱子數最小。
首次適應算法 FF
\(R_{FF}(I)\le 2\),\(R_{FF}^\infty=1.7\)
證明:
最多只有一個箱子是大於半空的。
物品的總大小至少為總箱子的一半,\([\sum S_i] \ge \frac{1}{2} FF(I)\)。
最優解至少為物品的總大小,\(OPT(I) \ge [\sum S_i]\)。
\(R_{FF}(I) = 2\)
遞減首次適應 FFD
\(R_{FFD} \ge 1.5\),\(R_{FFD}^\infty = \frac{11}{9}\)
3.3.3 旅行商問題 TSP
求最短哈密頓回路 HC,訪問所有頂點一次的回路。
這里研究\(\bigtriangleup TSP\),即輸入滿足三角不等式
近鄰法 NN:從當前頂點訪問最近尚未訪問的頂點,一次構造哈密爾頓圈 HC。\(R_{NN}^\infty=\theta(lg\ n)\)
MST 啟發:先找一個歐拉環 ET,然后再”Short-Cut“獲得哈密爾頓圈。
\(R_{NN}^\infty=2\)
有歐拉環,當且僅當圖連通且頂點度數均為偶數。
MST:
- 構造最小生成樹
- 每條邊復制一個
- 找到歐拉圈
- 短路歐拉路的方法構造 HC,即遇到重復頂點就跳過。
CH 啟發:不需要將所有邊都復制,只在每對奇度頂點之間連線。
\(R_{CH}^\infty = 1.5\)
CH:
- 構造最小生成樹
- 每對奇度頂點之間連線
- 找到歐拉圈
- 短路歐拉路的方法構造 HC,即遇到重復頂點就跳過。