再谈背包问题(涉及思想层面)

背包问题的本质:穷举背包的容量和可供选择的物品(物品),取得最优解,只不过在穷举的过程中,只去考虑可能会取得最优解的地方,不能取得最优解的不考虑。
思想便是用每一个可执行的动作(或者物品)去更新当前的状态
某物品在取或者不取的时候用的是前面的状态
那么如何证明当前的状态一定正确呢?
1.状态的转移正确(状态转移方程正确)
2.之前的状态正确(最优解)

那么为什么背包问题的求解要从最大的背包容量数开始,
那是因为大的背包容量的状态会因小的背包容量最优解的选择而更新,当前只能控制一件物品
打个比方,如排队,后来的人得要排在后面,而排在后面的位置又取决于之前队伍的长度,如果插队了,不就直接乱了阵型了吗?
讲了这些,再去讲讲背包中价值最大化问题,
如果每一件物品的价值是固定的,那么我们便可以在穷举的时候找到每一件物品最应该在背包容量为几的时候被选择,即默认从最优的物品开始选择
但是如果每一件物品的价值会随着背包容量的大小而变化
如果仅是简单的逆推01背包
我们无法知道应该在何时才能选择到最优的物品,因此无法得到正确的答案,因此得要根据题目制定策略优先选择最优的物品,说白了还是得要具体情况具体分析,一般而言还是得通过适当的排序后再利用背包逆推来解决,不过此时正确答案就不一定是容量最大的时候那个解了(因为容量最大的时候所选择的物品的价值不一定是最优解,想一想,为什么)
后续可能会继续更新该篇章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值