1.基本概念 數組
再要兩個月就要離開人生的象牙塔,走向工做單位。下面我簡單介紹一下動態規劃。優化
動態規劃過程是:每次決策依賴於當前狀態,又隨即引發狀態的轉移。一個決策序列就是在變化的狀態中產生出來的,因此,這種多階段最優化決策解決問題的過程就成爲動態規劃。spa
2.基本思想與策略排序
基本思想與分治法相似,也是將帶求解的問題分爲若干子問題,按順序求解子階段,前一子問題的解,爲後一個子問題的求解提供了有用的信息。在求解任一子問題時,列出各類可能的局部解,經過策略保留那些有可能達到的最優的局部解,丟棄其餘的局部解。依次解決各個子問題,最後一個子問題的解也就是最終的結果。遞歸
因爲動態規劃解決的問題多數有重疊子問題的特色,爲了減小重複的計算,對每個子問題只解一次,將其不一樣階段的不一樣狀態保存在一個二維數組中。變量
與分治法最大的差異是:適合與動態規劃求解的問題,通過分解後獲得的子問題每每不是相互的,獨立的。原理
3.適用的狀況二維數組
適用的狀況通常有下面三種特色:動態規劃
(1)最優化原理:若是問題的最優解,所包含的子問題的解也是最優解。就稱該問題具備最優子結構,即知足最優化原理。時間
(2)無後效性。即在某階段中的狀態一旦肯定,就不受這種狀態之後決策的影響,也就是說,某狀態之後的過程不會影響之前的狀態,只和當前的狀態有關。
(3)有重疊的子問題。
4.求解的基本步驟
動態規劃所處理的問題是一個多階段決策問題,通常由初始化狀態開始,經過對中間段決策的選擇,達到結束狀態。這些決策造成了一個決策序列,同時肯定了完成整個過程的一條活動路線。
初始狀態->決策1->決策2->....->決策n->最後結果
(1)劃分階段:按照問題的時間或空間特徵,把問題分爲若干個階段,階段的劃分,注意必定是有序的或者可排序的,不然問題沒法求解。
(2)肯定狀態和狀態的變量:將問題發展到各個階段時所處於的各個客觀狀況用不一樣的狀態表示出來。
(3)肯定決策並寫出狀態轉移方程:由於決策和狀態有着自然的聯繫,狀態轉移就是根據上一階段的狀態來決定出來本階段的狀態。因此,若是肯定了決策,狀態轉移方程也就能夠寫出。
(4)尋找邊界條件:給出的狀態轉移方程是一個遞推式,須要找到其終止條件。
實際中的應用步驟:
(1)分析最優解的性質,並獲得其結果特徵
(2)遞歸的定義最優解
(3)從底向上計算最優值。