動態規劃 貪心

2021-08-22 04:55:57 字數 692 閱讀 5249

區別:

動態規劃

全域性最優解中一定包含某個區域性最優解,但不一定包含前乙個區域性最優解,因此需要記錄之前的所有最優解。

條件:最優子結構;重疊子問題。

方法:自底向上構造子問題的解。

例子:子串行最大和問題,滑雪問題

貪心演算法

條件:每一步的最優解一定依賴上一步的最優解。

方法:從問題的某乙個初始解出發逐步逼近給定的目標,以盡可能快的地求得更好的解。當達到某演算法中的某一步不能再繼續前進時,演算法停止。

存在問題:

(1)不能保證求得的最後解是最佳的;

(2)不能用來求最大最小解的問題;比如錢幣分為1元3元4元,要拿6元錢,貪心的話,先拿4,再拿兩個1,一共3張錢;實際最優卻是兩張3元就夠了。

「貪心」特性:它對解空間樹的遍歷不需要自底向上,而只需要自根開始,選擇最優的路,一直走到底就可以了。這樣,與動態規劃相比,它的代價只取決於子問題的數目,而選擇數目總為1。

例子:哈夫曼樹,錢幣組合,設定雷達問題

********************====

聯絡:(1)都是一種遞推演算法;

(2)貪心和動態規劃本質上是對子問題樹的一種修剪。兩種演算法要求問題都具有的乙個性質就是「子問題最優性」。即組成最優解的每乙個子問題的解,對於這個子問題本身肯定也是最優的。

**

動態規劃和貪心

貪心演算法是種策略,思想。它並沒有固定的模式 比如最簡單的揹包問題 用貪心的思想去做,就可能有很多種方法 價效比最高的 價值最高的 重量最輕的 而你沒辦法確保你所選擇的貪心策略對所有的情況都是絕對最優的 動態規劃的思想是分治 解決沉餘 把乙個複雜的問題分解成一塊一塊的小問題 每乙個小問題中得到最優解...

動態規劃 貪心 剪草

我們思考一下,當結束前如果草被割了兩次,其實可以將第一次留著不割,到第二次再割 因此每一草最多隻會被割一次,這樣才能夠保證結果的最優性。其次,若要割兩個不同的草,並在不同的時間割除時,一定要先割生長速度的慢的草,再割快的草 因為在這乙份間隔的時間內,生長速度快的草可以被割掉的更多。或者有另外的一種理...

貪心 VS 動態規劃

貪心 每一步都是當前這一步的最優解法,但是卻不一定是整個問題的最優子解 動態規劃 每一步不一定是當前這一步的最優解,但是卻一定是整個問題的最優子解 從 最短路徑 問題中,就可以看出,使用動態規劃是正確的 對於動態規劃的進一步的演算法理解,請見這位大佬的部落格 兩種方法 自頂向下 又稱記憶化搜尋 備忘...