【算法學習筆記十四】近似算法

有許多困難的組合優化問題,使用回溯或隨機化不能有效地解決。

組合優化問題:在有限的可能性中找出最優解。一個近似算法將給出一個合理的解,逼近一個最優解。(大多數)近似算法的標記特徵是它們是快速的(多項式時間算法)。然而,人們不應該樂觀地尋找一個有效的近似算法,因爲有一些困難的問題,即使存在一個合理的近似算法是不可能的,除非NP=P。

組合優化問題

輸入:COP的實例I。

可行集:FEAS(1) =實例I的所有可行(或有效)解的集合,通常用一組約束表示。

目標成本函數:實例I包括對目標成本函數的描述。Cost[l]映射每個解決方案S(可行或不可行)一個實數或±\infty

目標:優化(即最小化或最大化)目標成本函數。

優化設置:OPT(I) ={Sol ∈ FEAS(I) | Cost[I] (Sol) ≤ Cost[i] (Sol'), VSol' ∈FEAS(1)},成本最小值的集合≤實例I可行的解決方案;

組合:指問題結構意味着只有有限數量的解決方案需要被檢查以找到最優。

輸出:一個解決方案Sol ∈ OPT(I),或報告FEAS(I) = \varnothing

COP舉例:

“Easy”(多項式時間可解):最短(簡單)路徑,最小生成樹,圖匹配;

“NP-Hard”(沒有已知的多項式時間解決方案):最長(簡單)路徑,旅行推銷員,頂點覆蓋,集合覆蓋,K-Cluster,0/1 揹包。

 

 分類

差界算法:|C(S_A)-C(S_{OPT})|\leq K

我們從近似算法中所能期望的最大結果是,最優解的值與通過近似算法得到的解的值之間的差總是不變的。對於所有問題的實例,可以得到一個近似算法A這樣|C(S_A)-C(S_{OPT})|\leq K, K是常數。但是有差分界近似算法的NP-hard優化問題很少。

平面着色問題可以用近似算法求解;

揹包問題不存在差界近似算法,除非NP=P;

裝箱問題:給定一個集合,u_1,...,u_n的大小是s_1,...,s_n,其中每個s在0和1之間,我們需要將這些物品打包到單位容量的最小箱數。四種啓發式方法:FF(最先適配,放第j個物品時,放入第一個可以放的箱子,且\rho _{FF}<2), BF(最優適配,放第j個物品時,使放入後箱子空餘儘量少), FFD(先做從大到小的排序,在進行FF), BFD。

定理:對於裝箱問題的所有實例I,FF(I)\leq \frac{17}{10}OPT(I)+2

定理:對於裝箱問題的所有實例I,FFD(I)\leq \frac{11}{9}OPT(I)+4

加權頂點覆蓋問題

輸入:頂點權值爲w(V)的無向圖G(V,E),w(v)>0是頂點v\inV的權值

輸出:  頂點覆蓋C:  C\subseteqV覆蓋所有的邊

目標:最小化頂點覆蓋C的權重

頂點覆蓋問題表示爲整數線性規劃:\forall v\in V:x(v)=\left\{\begin{matrix} 1 & if\ v\in C\\ 0 & if\ v\notin C \end{matrix}\right.minimize\ \sum_{v\in V}w(v)x(v),約束條件爲(P1)1)x(u)+x(v)\geq 1\ \forall (u,v)\in E \ 2)x(v)\in {0,1}\ \forall v\in V

求解:鬆弛——將整數線性規劃變爲線性規劃問題,即(P2) 2)x(v)\geq 0\in {0,1}\ \forall v\in V

           對偶——(P3)maximaze\ \sum_{(u,v)\in E}p(u,v),\sum_{u:(v,u)\in E}\leq w(v) \ \forall v\in V ,p(u,v)\geq 0 \ \forall (u,v)\in E

 當\sum_{u:(v,u)\in E}= w(v)時,點v爲tight;當u或者v是tight時,邊(u,v)是final。

ALGORITHM Approximate-Vertex-Cover (G(V,E), w(V))
    for each edge (u,v)∈E  do   p(u,v) ← 0
    for each edge (u,v)∈E  do   finalize (u,v), i.e.,increase p(u,v) until u or v becomes tight,(取u,v中最小的,未取的減去最小的,更新price,0值放入到C中)
    C  ←  { v ∈ V |  v is tight }
    return C
end

 這是一個2-近似算法,有以下的特點:1)正確性,得到的C是可行解;2)多項式時間算法;3)W(C)\leq 2W(C_{OPT})(\rho =2\ is \ tight)

 

加權集合覆蓋問題X=\{x_1,x_2,...,x_n\},F包含m個X的子集F=\{S_1,S_2,...S_m\},w(S)>0,挑選C,C\subseteq F使得C可以覆蓋X,並使得權值儘可能地小:W(C)=\sum_{S\in C}w(s)

ALGORITHM   Greedy-Set-Cover (X, F, w(F))
1.     U ← X	(* uncovered elements *)
2.     C ← Ø	(* set cover *)
 while  U ≠ Ø  do 
      select S∈F that minimizes  price p = w(S) / |S∩U|
      U  ←  U - S
      C  ←  C ∪ {S} 
  return C
end

 

這是一個H(n)-近似算法(與n有關的)。

Harmonic Number:H(d)=\sum_{i=1}^{d}\frac{1}{i}\leq lnd+1

Maximumdegree:d_{max}=max\{|S|:S\in F\}\leq |X|=nH(d_{max})\leq H(n)

引理:\forall S\in F,\sum_{x\in S}p(x)\leq w(S)H(|S|)

