動態規劃

動態規劃 （ Dynamic programming ， 簡稱DP ） 是一種在數學 、 管理科學 、 計算機科學 、 經濟學和生物信息學中使用的 ， 通過把原問題分解爲相對簡單的子問題的方式求解複雜問題的方法 。 動態規劃常常適用於有重疊子問題和性質的問題 ， 動態規劃方法所耗時間往往遠少於樸素解法 。 動態規劃背後的基本思想非常簡單 。 大致上 ， 若要解一個給定問題 ， 我們需要解其不同部分 （ 即子問題 ） ， 再根據子問題的解以得出原問題的解 。 通常許多子問題非常相似 ， 爲此動態規劃法試圖僅僅解決每個子問題一次 ， 從而減少計算量 ： 一旦某個給定子問題的解已經算出 ， 則將其記憶化存儲 ， 以便下次需要同一個子問題解之時直接查表 。 這種做法在重複子問題的數目關於輸入的規模呈指數增長時特別有用 。