与分治算法相似的算法,核心:“分解的子问题,不独立、有重叠、有阶段性。”
本文参考3W学习方法来叙述内容。
一、What
1、什么是动态规划算法?
动态规划是将原问题分解为多个子问题,通过计算出子问题的结果构造一个最优解。动态规划通过迭代法自底向上求解,动态规划将分解后的子问题理解为相互间有联系,有重叠的部分;
2、动态规划算法与分治算法的比较?
- 相似点:都分解为子问题
- 不同点:分治算法的子问题相互独立,而动态规划算法中的子问题间有联系、有重叠部分(需要避免重复求解子问题)
二、Why
1、为什么需要掌握动态规划算法?
处理分治问题场景中,有重叠子问题的情况,避免重复计算。
三、How
1、 实现步骤
(1)分解子问题,分析“阶段性”
(2)定义子问题最优解,分析“阶段状态关系”
(3)自底向上求解最后一个子问题的最优解,及原问题的解