【动态规划】0-1背包递推式的剖析(通俗易懂)

(如有错误,恳请斧正)
递推式如下:
在这里插入图片描述

vi是第i件物品的价值,wi是第i件物品的所占空间。

m(i,j) 代表的含义是:目前只考虑第1到第i件物品放入总容量为j的背包所获得的最大价值。(背包总容量不可变并且千万不要误认为j是背包的剩余容量,第1到第i件物品都可以选择放或者不放入背包)。

现在我们考虑把第i件物品放入背包的决策方法:
①如果背包的总容量j小于第i件物品的所占空间,那么即使把背包里原来已经装入的所有东西都倒出来也放不进第i件物品,故此时所能获得的最大价值与只考虑第1到第i-1件物品放入总容量为j的背包所获得的最大价值相同。(i件物品考虑了个寂寞~

②如果背包的总容量j大于等于第i件物品的所占空间,此时有两种策略,一是不把第i件物品放入背包中,所以这种情况获得的最大价值与m(i-1,j) 相同。二是把第i件物品放进背包,若进行这种策略,那么总容量为j的背包必须分配wi的空间给第i件物品,相当于第1到第i-1物品是只能放在总容量为j-wi的背包中,这种策略获得的价值就是m(i-1,j-wi)+vi。综上,第②种情况就要在m(i-1,j)m(i-1,j-wi)+vi中选个价值大的。

对于0-1背包填表的问题,就是按照上述思路从上到下,从左至右依次完成。例如在这里插入图片描述
图转载于【动态规划】01背包问题(通俗易懂,超基础讲解)_Yngz_Miao的博客-优快云博客_01背包
表格第i行,就是背包总容量在0~8变化时,只考虑放入第1到第i件物品所获得的最大价值。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值