算法複習筆記(五)-動態規劃

目錄 :

1.概念

2.組合中的動態規劃

 

1.概念:

1.1.最優解問題其實是,多階段決策過程,其中我們會接觸到

    約束條件-》滿足約束條件的可行解-》滿足目標函數的可行解是最優解-》因此解決我們的最優化問題

過程:

    (1)劃分成若干個階段

    (2)每個階段的決策僅依賴於前一階段的狀態,期間的狀態轉移也將作爲下一次決策的依據

1.2動態規劃的設計思想:

        (1)劃分子問題:每個子問題對應一個決策階段

        (2)確定動態規劃函數:子問題的重疊關係表現在對給定問題求解的遞推關係

        (3)填寫表格

 

例子: 計算斐波那契:

           數塔問題(重點):

            下面將以這例子作爲典型例子進行分析:

                (1)階段劃分:       每層爲一個階段

                (2)計算方法:由第5層計算出第四層中的最大值:

                    21(2+19),28(18,10),19(9,10),21(5,16)

                以此類推最後1階數塔問題,就是整個問題的最優解

 

代碼如下:

動態規劃算法實現:

 

遞歸算法實現:(美化代碼。。。)

 

 

2.組合中的動態規劃

2.1最大子段和

2.2最長公共子序問題:

    組合問題中的動態規劃中的經典題目:

上代碼。上算法設計。

算法分析:

3.0/1揹包問題

 

附加的題目:

錢幣兌換問題

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