Dynamic programming(动态规划)

Posted by HK on March 17, 2019

动态规划

动态规划的定义

动态规划是求解决策过程最优化的数学方法,即把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解。(有点类似于数列求解通项的过程)

动态规划一般应用于要求一个问题的最优解(通常是最大值或者最小值),而且该问题能够分解成若干个子问题,并且小问题之间也存在重叠的子问题

求解动态规划类问题步骤

  1. 判题题意是否为找出一个问题的最优解。
  2. 从上往下分析问题,大问题可以分解为子问题,子问题中还有更小的子问题。
  3. 从下往上分析问题 ,找出这些问题之间的关联(状态转移方程)。
  4. 讨论底层的边界问题。
  5. 解决问题(通常使用数组进行迭代求出最优解)。

动态规划算法的核心是记住已经求过的解,记住求解的方式有两种:①自顶向下的备忘录法 ②自底向上