关于背包九讲01背包中的常数优化

来源:互联网 发布:言而当知也 编辑:程序博客网 时间:2024/06/16 10:24

关于背包九讲01背包中的常数优化

for i ← 1 to N    for v ← V to Ci

优化为

for i ← 1 to N    for v ← V to max (V−key, Ci )

其中key=niCi

这里的max优化就是考虑了这样一种情况:
即使后面(i…n)的所有物品都被装入背包后,剩余的空间仍然比 Ci 大

我们知道空间优化后的一维数组中的状态转移方程如下
dp [v] ← max (dp [v], dp [v − C] + W )
我们是不断通过比较上一轮的dp结果进行状态转移
进一步的,如果满足优化条件
那么对于 i+1...n 的情况 这里的 v-C 将最多取值取到 keykey to Ci 的不会被取到也就没有计算的必要了


这个优化对V比较大是效果显著

0 0