近似算法

計算機科學運籌學中,近似算法(英語:Approximation algorithm)是指能為最優化問題尋找近似解的算法,該類算法找到的近似解與最優解之間的差值需能證明不超過某個值[1][2]。由於人們普遍猜測P≠NP,許多優化問題因此無法在多項式時間內得到精確解決。進而,理論計算機科學領域內自然而然地出現了試圖在多項式時間複雜度內得到近似最優解的近似算法。在絕大多數情況下,近似算法得到的近似值位於最優解到最優解乘以某個特定的值之間,這個特定的值被稱作近似比。不過,也有一些算法得到的近似值是在最優解到最優解加某個特定的值之間。

近似算法的設計及分析過程中都包含一系列的數學證明,以保證其最差情況效率仍可接受[2]。這點也是它與模擬退火啟發式算法之間的不同之處,啟發式算法通常能夠找到一個比較好的近似解,但其設計及分析之初往往並不涉及最差情況效率的證明。

背景

在計算複雜性理論中的某些假設下,比如最著名的 假設下,對於一些可已被證明為NP完全的優化問題,無法在多項式時間內精確求到最優解,然而在現實或理論研究中,這類問題都有廣泛的應用,在精確解無法得到的情況下,轉而依靠高效的近似算法求可以接受的近似解。近似算法的研究也是當今計算機科學研究的一個主要方向。

近似比

對於一個最大化問題的實例,設其最優解是 ,某個近似算法的解是 ,若下式成立,

 

其中 則定義此近似算法的近似比為 

相應的,對於一個最小化問題的實例,設其最優解是 ,某個近似算法的解是 ,若下式成立,

 

其中 則定義此近似算法的近似比為 

分類

按照可以達到近似比的不同,可以將近似算法大致按以下分類:

  1. FPTAS英語Fully polynomial-time approximation scheme
  2. 多項式時間近似算法(PTAS)
  3. 常數近似
  4. 對數的多項式
  5. 多項式

其中對數的多項式和多項式都是對應於輸入規模的。

設計方法

近似算法的常用設計方法有貪心法線性規劃半正定規劃鬆弛和取整隨機算法等。

近似的困難性

對於一些問題,近似算法的近似比也會有一定的局限性,一個最大化問題(最小化問題類似)最好的近似算法可以達到的近似比不能比某個特定的值更高。20世紀90年代發展起來的PCP理論為證明近似的困難性提供了一套系統的工具。例如,對於常見的MAX3SAT問題,一個簡單的隨機算法可以滿足7/8的子句,但是可以證明,找到一個能保證滿足高於 比例子句的問題是NP困難的。所以在 的假設下,這個問題我們可以得到的最優近似比是7/8。進入21世紀之後,計算機科學家為了近似困難性更往前一步,提出了唯一性遊戲假設,在這一假設下,一些重要的問題如MAX-CUTMAX2SAT也被證明了可能達到的最優近似比。

參見

參考文獻

  1. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford. 算法导论. 由潘金貴; 顧鐵成; 李成法; 葉懋翻譯 原書第二版. 機械工業出版社. 2006: 633-634. ISBN 978-7-111-18777-6 (中文(簡體)). 
  2. ^ 2.0 2.1 Bernard., Shmoys, David. The design of approximation algorithms. Cambridge University Press. 2011 [2022-09-04]. ISBN 9780521195270. OCLC 671709856. (原始內容存檔於2022-12-20).