動態規劃學習記錄

參考資料:

網上看了很多博客,都不是太靠譜。最後閱讀了下《運籌學第三版》(清華大學出版社),感覺裏面的內容將的比較透徹,細節上也寫的很好。

大體介紹

文中主要用動態規劃和窮舉進行比較,如下圖中的問題,從A點到G點的最短路徑。

窮舉法的話, 就要對 48 條路線進行比較, 運算在計算機上進行時,比較運算要進行 47 次;求各條路線的距離, 即使用逐段累加方法,也要進行6 + 12 + 24 + 48 + 48 = 138 次加法運算。

而動態規劃比較運算(從 k = 5 段開始向前算)共進行 3 + 3 + 4 + 4 + 1 =15 次。每次比較運算相應有兩次加法運算, 再去掉中間重複兩次(即 B 1 →C 1 , B 2 → C 4 各多算了一次) , 實際只有 28 次加法運算。可見, 動態規劃方法比窮舉法減少了計算量。而且隨着段數的增加,計算量將大大地減少。

具體是如何減少的呢?

窮舉法每次選擇一條線路,從前算到尾,一共算了48條線路,最後比較48條線路的結果。而動態規劃是從後往前算,先算k=5階段哪個點是最優點,再算k4階段哪個是最優點,一步一步最後將最優點連接起來,減少了重複的計算。

動態規劃的使用的場景和其最優性

基本思想:如果由起點 A 經過 P 點和 H 點而到達終點 G 是一條最短路線,則由點 P 出發經過 H 點到達終點 G 的這條子路線, 對於從點 P 出發到達終點的所有可能選擇的不同路線來說,必定也是最短路線。基於這個思路就可以推導出動態規劃的思路,從後往前反推最優解。

使用場景的話,那必然就是符合基本思想中所提到的條件了。

具體細節

見原文

缺點

假如最後面的節點太多了的話,就會很耗費內存。比如一個樹形無環圖,最後的枝葉節點會非常非常多,而從枝葉開始往前算也會很複雜,也就是相比於直接窮舉快了很多而已。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章