python算法----动态规划(以背包问题为案例)

今天我们来学习一下动态规划,以为这个概念比较抽象,所以我们将结合具体的案例进行讲解,废话不多说,我们开始吧! 😃

动态规划的概念:

多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义,称这种解决多阶段决策最优化问题的方法为动态规划方法

背包问题的案例讲解:

在这里插入图片描述
背包问题:你是一个小偷,你有一个可以装下4磅物品的袋子,现在有音响,笔记本电脑和吉他可以偷,怎样偷才可以偷最大价值的物品?

第一种方法:尝试各种商品的组合,找出价值最高的组合
1.吉他 1500 2.音响 3000 3.笔记本电脑 2000 4.吉他+笔记本电脑 3500
最后找到价值最大的组合是笔记本电脑+吉他,这样虽然可行,但是速度太慢了,运行时间为O(2的n次方)

第二种方法:动态规划
动态规划的工作原理就是先解决子问题,然后再逐步解决大问题每个动态规划都先从一个网格开始,以下是这个问题的网格,网格的各行为商品,各列为不同容量(1~4磅)的背包,每个列都需要,我们会在其中计算背包的价值
在这里插入图片描述
在每个单元格中,我们都得选择偷不偷该行的物品,每个单元格都要让背包中的商品的价值最大,填充每个单元格,直到填满就会找到最终的答案
吉他行:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值