动态规划 总结

一、动态规划特点。

  1. 求解目标具有最优解。
  2. 目标问题的最优解可以分解为各个子问题的最优解。
  3. 大问题分解为若干小问题后,这些小问题之间还有相互重叠的更小的子问题。
  4. 从上往下分析问题,从下往上求解问题。

    PS:总结于 《剑指offer》author:何海涛

二、动态规划条件。

  1. 优化子结构。即一个问题的优化解包含子问题的优化解。作用:可以缩小子问题集合;保证了可以从下而上求解问题呢
  2. 重叠子问题。子问题解可以多次使用。作用:加速求解。保证有效性
  3. 子问题空间小。

三、动态规划的设计步骤

  1. 分析优化解结构。看是否能有动态规划(依据其条件)
  2. 递归定义最优解的代价。描述这个问题最优解与子问题最优解的关系。
  3. 自下而上计算优化解的代价并保存,并获得构造最优解的信息。
  4. 根据保存信息构造优化解。

四、动态规划例子。

动态规划 总结

1.分析优化解结构。看是否有优化子结构。

动态规划 总结

2.分析重叠子问题。(举例子看看)

动态规划 总结

3.递归定义最优解代价。

动态规划 总结

动态规划 总结

 

4.设计数据结构(足以容纳所需要的解)

动态规划 总结

动态规划 总结

填充方法:(从对角线开始像目标推进)

动态规划 总结

动态规划 总结

动态规划 总结

伪代码:

动态规划 总结

动态规划 总结动态规划 总结

输出:

动态规划 总结动态规划 总结

 

 

 

 

源于哈工大课程《算法设计与分析》 主讲人:王宏志