求解动态规划问题
在应用动态规划之前,要分析能否把大问题分解成小问题,分解后的每个小问题也存在最优解。如果把小问题的最优解组合起来能够得到整个问题的最优解,那么就可以考虑应用动态规划解决这个问题。
特点
- 动态规划可帮助你在给定约束条件下找到最优解。如在背包问题中,你必须在背包容量给定的情况下,偷到价值最高的商品。
- 在问题可分解为彼此独立且离散的子问题时,就可使用动态规划来解决。
- 问题的目标是求问题的最优解;
- 整体问题的最优解依赖于各个子问题的最优解(最优子结构);
- 把大问题分解成若干个小问题,这些小问题之间还有相互重叠的更小的子问题(重叠子问题);
- 从上往下分析问题,从下往上解决问题。(求解方法)
关键:找到从上到下的迭代表达式
通用特点
- 每种动态规划解决方案都涉及网格。
- 单元格中的值通常就是你要优化的值。如在背包问题中,单元格的值为商品的价值。
- 每个单元格都是一个子问题,因此你应考虑如何将问题分成子问题,这有助于你找出网
格的坐标轴。
确定网格
- 单元格中的值是什么?
- 如何将这个问题划分为子问题?
- 网格的坐标轴是什么?