動態規劃與貪心演算法

2021-09-27 12:40:47 字數 863 閱讀 4358

1.動態規劃演算法

在解決最優解時我們用到的兩個演算法,貪心與動態規劃演算法,接下來我根據自己的理解解釋兩者的差異之處。

貪心會怎樣做,動態規劃又會怎樣做?

我的了解,貪心演算法是自頂向下,及每一步向下都取最大值,但得到的是最優解嗎?如圖顯然不是。接下來我會逐一跟大家演示。

動態規劃解法,從小規模來看是否知道動態規劃的解題機制,如果你認為是從上往下加取最大那你就錯了。

如果是這個結果呢,1走2,2只能走1,如果還是這樣從上往下我們得不到最優解,

這就是他們的直接問題。自頂向下,與自底向上。顯然自頂向下的貪心演算法顯然得不到最優解。

#include

#include

#include

using namespace std;

#define maxlen 100

int angle[maxlen]

[maxlen]

;int sum[maxlen]

[maxlen]

;int n;

intmaxsum

(int i,

int j)

return sum[i]

[j];

}int

main()

貪心演算法 and 動態規劃

動態規劃dynamic programming 貪心演算法,又名貪婪法,是尋找最優解問題的常用方法 步驟1 從某個初始解出發 步驟2 採用迭代的過程,當可以向目標前進一步時,就根據區域性最優策略,得到一部分解,縮小問題規模 步驟3 將所有解綜合起來。假設你開了間小店,不能電子支付,錢櫃裡的貨幣只有 ...

動態規劃和貪心演算法

動態規劃 通過組合子問題的解來求解原問題,常用來求解最優化問題。常用來解決以下幾類問題,但不是說遇到類似問題必須用動態規劃來解決,可以往這方面去想 1.計數問題,如有多少種方式走到右下角,有多少種方法選出k個數使得和是sum 2.求最大最小值,如從左上角走到右下角路徑的最大數字和 3.求存在性,如取...

貪心演算法和動態規劃

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