標籤:np完全 難解 旅行商 演算法 演算法之道
《演算法之道》精華 難解問題部分
- 本書作者縐恒明,作者另有一本書《資料結構之弦》,以及《作業系統之哲學原理》都是很好的書
- 這本書可以算得上是深入淺出,文筆很好,作者添加了很多自己的思考
- 本文包括難解問題部分
第十三章 易解與難解
- 易解指的是多項式問題,難解指的是指數級問題
- 決策問題
- 需要輸出答案是/否
- 若回答為是,通常需要一個證人來證明。對一個潛在證人,證明之後即為真證人
- 最佳化問題和決策問題之間可以相互轉化
- P類問題
- 確定性多項式時間可解
- 對於一個決策問題,輸入的大小為n,能在n的多項式時間內解決,正確輸出是/否
- NP類問題
- 非確定性多項式時間可解
- 對於一個決策問題,大小為n的潛在證人,能在n的多項式時間內解決,正確輸出此證人是否為真
- P類問題指的是能否多項式時間給出答案,NP類問題指的是能否在多項式時間內判斷一個潛在答案是否正確
- (確定性)圖靈機
- 圖靈機為一個狀態機器,根據目前狀態、下一個輸入字元確定輸出、磁頭移動方向、下一個狀態
- 任一個問題、演算法都能表述為一個字串,因此圖靈機可以解決很多問題
- 非確定性圖靈機
- 與確定性圖靈機相比,給定狀態與輸入可以有多種選擇
- 能夠同時進入所有狀態路徑,且能做出最好的選擇以達到接受狀態
- 非確定性演算法:在非確定性圖靈機上啟動並執行演算法
- NP問題的另一個定義:使用非確定性演算法,在多項式時間內解決
- P與NP的關係
- 所有P類問題都是NP的
- 所有NP不一定是P,直覺如此,但無法證明
- 部分NP為P,目前已經找到多項式解法,目前沒有找到多項式解法的NP問題稱為NP-hard
第十四章 NP完全問題
- 如果NP裡每一個問題都可以多項式時間規約到S,則S稱為NP難(嚴謹的定義)。S不比NP裡面任一問題容易
- 如果問題S既是NP難,又是NP裡的問題,則稱為NP完全問題
- NP完全的屬性
- 非確定性演算法多項式時間可解
- 完全:解決一個就解決了所有NP完全問題
- 若找到一個NP完全問題的確定性解法,就證明了NP=P
- 若找到一個NP難最佳化問題的多項式時間解,就證明了NP=P
- NP完全的意義:若能證明一個問題為NP完全問題,則無需再尋找精確解,找到啟發性的近似解即可
- 常見NP完全問題
- 3-SAT
- 整數分割
- 頂點覆蓋
- 漢密爾頓迴路 可規約至旅行商問題
- 完全子圖
- 圖的著色
- 旅行商
- 整數規劃屬於NP難問題,但不是NP問題,因此不是NP完全問題
第十五章 無解與近似
- NP完全只是NP裡最難的問題,目前沒有找到多項式解法
- 難解問題不存在多項式解法
- 不可決定問題:是無解的,即使是指數級也無濟於事。但又潛在證人
- 對於NP完全和難解問題,可以嘗試找出次優解
- 智能窮舉
- 能找的最優解
- 兩種剪枝策略:回溯法、分支限界
- 如八皇后問題
- 近似演算法
- 能找到近似的解
- 如聚類問題、啟發學習法搜尋、類比退火、遺傳演算法
- 本地搜尋
- 一種貪婪策略
- 不斷向更優的可行解移動,可能僅能找到局部最優解
轉載請註明Focustc,部落格地址為http://blog.csdn.net/caozhk,原文連結為點擊開啟