動態規劃初步

2022-06-21 15:06:08 字數 676 閱讀 3563

動態規劃的核心是狀態和狀態轉移方程。

計算狀態轉移方程的方法:

1、遞迴計算。

用直接遞迴的方法計算狀態轉移方程,效率往往十分低下。其原因是相同的子問題被重複計算了多次。

2、遞推計算。

遞推的關鍵是邊界和計算順序。

3、記憶化搜尋。

不必事先確定各狀態的計算順序,但需要記錄每個狀態「是否已經計算過」。

動態規劃基礎:dag上的動態規劃

1、矩陣巢狀。(看清題意,是<,不是<=)

2、硬幣問題。

多階段決策問題

dag看成多階段決策問題就是,每走一步對應乙個階段,這一步可以選擇那幾條路徑對應幾個決策。

多階段決策的最優化問題往往可以用動態規劃解決,狀態及狀態轉移類似於解答樹,階段就是解答樹中的層數,幾個決策對應幾個分支。

1、多段圖的最短路。

2、0-1揹包問題。

更多經典模型

1、線性結構上的動態規劃。

1>最長上公升子串行問題。

2>最長公共子串行問題。

2、樹上的動態規劃。

1>樹的最大獨立集。

2>樹的重心。

3>樹的最長路徑。

3、複雜狀態的動態規劃。

1>最優配對問題。

2>貨郎擔問題。

3>圖的色數。

動態規劃初步

基本原理 類似於遞迴解題,把問題丟給上一層來解決,找出狀態轉換方程即可。當然關鍵問題是如何定義遞迴陣列與找出狀態轉換方程。hello world 走樓梯 有n階樓梯,每次能走一步或兩步,請問有多少種走法。設f n 是n階樓梯不同的走法。則轉移到此狀態的方法有兩種,從n 1階樓梯走一步上來,或者從n ...

動態規劃初步

動態規劃的實質是通過多階段決策過程解決最優化問題,將每個問題分為若干個相互聯絡的階段,在它的每一階段都需要做出決策,這就是動態規劃與貪心演算法的區別,貪心演算法是以一種貪心規則進行最優運算,但往往得到的結果並不是問題的最優解,而動態規劃則不同,動態規劃是每一步都有乙個決策,保證了最優解是我們要找的整...

動態規劃初步探索

下面用乙個很簡單的例子來具體說明一下dp問題的解題過程。題目如下 描述在乙個星期三的早上,某同學想用扔硬幣的方式來決定是否要去上演算法課。他扔 n 次硬幣,如果當中有連續 m 次以上 含 m 次 的結果都是正面,那麼他就去上課,否則就接著睡覺。假設每次扔硬幣扔出的正反兩面的概率都是 0.5。輸入 輸...