**
動態規劃是運籌學的乙個分支,是求解決策過程最優化的數學方法,在解決實際問題中經常被使用。
動態規劃三要素:階段,狀態,決策
1、階段是對整個過程的自然劃分
2、狀態表示每個階段開始時過程所處的自然狀況
3、當乙個階段的狀態確定後,可以作出各種選擇從而演變到下一階段的某個狀態,這種選擇手段稱為決策
找出此類問題的關鍵:
1、能夠用動態規劃來求解(這是基本前提)
利用最優性原理來進行判斷(這裡不做解釋)
2、獲得狀態轉移方程(這是重點)
可以看做動態規劃求解實際問題的時候,就是來獲得當某階段的狀態和決策為已知,下階段的狀態可以通過該階段來表示出來,而且它們之間滿足乙個狀態轉移方程:x[k+1]=t[k](x[k],u[k](x[k]))
3、根據題目要求對決策過程中產生的中間狀態進行選取(如0/1揹包問題中要求不超過重量上限的情況下獲得最大效益,這裡面獲得大效益便是乙個限制條件,可以用來在中間決策中產生的狀態中進行選擇
拿到多階段決策最優化問題後,第一步要判斷這個問題是否可以用動態規劃解決,如果不能就要考慮搜尋或貪心了。當確定問題可以用動態規劃後,就要用下面介紹的方法解決問題了:
(1)模型匹配法:
最先考慮的就是這個方法了。挖掘問題的本質,如果發現問題是自己熟悉的某個基本的模型,就直接套用,但要小心其中的一些小的變動,現在考題辦都是基本模型的變形套用時要小心條件,三思而後行。這些基本模型在先面的分類中將一一介紹。
(2)三要素法
仔細分析問題嘗試著確定動態規劃的三要素,不同問題的卻定方向不同:
先確定階段的問題:數塔問題,和走路問題
先確定狀態的問題:大多數都是先確定狀態的。
先確定決策的問題:揹包問題
(3)尋找規律、拼湊法:
這個方法很簡單,耐心推幾組資料後,看他們的規律,總結規律間的共性,這裡一般可以比較容易的得到狀態轉移方程,也就是確定下一階段與前一階段之間的聯絡
(4)邊界條件法
找到問題的邊界條件,然後考慮邊界條件與它的領接狀態之間的關係。這個方法也很起效。
(5)放寬約束和增加約束
這個思想是在陳啟鋒的**裡看到的,具體內容就是給問題增加一些條件或刪除一些條件使問題變的清晰
動態規劃演算法
一 動態規劃演算法原理 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後從這些子問題的解得到原問題的解 對於重複出現的子問題,只在第一次遇到的時候對它進行求解,並把答案儲存起來。了不去求解相同的子問題,引入乙個陣列,把所有子問題的解存於該陣列中,這就是動態規劃所採用的基本方法。動態規劃...
動態規劃演算法
動態規劃 通過把原問題分解為相對簡單的子問題來求解複雜問題。動態規劃常常適用於有重疊子問題和最優子結構性質的問題。演算法總體思想 演算法的基本步驟 演算法的基本要素 最優子結構 重疊子問題 備忘錄方法 問題描述 子串行 公共子串行 最長公共子串行 lcs 問題 問題分析 動態規劃求解lcs問題 最長...
動態規劃演算法
動態規劃演算法的思路 動態規劃法即 dynamic programming method dp 是系統分析中的種常用方法。動態規劃法是20世紀50年代由貝爾曼 r.bellman 等人提出的,用來解決多階段決策過程問題的一種最優化方法。多階段決策過程是指把研究問題分成若干個相互聯絡的階段,由每個階段...