貪心演算法 and 動態規劃

2021-10-05 02:40:24 字數 723 閱讀 2809

[動態規劃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.求存在性,如取...

貪心演算法和動態規劃

貪心演算法 在求解問題時,總是做出在當前看來做好的選擇,所以它是區域性最優解,試圖通過區域性最優推出全域性最優。需要注意的是貪心演算法沒有固定的演算法框架,演算法設計的關鍵是選擇貪心策略,其必須具備無後效性,即某個狀態以後的過程不會影響以前的狀態,只與當前狀態有關。常見的用貪心演算法解決的問題,比如...