定理:Greedy-Set-Cover算法的特點:正確性:輸出可行解C;多項式運行時間;近似界:W(C)\leq H(d_{max})W(C_{OPT})\leq H(n)W(C_{OPT})

旅行商問題(TSP)

設nxn的矩陣D=(d_{ij}),表示城市i到城市j的距離。輸出路徑T,T從起點出發,路過每個城市且僅路過一次,最後回到起點,找出一條最短的路徑T。

最小生成樹,哈密爾頓迴路(HCP),圖的匹配,歐拉圖都是NP-hard問題。

哈密爾頓迴路:存在圈經過每一座城市且僅經過一次。

 定理:設\rho > 1是一個常數,一般的TSP問題的\rho -近似算法是NP-hard問題。(即不存在多項式時間\rho -近似算法)

metric-TSP:是一般TSP問題的特殊情況,也是NP-hard問題,存在2-近似算法,1.5-近似算法。歐拉圖:對圖G進行遍歷,經過每條邊且僅經過一次。

metric-TSP的2-近似算法C(T)\leq 2\times C(T_{OPT}):步驟,首先構造最小生成樹,雙邊的MST的歐拉圖了,跳過重複的點。

根據三角不等式,跳過重複點的操作不會增加哈密爾頓迴路的長度 ,即哈密爾頓迴路的長度不會超過歐拉圖的長度。

LB=C(MST)\leq C(T_{OPT})\leq C(T)=UB\leq 2\times C(MST)=2LB

2是“緊的”,是可達的

 metric-TSP的1.5-近似算法—圖的匹配,匹配集M是G的一個子集,且滿足任意兩條邊都沒有公共的頂點。完美匹配,每個點都被匹配,即位於M中(偶數個點才存在完美匹配)。

 步驟:構造MST

           找出其中度數爲奇數的頂點,對找出的頂點找到最小權值的完美匹配M,E=MST+M,E是一個歐拉圖

             跳過重複點的歐拉圖得到TSP迴路T。

 C(MST)\leq C(T_{OPT}),C(M)\leq 0.5C(T_{OPT}),C(E)=C(MST)+C(M)\leq 1.5C(T_{OPT}),C(T)\leq C(E)\leq 1.5C(T_{OPT})

1.5是可達的。

 K-聚類問題(The K-Cluster Problem)

設點集X,d(x_i,x_j)x_i,x_j之間的距離,以及正整數K,把X分成K類C_1,...,C_K,並使得K類中最長的直徑最小化,即\min_{j}\max_{a,b\in C_j}d(a,b)

n=17,K=4

 貪心算法;是2-近似多項式算法;

                 (1)貪婪地逐步的從X中取K個點作爲集羣的“中心”,並選擇離之前選擇的中心最遠的集羣中心。

                 (2)將剩餘的X點分配給離中心最近的集羣。

定義:x*\in X是離\{\mu _1,...,\mu _k\}最遠的點。如果我們想要k+ 1箇中心,x*=\mu _{k+1},令r*=r(k+1)=min(d(x*,\mu _j) ,j=1.k}。

引理:算法具有以下性質:(a)每個點距離其簇中心最多r*的距離。(b) K+1個點\{\mu _1,...,\mu _k,\mu _{K+1}=x^*\}之間的距離至少爲r*。

0/1揹包問題(可切割Fractional)

最大化:\sum_{i=1}^{n}v_ix_i

約束條件:1)\sum_{i=1}^{n}w_ix_i\leq W,2)0\leq x_i\leq 1,i=1,...n

FKP的最優解可以在O(nlogn)時間內得到。

證明:

       貪心策略:按vi/wi的遞減順序考慮;

       將物品按順序放在揹包裏,直到袋子裝滿;

       只有放在揹包中的最後一件物品可能被分割;

       第一步的排序時間是O(nlogn)。

01KP approximation Greedy Algorithm
Input: 2n+1 positive integers corresponding to item weights {w1...wn}, item values {v1...vn} and the knapsack capacity W
Output: A subset Z of the items whose total size is at most W
    1. Renumber the items so that v1/w1...vn/wn
    2. j←0, K←0, V←0, Z←{}
    3. while j<n and K<W
    4.     j←j+1
    5.     if wj←W-K then
    6.         Z←Z←{uj}
    7.         K←K+wj
    8.         V←V+vj
    9.     end if
  10. end while
近似度R是無界的
舉例:U={u1,u2},w1=1,v1=2;w2=v2=W>2
近似解是u1,最優解是u2,R=W/2,W可以任意取

  11. Let Z’={us}, where us is an item of maximizing value
  12. if Vvs then return Z
  13. else return Z’
加上後面的代碼,此時近似度R=2

\varepsilon =1/k,對於某個正整數k,算法A_\varepsilon,由兩步組成。首先,選擇最多有k個元素的子集,並在揹包中取出它們。然後對剩餘的項運行knapsack貪婪算法。這兩個步驟重複\sum_{j=0}^{k}\binom{n}{j},j是每個子集的大小,0≤j≤k。

定理15.4(PTAS):令\varepsilon =1/k對於k≥1,算法A_\varepsilon的運行時間爲O(kn^{k+1}),性能比爲1+\varepsilon

 

 

\rho -近似算法:多項式運行時間;1/\rho \leq C(S_A) /C(S_{OPT})\leq \rho

PTAS(多項式時間近似策略):額外輸入參數e,作爲相對誤差的界;找到的相對誤差最多爲e;對於固定的e而言,關於輸入規模的多項式運行時間

FPTAS:是一個PTAS,並關於輸入規模和1/e的多項式時間。

 

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