一、動態規劃特點。
- 求解目標具有最優解。
- 目標問題的最優解可以分解爲各個子問題的最優解。
- 大問題分解爲若干小問題後,這些小問題之間還有相互重疊的更小的子問題。
- 從上往下分析問題,從下往上求解問題。
PS:總結於 《劍指offer》author:何海濤
二、動態規劃條件。
- 優化子結構。即一個問題的優化解包含子問題的優化解。作用:可以縮小子問題集合;保證了可以從下而上求解問題呢
- 重疊子問題。子問題解可以多次使用。作用:加速求解。保證有效性
- 子問題空間小。
三、動態規劃的設計步驟
- 分析優化解結構。看是否能有動態規劃(依據其條件)
- 遞歸定義最優解的代價。描述這個問題最優解與子問題最優解的關係。
- 自下而上計算優化解的代價並保存,並獲得構造最優解的信息。
- 根據保存信息構造優化解。
四、動態規劃例子。
1.分析優化解結構。看是否有優化子結構。
2.分析重疊子問題。(舉例子看看)
3.遞歸定義最優解代價。
4.設計數據結構(足以容納所需要的解)
填充方法:(從對角線開始像目標推進)
僞代碼:
輸出: