[動態規劃dynamic programming](
貪心演算法,又名貪婪法,是尋找最優解問題的常用方法
步驟1:從某個初始解出發;
步驟2:採用迭代的過程,當可以向目標前進一步時,就根據區域性最優策略,得到一部分解,縮小問題規模;
步驟3:將所有解綜合起來。
假設你開了間小店,不能電子支付,錢櫃裡的貨幣只有 25 分、10 分、5 分和 1 分四種硬幣,如果你是售貨員且要找給客戶 41 分錢的硬幣,如何安排才能找給客人的錢既正確且硬幣的個數又最少?
這裡需要明確的幾個點:
1.貨幣只有 25 分、10 分、5 分和 1 分四種硬幣;
2.找給客戶 41 分錢的硬幣;
3.硬幣最少化
思考,能使用我們今天學到的貪婪演算法嗎?怎麼做?
(回顧一下上文貪婪法的基本步驟,1,2,3)
1.找給顧客sum_money=41分錢,可選擇的是25 分、10 分、5 分和 1 分四種硬幣。能找25分的,不找10分的原則,初次先找給顧客25分;
2.還差顧客sum_money=41-25=16。然後從25 分、10 分、5 分和 1 分四種硬幣選取區域性最優的給顧客,也就是選10分的,此時sum_money=16-10=6。重複迭代過程,還需要sum_money=6-5=1,sum_money=1-1=0。至此,顧客收到零錢,交易結束;
3.此時41分,分成了1個25,1個10,1個5,1個1,共四枚硬幣。
動態規劃與貪心演算法
1.動態規劃演算法 在解決最優解時我們用到的兩個演算法,貪心與動態規劃演算法,接下來我根據自己的理解解釋兩者的差異之處。貪心會怎樣做,動態規劃又會怎樣做?我的了解,貪心演算法是自頂向下,及每一步向下都取最大值,但得到的是最優解嗎?如圖顯然不是。接下來我會逐一跟大家演示。動態規劃解法,從小規模來看是否...
動態規劃和貪心演算法
動態規劃 通過組合子問題的解來求解原問題,常用來求解最優化問題。常用來解決以下幾類問題,但不是說遇到類似問題必須用動態規劃來解決,可以往這方面去想 1.計數問題,如有多少種方式走到右下角,有多少種方法選出k個數使得和是sum 2.求最大最小值,如從左上角走到右下角路徑的最大數字和 3.求存在性,如取...
貪心演算法和動態規劃
貪心演算法 在求解問題時,總是做出在當前看來做好的選擇,所以它是區域性最優解,試圖通過區域性最優推出全域性最優。需要注意的是貪心演算法沒有固定的演算法框架,演算法設計的關鍵是選擇貪心策略,其必須具備無後效性,即某個狀態以後的過程不會影響以前的狀態,只與當前狀態有關。常見的用貪心演算法解決的問題,比如...