動態規劃入門

2021-07-29 22:38:31 字數 855 閱讀 7623

大家可以看看這篇文章dp,哪個更容易理解就看哪個!

一、動態規劃的定義:

動態規劃程式設計是一種針對於解決最優化問題的一種途徑、一種方法,而不是一種特殊演算法,也就是說它沒有固定的模板。在動態規劃中,每走一步都要看看能不能最優,而且動態規劃最擅長的就是多階段問題!

二、動態規劃的基本概和基本模型構成:

1. 階段和階段變數

2. 狀態和狀態變數

3. 決策、決策變數和決策允許集合

4. 策略和最優策略

5. 狀態轉移方程

三、最優化原理和無後效性原則:

1、動態規劃的最優化原理:

子問題的區域性最優將導致整個問題的全域性最優

2、動態規劃的無後效性原則:

通俗地說,就是「未來與過去無關,只與現在有關」。

如果錯誤使用動態規劃,會使問題wa

四、動態規劃設計方法的一般模式:

1、劃分階段

2、確定狀態和狀態變數

3、確定決策並寫出狀態轉移方程

4、尋找邊界條件,初始化

5、程式的設計實現

下面有乙個一般形式:

for(i=階段最大值;i>=1;i--)

for(j=狀態最小值;j

<=狀態最大值;j++)

for(k=決策最小值;k<=決策最大值;k++)

五、動態規劃例題:

1、數字三角形

2、最長嚴格上公升子串行

3、攔截飛彈

4、挖地雷

5、友好城市

6、合唱隊形

7、機器分配

推薦幾篇動態規劃的部落格

六,五,四,三,二,一

動態規劃入門

1 用 dp 做的題大多數返回值是int boolean,求max min,不能打亂原來輸入順序。2 動態規劃有兩個重要定義,乙個叫 optimal substructure 另乙個叫 overlap subproblem 各種排序 tree 類問題中,都會用到 divide conquer 的思想...

動態規劃入門

學動態規劃自然要從數字三角形開始起步,那麼我們就先從數字三角形開始。數字三角形題目 有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行之外的每個數的左下方和右下方各有乙個數,如下圖所示 3 24 10 1 4 3 2 20 從第一行的數開始,每次可以往下或往右下走一格,直到走到最下行,把沿途...

動態規劃入門

最長公共子串行 lcs lcs 遞迴 int findlcs string a,int n,string b,int m 採用動態規劃的策略o n m 將計算的方向顛倒,將遞迴改為迭代 0 將所有子問題 假想地 列成一張表 1 顛倒計算方向,從lcs a 0 b 0 出發依次計算出所有項。遞迴公式1...