動態規劃是一種分階段求最優值的演算法:將複雜的問題按階段劃分成乙個個的子問題,然後枚舉子問題可能出現的各種情況,從中找出最優解,即利用子問題的最優解求得原問題的最優解
階段:用動態規劃求解乙個問題時,需要將問題的全過程恰當的分成若干個相互聯絡的階段,以便按一定的次序去求解。階段的劃分一般是根據時間和空間的自然特徵來劃分,同時階段的劃分要便於把問題轉化成多階段決策過程。即根據空間順序或時間順序對問題的求解劃分階段
階段變數:用來描述階段的變數,通常用 k 表示
狀態:某一階段的出發位置稱為狀態,通常乙個階段包含若干狀態。狀態描述事物的性質,不同事物有不同的性質,因而用不同的狀態來刻畫,對問題的求解狀態的描述是分階段的
狀態變數:用來描述狀態的變數
決策:在對問題的處理中做出的每種選擇性地行動稱為決策,即從該階段的每乙個狀態出發,通過一次選擇性的行動轉移至下一階段的相應狀態。乙個實際問題可能要有多次決策和多個決策點,在每乙個階段的每乙個狀態中,都要有一次決策
決策變數:用來描述決策的變數
決策允許集合:在實際問題中,決策變數的取值往往限制在某乙個範圍之內,此範圍稱為決策允許集合
多階段決策過程:把乙個問題看作是乙個前後關聯具有鏈狀結構的多階段過程就稱為多階段決策過程
策略:所有階段依次排列構成問題的全過程,全過程中各階段決策變數所組成的有序總體稱為策略
最優策略:在實際問題中,從決策允許集合中找出最優效果的策略稱為最優策略
狀態轉移方程:前一階段的終點就是後一階段的起點,對前一階段的狀態做出某種決策,產生後一階段的狀態,這種關係描述了由 k 階段到 k+1 階段狀態的演變規律,稱為狀態轉移方程,即用數學公式描述與階段相關的狀態間的演變規律
1、問題具有多階段決策的特徵
2、每一階段都有相應的「狀態」與之對應
3、每一階段都需要做出乙個決策,選擇不同的決策會導致下一階段出現不同的狀態
4、每一階段的最優解問題可以遞迴地歸結為下一階段各個可能狀態的最優解問題,各子問題與原問題具有完全相同的結構。
動態規劃問題又稱dp問題
1、判斷問題是否具有最優子結構性質,若不具備則不能用動態規劃
2、把問題分成若干個子問題(分階段)
3、建立狀態轉移方程(遞推公式)
4、找出邊界條件
5、將已知邊界值帶入方程
6、遞推求解
與遞迴類似,將問題層層分解
與貪心類似,求子問題的最優解,不同的時貪心只求乙個子問題的最優解,而動態規劃要枚舉子問題所有可能出現的情況,從中選擇最優解
dp中的列舉是指枚舉子問題可能出現的各種情況,而不是列舉整個問題的所有答案然後比較求出最優解
動態規劃 什麼是動態規劃?
先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...
mysql動態規劃 動態規劃
動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...
《動態規劃》 ACM 動態規劃例題詳解
描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 圖1 圖1給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。注意 路徑上的每一步只能從乙個數走到下一層上和它最近的左邊的那個數或者右邊的那個數。輸...