动态规划与分治法
1 动态规划
动态规划的特点
- 把原始问题划分为一系列子问题
- 求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时到时直接存取,不重复计算,节省计算时间
- 自底向上地计算
动态规划的核心思想
- 动态规划算法的核心就是记住已经解决过的子问题的解,后续问题不断查找之前的解得到答案
动态规划的使用范围
- 一类优化问题:可分为多个相关子问题,子问题的解被重复使用
动态规划的设计步骤
- 分析优化解的结构
- 递归地定义最优解的代价
- 自底向上地计算优化解的代价保存之,并获取构造最优解的信息
- 根据构造最优解的信息 构造优化解 (核心关键) (即获取状态转换函数)
动态规划的常用案例
- 编号动态规划:输入为 x1, x2, …, xn,子问题是 x1,x2, …, xi 子问题复杂性为O(n)
(最大不下降子序列问题) - 划分动态规划:输入为x1,x2,…,xn,子问题为xi,xi+1