动态规划算法
1、动态规划算法:
1)求解过程使用多阶段决策过程,每一步处理一个子问题,可用于求解组合优化问题;
2)适用条件:问题需要满足优化原则或最优子结构性质,既:一个最优决策序列的任何子序列本身一定是相对于子序列的初试和结束状态是最优决策序列。
2.动态规划设计要素:
1)问题建模:优化的目标函数是什么,约束条件是什么?
2)如何划分子问题(边界)?
3)问题的优化函数值与子问题的优化函数值存在的依赖关系?
4)是否满足优化原则?
5)最小子问题该如何界定?其优化函数值,即初值是什么?
3、动态规划的递归实现:
1)与蛮力法相比,动态规划算法利用了子问题优化函数间的依赖关系,时间复杂度有所降低;
2)动态规划算法的递归实现效率不高,原因在于同一个子问题在递归中多次重复的出现,每一次出现都得重复计算;
3)采用空间换时间的策略,记录每一个子问题首次计算结果,后面再用时就直接取值,每一个子问题只计算一次。(相当于空间换时间)
4、动态规划的迭代的实现:
1) 每一个问题只计算一次;
2)迭代的顺序
-从最小子问题计算;
-考虑计算顺序,以保证后面用到值,在前面以及计算出来存储;
-存储结构保存计算结果;
3)解的追踪:
-设计标记函数标记每步的决策;
-考虑根据标记函数追踪的算法;(相当于每一步是什么,可以回溯)
k-
有梦而生,一行无憾!