动态规划:01背包问题理论基础

最常见的背包问题有01背包完全背包多重背包分组背包这四种。什么是背包问题?简单来说就是:一个小偷背了一个背包潜进了金店,包就那么大,他如果保证他背出来所有物品加起来的价值最大。

01背包问题的原理(例子): 假设有3个物品(编号为0、1、2,每个物品只有一个!!!),它们有各自的价值和重量,问如何装取物品,得到最大的价值。由于每个物品都有装或不装两个状态,即01状态,所以称为01背包问题。

如图所示:其中背包最大重量为4

物品编号   物品重量 物品价值
15
320
2430

暴力破解01背包:

答:每个物品只有取、不取两个状态。那么可以用回溯算法进行暴力搜索,枚举所有的情况。对应的时间复杂度:如果有n个物品。时间复杂度就是2^n次方。(每个物品只有两个状态)

ps:回溯和深度优先的区别?

动态规划的思路解决该问题:

动态规划方法的原理就是把多阶段决策过程转化为一系列的单阶段决策问题,利用各个阶段之间的递推关系,逐个确定每个阶段的最优化决策,最终堆叠出多阶段决策的最优化决策结果。

ps:对比暴力解法,使用动态规划能提高多少性能?

参考链接:动态规划——0/1背包问题(全网最细+图文解析)_偷偷敲代码的青花瓷的博客-CSDN博客_0-1背包问题动态规划算法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值