動態規劃總結

2021-07-30 16:52:45 字數 1757 閱讀 3923

動態規劃是一種解決最優化問題的方法,動態規劃最大的特點是變化多端,解題方法不是按照一定套路來的。

動態規劃一般是能分階段的問題,可以把大問題轉化為小問題,充分利用計算機重複處理問題的特點,把這個問題解決掉。並且動態規劃中的變數都是有一定含義的,每個變數都有它所包含的意思,比如:在最長上公升子串行這個題中,dp[n]代表了以第n個數結尾的最長子序列的長度。最重要的是動態規劃問題要有狀態轉移方程,這個方程不一定是數學公式,有時候是前後之間的某種關係,一般能夠推出公式的題都是比較簡單的,難得是找不到乙個公式。

動態規劃有兩個原理,最優化原理和無後效性原理,最優化原理指的是乙個階段的最優解要能導致全域性的最優。無後效性原理是當前的最優解確定了,不會再受到其他變化的影響,只與推出它來的狀態轉移方程有關。

做了很多動態規劃題,感覺這種題的核心**都是迴圈結構,一般是兩重迴圈,還有三重的。畢竟動態規劃是要不斷重複計算嘛。

動態規劃的一般解題步驟:

1。。分階段

2。。確定變數的狀態,其實我感覺分階段和確定變數狀態沒有誰先誰後,有時候是一起想出來的。

3。。找出狀態轉移方程(不一定是公式)。

4。。確定邊界條件。。因為狀態轉移一般是公式,所有要有結束條件。

動態規劃中一種題叫做揹包問題。

有三種基礎揹包問題  :01揹包,完全揹包,多重揹包,

還有一些複雜了一些的揹包問題:混合了前面三種揹包的揹包問題,分組揹包,有兩個價值的揹包,揹包方案數問題。

01揹包

n個物品放在容量為v的揹包裡,第i個物品的價值是c[i],體積是w[i]。每件物品只能拿一次。

這就是01揹包,紅色字型是它和其他基礎揹包問題的區別。

揹包問題一般都有「套路」,也就是相同揹包問題大部分的思路**差不多。

dp[i][j]表示前i個物品放在容量為j的揹包裡的最大價值。

比如01揹包就是兩重迴圈

for  int  i=1......n

for  int  j=n.....w[i]

迴圈裡面就是最關鍵的狀態轉移方程。

完全揹包

n個物品放在容量為v的揹包裡,第i個物品的價值是c[i],體積是w[i]。每件物品可以拿無限次。

也是兩重迴圈。

for int i=1......n

for int j=w[i].....n

多重揹包

n個物品放在容量為v的揹包裡,第i個物品的價值是c[i],體積是w[i]。每件物品可以拿有限次。

還是兩重迴圈,不過在裡面有次數的限制,可以再加一層迴圈,或者設定乙個計算物品次數控制變數。

這兩重迴圈和多重揹包一樣。

剩下的揹包問題都是在這三種揹包基礎上的變形,只要掌握了這三種揹包,其他的揹包仔細思考一下也能解決。

動態規劃問題可以用滾動陣列的方法節省空間,動態規劃問題中,尤其是揹包問題 ,有很多都是用前一狀態的變數推出後一狀態的變數,這就可以用滾動陣列的方法來節省空間。就是二維陣列可以用一維陣列來代替,因為另外一維本來就是記錄狀態的作用。

二進位制思想,在多重揹包問題中可能要用到,每個數都可以用多個2的n次方來表示,比如26=2^4+2^3+2^1.這樣就可以把乙個數變成多個數,把多重揹包的乙個物品變成01揹包的多個物品。就可以按照01揹包的思想做題了。

在動態規劃中有很多題可以用遞迴函式做,也可以用遞推公式加雙重迴圈做,一般資料量大的用遞推公式,小的可以用遞迴函式,有些很多並且要處理多組資料的也可以加上預處理,記憶化搜尋什麼的。

在動態規劃中特殊問題可以用二分法和貪吃演算法來做,就是正在學習這部分,二分法是求最大值的最小值,最小值的最大值問題。貪吃是只考慮區域性最優,不考慮全域性最優,可以減少一層迴圈。

動態規劃總結

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 12 7 近期學了幾個動態規劃正好總結一下。裡面不涉及具體問題的具體解法,有問題可以參看我的具體型別的講解部落格。目前所見動態規劃可以劃分為兩類 鏈式和樹形。而且這兩類中的每個節點都是乙個完整的狀態集合。一 鏈式動態規劃 鏈式動態規劃的題...

動態規劃 總結

動態規劃是解決多階段決策問題的一種方法。如果一類問題的求解過程可以分為若干個互相聯絡的階段,在每乙個階段都需作出決策,並影響到下乙個階段的決策,從而確定了乙個過程的活動路線,則稱它為多階段決策問題。思想 在做每一步決策時,列出各種可能的區域性,解依據某種判定條件,捨棄那些肯定不能得到最優解的區域性解...

動態規劃總結

一 知識點整理 一 動態規劃是解決多階段策略問題的一種方法,運用最優性原理,排除重複計算,用空間換時間的演算法。二 動態規劃適用的題目型別有以下幾個特點 1.問題具有多階段的決策 2.每個階段對應乙個狀態 狀態變數 3.每個階段有乙個決策 不同的決策導致下乙個階段不同的狀態 4.每個階段的最優解可以...