动态规划问题(DP算法)

动态规划问题

  1. 算法原理
    将复杂的问题分解成若干个简单的子问题,根据这些简单的子问题的解得到原复杂问题的解。
  2. 关键点
    找到子问题原原问题之间的关系:包括最优子结构、重复子问题
  3. 如何减小问题规模
    • 每次减小一半:二分法、折半查找
    • 每次减少一个
  4. 最优子结构
    子问题与原问题之间的关系:即原问题的最优解是由它各个子问题的最优解决定的。
    这两者之间的联系可以用状态转移方程来描述:
    在这里插入图片描述
    通过该方程便能写出递归解法
  5. 重复子问题
    子问题与子问题之间的关系:当我们求解一个子问题的最优解的时候,可能会需要用到更小的子问题,这些子问题会重叠地出现在子问题里面,则会出现很多的重复计算。
    解决此问题的方法如下:
    • 自顶向下(记忆法)
      在递归地求解子问题 f(1), f(2)… 过程中,将结果保存到一个表里,在后续求解子问题中如果遇到求过结果的子问题,直接查表去得到答案而不计算,由于递归的存在,需要额外消耗栈
    • 自底向上(迭代)
      避免了递归,而是记住每个最小问题规模的解,来避免重复计算,需要明确的迭代方向
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值