动态规划小结

动态规划的思维其实就是递推的思维,而记忆型递归擅长解决重叠子问题不重复求解。

动态规划用于解决多阶段决策最优化问题
  三要素:阶段 状态 决策。
  两个条件:最优子结构(最优化原理),无后效性:当前状态是前面状态的完美总结

动规解题的一般思路:

  是否可以用动态规划,否则用搜索。
  模型匹配:多做经典题目,掌握经典模型。
    一维:上升子序列模型,背包模型。
    二维:最长公共子序列问题。
  寻找规律:规模由大到小,或者由小到大,做逐步分析。
  放宽条件或增加条件。

动规解题的一般过程:

  找到过程演变中变化的量(状态),以及变化的规律(状态转移方程)。
  确定一些初始状态,通常需要dp数组来保存。
  利用状态转移方程,推出最终答案。

动规解题的解法:

  自顶向下,递归。如果有重叠子问题,带备忘录。
  自底向上,递推。

贪心算法和动态规划:

  可以用局部最优解来推导全局最优解,即动态规划。
  贪心:这一阶段的解,由上一阶段直接推导出。
  动态规划:当前问题的最优解,不能从上一阶段子问题简单得出,需要前面多阶段多层子问题共同计算出,因此需要保留历史上求解过的子问题及其最优解。

原文地址:https://www.cnblogs.com/xiaoyh/p/10371384.html