貪心算法及其理論依據——擬陣
阿新 • • 發佈:2018-10-07
之一 安全 所有 適合 什麽 情況下 com play 策略
貪心算法主要采用局部最優的解決問題的策略,但是在很多時候都不能達到全局最優的效果,那麽什麽時候使用貪心算法能夠得到全局最優呢?就此引出擬陣的概念。
貪心算法的一般步驟
- 確定待解問題的最優子結構
- 設計遞歸求解方式
- 證明在遞歸的任一階段,最優選擇之一總是貪心的(那麽貪心選擇是最適合的)
- 證明通過做貪心選擇,所有的子問題都為空(除一個以外)
- 設計實現貪心策略的遞歸算法
- 將設計好的遞歸算法轉換成叠代算法
貪心選擇
貪心算法中,我們所做的總是當前看似最佳的選擇,然後在解決經過貪心選擇之後所出現的子問題。其作出的當前的選擇可能要依賴於已經做出的所有選擇,但不依賴於未做出的選擇或子問題的解。貪心算法采取的貪婪策略往往是自頂向下的。核心所在就是要證明每一步所做的貪心選擇最終能產生一個全局最優解 。
最優子結構
對於一個問題,如果它的一個最優解包含了其子問題的最優解,則稱該問題具有最優子結構(最優子結構的證明采用部分替換法)。
設計貪心算法的一般步驟
- 將優化問題轉化為:先做出選擇,再解決剩下的一個子問題
- 證明原問題總是有一個最優解是做貪心選擇而得到的,從而證明貪心選擇的安全性與魯棒性
- 說明做出貪心選擇之後,剩余的子問題具有一個性質:如果將子問題的最優解和所做的貪心選擇聯合,可以得到原問題的一個最優解
擬陣
擬陣理論是組合優化的一個分支。擬陣理論並不是因為貪心算法而引入,但是卻是貪心算法的強力輔助。擬陣理論不能完全覆蓋所有的貪心算法(如赫夫曼編碼問題),但它可以覆蓋大多數具有實際意義的情況。
在問題模型滿足擬陣結構的情況下,貪心策略總是能夠得到最優解。
擬陣的概念
定義1:子集系統的優化問題
定義2:擬陣
貪心算法
定義4:擬陣的權函數
定義5:擬陣的最大權獨立集問題
擬陣的性質
定義3:獨立子集
定理1
定理2
定理3
貪心算法
貪心算法及其理論依據——擬陣