5.1 贪心法
1. 概述
1. 算法描述
2. 設計思想
使用貪心選擇策略,把一個復雜的問題,分解為一系列較為簡單的局部最優選擇,每一步選擇都是對當前解的一個擴展,直到獲得問題的完整解
3. 貪心法求解的問題特征
- 最優子結構性質:當一個問題的最優解包含其子問題的最優解時,稱此問題具有最優子結構性質
- 貪心選擇性質:問題的全局最優解可以通過局部最優解得到,即存在要給最優解是以貪心選擇開始的
(1)假設問題的一個整體最優解
(2)證明可以將這個整體最優解修改成從貪心選擇開始,此時,原問題就簡化成為一個相似的、規模較小的子問題
(3)用數學歸納法證明,通過每一步的貪心選擇,最終可得到問題的整體最優解
4. 貪心法 vs 動態規劃法
| 相同點 | 最優子結構性質 | |
| 不同點 | 自頂向下求解,求解過程不依賴于子問題的解,僅在當前狀態下做出最好選擇,即局部最優選擇 | 自底向上求解,求解過程依賴于子問題的解,在求出相關子問題的解后,再做出選擇 |
| 最優子結構+貪心選擇 | 最優子結構+重疊子問題 | |
2. 求解過程
1. 有關概念
(1)候選集合C:為了構造問題的解決方案,有一個候選集合C作為問題的可能解,即問題的最終解均取自于候選集合C。例如,在付款問題中,各種面值的貨幣構成候選集合
(2)解集合S:隨著貪心選擇的進行,解集合S不斷擴展,直到構成一個滿足問題的完整解。例如,在付款問題中,已付出的貨幣構成解集合
(3)解決函數solution:檢查解集合S是否構成問題的完整解。例如,在付款問題中,解決函數是已付出的貨幣金額恰好等于應付款
(4)選擇函數select:即貪心選擇策略,這是貪心法的關鍵,它指出哪個候選對象最有希望構成問題的解,選擇函數通常和目標函數有關。例如,在付款問題中,貪心選擇策略就是在候選集合中選擇面值最大的貨幣
(5)可行函數feasible:檢查解集合中加入一個候選對象是否可行,即解集合擴展后是否滿足約束條件。例如,在付款問題中,可行函數是每一步選擇的貨幣和已付出的貨幣相加不超過應付款
2. 偽碼描述
總結
- 上一篇: PM1200手持无线电综合测试仪
- 下一篇: 关于负数的二进制