算法思想
求解的问题是多阶段决策(优化)问题
求解过程是多步判断
划分子问题的边界,从小的子问题开始,逐层向上求解,通过子问题之间的依赖关系,有效利用前面已经得到的结果,最大限度减少重复工作,以提高算法效率。(记忆子问题的结果,自底向上,以空间换时间)
使用条件
满足最优原则或最优子结构性质(一个最优决策序列的任何子序列本身一定是相对于子序列的初始和结束状态的最优的决策)
典型应用
- 投资问题
- 背包问题(例题)
- 最长公共子序列LCS
- 图像压缩
- 最大子段和
- 最优二分检索树
tips
- 动态规划问题往往需要构造二维备忘录,利用一定的技巧可以将其转化为一维以提高运行效率,节省内存空间。