算法复习笔记(五)-动态规划

目录 :

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揹包问题

 

附加的题目:

钱币兑换问题

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