核心算法是记住已求过的解
两个大方向
- 自顶向下备忘录法:
直接处理问题,如果子问题未解决,递归进去解决然后记录
缺点是用了递归,递归会带来额外的开销 - 自底向上:
切分为子问题,先解决子问题序列,原问题的结果会在子问题序列最后自然的解决
适用问题:
- 最优子结构+无后效性:贪心算法可得最优解——拟阵(嵌套、包含封闭)+子问题的决策结果全由状态表示,不同决策过程(得到相同状态)对后续无影响
- 重叠子问题:反复递归重复求解相同的子问题:用保存+查表代替
经典模型:
- 线性模型:钢条切割
区间模型,背包模型(待续)
网友评论