動态規劃過程:每一次決策依賴于目前的狀态,即下一狀态的産生取決于目前狀态。一個決策序列就是在變化的狀态中産生的,這種多階段最優化問題的求解過程就是動态規則過程。
與分而治之原理類似,将待求解的問題劃分成若幹個子問題(階段)求解,順序求解各個子問題(階段),前一子問題(階段)為後一子問題(階段)的求解提供有用的資訊。通過各個子問題(階段)的求解,依次遞進,最終得到初始問題的解。一般情況下,能夠通過動态規劃求解的問題也可通過遞歸求解。
動态規劃求解的問題多數有重疊子問題的特點,為了減少重複計算,對每個子問題隻求解一次,将不同子問題(階段)的解儲存在數組中。
與分而治之的差別:<code>分而治之得到的若幹子問題(階段)一般彼此獨立,各個子問題(階段)之間沒有順序要求。而動态規劃中各子問題(階段)求解有順序要求,具有重疊子問題(階段),後一子問題(階段)求解取決于前一子問題(階段)的解。</code>
與遞歸差別:<code>與遞歸求解差別不大,都是劃分成各個子問題(階段),後一子問題(階段)取決于前一子問題(階段),但遞歸需要反複求解同一個子問題(階段),相較于動态規劃做了很多重複性工作。</code>
采用動态規劃求解的問題一般具有如下性質:
最優化原理:求解問題包含最優子結構,即,可由前一子問題(階段)最優推導得出後一子問題(階段)最優解,遞進得到初始問題的最優解。
無後效性:某狀态以後的過程不會影響以前的狀态,隻與目前狀态有關。
有重疊子問題:子問題(階段)之間不是獨立的,一個子問題(階段)的解在下一子問題(階段)中被用到。(不是必需的條件,但是動态規劃優于其他方法的基礎)