目录 :
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背包问题
附加的题目:
钱币兑换问题