算法學習——動態規劃 總結

一、動態規劃特點。

  1. 求解目標具有最優解。
  2. 目標問題的最優解可以分解爲各個子問題的最優解。
  3. 大問題分解爲若干小問題後,這些小問題之間還有相互重疊的更小的子問題。
  4. 從上往下分析問題,從下往上求解問題。

    PS:總結於 《劍指offer》author:何海濤

二、動態規劃條件。

  1. 優化子結構。即一個問題的優化解包含子問題的優化解。作用:可以縮小子問題集合;保證了可以從下而上求解問題呢
  2. 重疊子問題。子問題解可以多次使用。作用:加速求解。保證有效性
  3. 子問題空間小。

三、動態規劃的設計步驟

  1. 分析優化解結構。看是否能有動態規劃(依據其條件)
  2. 遞歸定義最優解的代價。描述這個問題最優解與子問題最優解的關係。
  3. 自下而上計算優化解的代價並保存,並獲得構造最優解的信息。
  4. 根據保存信息構造優化解。

四、動態規劃例子。

1.分析優化解結構。看是否有優化子結構。

2.分析重疊子問題。(舉例子看看)

3.遞歸定義最優解代價。

 

4.設計數據結構(足以容納所需要的解)

填充方法:(從對角線開始像目標推進)

僞代碼:

輸出:

 

 

 

 

源於哈工大課程《算法設計與分析》 主講人:王宏志

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章