1. 程式人生 > 其它 >動態規劃--個人筆記

動態規劃--個人筆記

 動態規劃的解題步驟 1 定義狀態。 2 尋找狀態轉移方程。 3 前兩步聯立,計算出所需要的值。   根據數學歸納法的三步走,我們試著證明一下第一種狀態轉移方程是正確的,也就是自上而下的狀態轉移方式。 第一步,我們已知在這種狀態轉移方式中,第一個階段中的所有 dp 值都可以輕鬆獲得,也就是可以很輕鬆的初始化 dp[1][1] 的值,應該等於 val[1][1] 的值。 第二步,我們假設如果第 i-1 階段中的所有狀態值,我們都正確的得到了。也就是正確的得到了從起始點到 i-1 層中每個點的路徑最大和值。那根據狀態轉移方程:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j + 1]) + val[i][j] 來說,就可以正確的計算得到第 i 個階段中的所有狀態值。 第三步,兩步聯立,就可得出結論,所有階段中的狀態值計算均正確。那麼,從起始點到底邊的路徑最大和值,就在最後一個階段的若干個狀態值中。 以上就是我們使用數學歸納法,證明數字三角形問題的第一種狀態轉移方程正確性的過程。這個過程呢,比較簡單,那是因為數字三角形問題本身就不難。當面對更難一些的動態規劃問題的時候,將這種證明方法,加入到你學習動態規劃演算法的過程中,你會收穫奇效的。