Approximation method(近似算法)
定義
近似算法是一種用來處理NP-完全優(yōu)化問題的一種方法。
特點
- NP-難問題
- 在大多數(shù)情況下是多項式算法
- 近似比
近似比
ρ(n)≥max(CC?,C?C)\rho(n) \ge {max({C \over{C^*}},{C^* \over{C}})}ρ(n)≥max(C?C?,CC??)
第一項為求極小值時,第二項為求極大值時。
近似比越大,算法性能越差。
近似策略/近似結(jié)構(gòu)
優(yōu)化問題的近似策略是一種近似算法,它的輸入不僅是問題的一個實例,而且是一個值?\epsilon?,因此對于任何確定的?\epsilon?,該策略是一個(1+?)(1+\epsilon)(1+?)-近似算法。
PTAS
多項式時間近似策略
對任意確定的?>0\epsilon>0?>0,運行時間與輸入算例的大小nnn呈多項式關(guān)系。
FPTAS
完全多項式時間近似策略
對任意確定的?>0\epsilon>0?>0,運行時間與輸入算例的大小nnn和1/?1/\epsilon1/?都呈多項式關(guān)系。
例1.頂點覆蓋問題
目標
對給定無向圖,尋找一個最小的頂點集合使之滿足“頂點覆蓋”。
算法
證明
- (1)多項式性
已證明其在多項式時間內(nèi)運行。 - (2)正確性
算法返回的集合C中的頂點是“頂點覆蓋”,因為該算法的循環(huán)直到所有的邊的某一頂點都存在集合C中才結(jié)束。 - (3)近似度
C?C^*C?:精確解集合
AAA: 算法第四行被挑選的邊的集合
CCC:近似算法解
由于AAA中的邊都是不連通的,即AAA中不存在兩條邊被C?C^*C?中的同一個頂點覆蓋
∣C?∣≥∣A∣|C^*|\ge{|A|}∣C?∣≥∣A∣
∣C∣=2∣A∣|C|=2|A|∣C∣=2∣A∣
由以上兩式推出
∣C∣=2∣A∣≤2∣C?∣|C|=2|A|\le{2|C^*|}∣C∣=2∣A∣≤2∣C?∣
例2.滿足三角不等式的旅行商問題
TSP是NP-完全問題
目標
假設(shè)有一個旅行商人要拜訪N個城市,他必須選擇所要走的路徑,路徑的限制是每個城市只能拜訪一次,而且最后要回到原來出發(fā)的城市。路徑的選擇目標是要求得的路徑路程為所有路徑之中的最小值。
算法
證明
(1)多項式性
(2)正確性
(3)近似度
H?H^*H?:精確解
TTT:最小生成樹
WWW:T的"full work"
HHH:近似解
c(T)≤c(H?)c(T)\le{c(H^*)}c(T)≤c(H?)
c(W)=2c(T)c(W)=2c(T)c(W)=2c(T)
以上兩式推出
c(W)≤2c(H?)c(W)\le{2c(H^*)}c(W)≤2c(H?)
c(H)≤c(W)c(H)\le{c(W)}c(H)≤c(W)
可以推出
c(H)≤2c(H?)c(H)\le{2c(H^*)}c(H)≤2c(H?)
哈密頓環(huán)
NP-完全問題
近似難
近似難有解就證明了P=NPP=NPP=NP
如果P!=NPP !=NPP!=NP,則對于任意常數(shù)ρ>1\rho > 1ρ>1,對于一般的旅行商問題,不存在近似比為ρ\rhoρ的多項式時間近似算法。
證明過程
(1)先建立全圖
E‘={(u,v):u,v∈Vandu≠v}E^`=\{{(u,v):u,v \in {V} and \space u \ne{v}}\}E‘={(u,v):u,v∈Vand?u=v}
(2)對所有的邊加上權(quán)值,原來的邊權(quán)值為1
c(u,v)={n,if(u,v)∈Eρ∣V∣+1,otherwisec(u,v)= \begin{cases} n, if (u,v) \in E\\ \rho|V| + 1, otherwise \end{cases} c(u,v)={n,if(u,v)∈Eρ∣V∣+1,otherwise?
(3)如果原圖中有哈密頓環(huán),把H環(huán)作為正確解∣V∣|V|∣V∣,否則>ρ∣V∣>\rho|V|>ρ∣V∣。
例3. 子集和問題
目標
在SSS中尋找合適的子集,子集中元素的和為ttt。
算法
總結(jié)
以上是生活随笔為你收集整理的Approximation method(近似算法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux虚拟机上不去网解决办法
- 下一篇: 用mindmanager总结的vb系统常