动态规划算法总结
来源:互联网 发布:凯尔萨斯 知乎 编辑:程序博客网 时间:2024/06/06 08:58
1、基本概念
动态规划是一种求解多阶段决策(优化)问题的算法设计技术,
其主要思想是:将原问题规约为规模较小、结构相同的子问题,建立原问题与子问题优化函数间的依赖关系。
从规模最小的子问题开始,利用上述依赖关系求解规模更大的子问题,直到得到原始问题的解为止。
动态规划算法的适用条件
适用于求解多阶段决策(优化)问题,该问题的解可以表示为一个决策序列,且满足优化原则(或最有子结构性质),即:一个最优序列的任何子序列本身一定是相对于子序列的初始和结束状态的最优决策序列。
动态规划算法的主要设计步骤:
- 写出所要求解得组合优化问题的目标函数和约束条件;
- 确定子问题的结构和边界,将问题求解转变成多步判断的过程;
- 定义优化函数,以该函数的极大值或者极小值作为判断的依据,确定是否满足优化原则;
- 列出有关优化函数的递推关系和边界条件;
- 根据问题的解的不同情况,考虑是否需要设立标记函数;
- 从初值开始,自底向上计算每个子问题的优化函数值(有的需要同时计算标记函数),并以备忘录得方式存储所有的中间结果;
- 如果有标记函数,则根据标记函数逐步追踪问题的解。
2、时间复杂度的分析方法
时间复杂度取决于备忘录(包括优化函数及标记函数)中每个项的计算工作量,以及用标记函数追踪解得工作量。
大多数情况下,追踪解得工作量不超过优化函数计算的工作量,因此可以根据递推关系确定备忘录中每个项的计算工作量,然后对这些工作量求和。
3、典型的动态规划算法
- 矩阵链相乘
- 背包问题
- 最长公共子序列
- 图像压缩
- 最大子段和
- 最优二分检索树
0 0
- 动态规划算法总结
- 【算法总结】动态规划
- 动态规划算法总结
- 动态规划算法总结
- 动态规划算法总结
- 算法:动态规划总结
- 算法_动态规划总结
- 算法动态规划个人总结
- 算法之动态规划总结
- 【算法知识总结】动态规划
- 关于动态规划算法的总结
- 关于动态规划算法的总结
- 【算法总结】Dynamic Programming 动态规划
- 专题三-动态规划算法总结
- 动态规划算法总结及实例简介
- 动态规划算法——知识点总结
- 【算法导论】贪心算法,递归算法,动态规划算法总结
- 贪心算法,递归算法,动态规划算法比较与总结
- Contains Duplicate III
- 计算机网络会议和期刊
- tomcat结合nginx使用小结
- Hadoop搭建过程中出现的问题
- 【华为OJ】表示数字
- 动态规划算法总结
- 一位软件工程师的6年总结
- c++输入文件处理按行读取并且将实现对一行数据分别处理
- DP46道 - 第21题 - 拦截系统 两种算法 DP/模拟
- iOS 定制手机通讯录(2)
- C++环形矩阵填充实现
- Oracle学习(15)【DBA向】:闪回
- 登录时,将光标默认移到登录眶
- iOS 定制手机通讯录(3)