天天看點

動态規劃算法基本思想原理适用解決問題求解步驟

動态規劃過程:每一次決策依賴于目前的狀态,即下一狀态的産生取決于目前狀态。一個決策序列就是在變化的狀态中産生的,這種多階段最優化問題的求解過程就是動态規則過程。

與分而治之原理類似,将待求解的問題劃分成若幹個子問題(階段)求解,順序求解各個子問題(階段),前一子問題(階段)為後一子問題(階段)的求解提供有用的資訊。通過各個子問題(階段)的求解,依次遞進,最終得到初始問題的解。一般情況下,能夠通過動态規劃求解的問題也可通過遞歸求解。

動态規劃求解的問題多數有重疊子問題的特點,為了減少重複計算,對每個子問題隻求解一次,将不同子問題(階段)的解儲存在數組中。

與分而治之的差別:<code>分而治之得到的若幹子問題(階段)一般彼此獨立,各個子問題(階段)之間沒有順序要求。而動态規劃中各子問題(階段)求解有順序要求,具有重疊子問題(階段),後一子問題(階段)求解取決于前一子問題(階段)的解。</code>

與遞歸差別:<code>與遞歸求解差別不大,都是劃分成各個子問題(階段),後一子問題(階段)取決于前一子問題(階段),但遞歸需要反複求解同一個子問題(階段),相較于動态規劃做了很多重複性工作。</code>

采用動态規劃求解的問題一般具有如下性質:

最優化原理:求解問題包含最優子結構,即,可由前一子問題(階段)最優推導得出後一子問題(階段)最優解,遞進得到初始問題的最優解。

無後效性:某狀态以後的過程不會影響以前的狀态,隻與目前狀态有關。

有重疊子問題:子問題(階段)之間不是獨立的,一個子問題(階段)的解在下一子問題(階段)中被用到。(不是必需的條件,但是動态規劃優于其他方法的基礎)