01背包

作者: wncbbnk | 来源:发表于2018-03-10 21:11 被阅读0次

1. 问题

给定背包承重W,对于n件物品(每件物品重量wi,价值vi),在背包的承重范围内,可以带走的物品价值总和最大是多少。

2.

对于第i件物品,有两个选择,要么装入背包,要么不装入背包。
我们用V(i, j)表示,对于i件物品,在背包承重为j的情况下,可以带走的最大物品价值总和。
V(i, j),对于第i件物品,有如下几种情况:

1. 背包承重j<wi(物品i的重量大于背包的总承重),这种情况下肯定放不进去。可以认为:

V(i, j)=V(i-1, j)

2. 背包承重j可以承受wi,此时,有两种情况:

将物品i放进去V(i, j)=V(i-1, j-wi)+vi
物品不放进去V(i, j)=V(i-1, j)
此时V(j, j)=max(V(i-1, j-wi)+vi, V(i-1, j))

3.实例

i, j, vi, wi

if j<wi{
    V(i, j)=V(i-1, j)
}else{
    V(i, j)=max{V(i-1, j-wi)+vi, V(i-1, j)}
}

物品id 物品重量 物品价值
1 2 3
2 3 4
3 4 5
4 5 6

背包承重8

物品id 物品重量 物品价值
1 2 3
2 3 4
3 4 5
4 5 6
数列物品个数 横列背包承重 0 1 2 3 4 5 6 7 8
0 0 0 0 0 0 0 0 0 0
1(2, 3) 0 0(说明1) 3(说明2) 3(说明3) 3 3 3 3 3
2(3, 4) 0 0(说明4) 3说明(5) 4说明(6) 4 7 7 7 7
3(4, 5) 0 0 3 4 5 7 8 9 9
4(5, 6) 0 0 3 4 5 7 8 9 10

(说明1): 物品1重量为2,承重为1的背包显然放不下

j=1, w1=2
j<w1
V(1,1)=0

(说明2): 物品1重量为2,承重为2的背包可以放下
j=2, w1=2
j>=w1
V(1, 2)=max{V(1-1, 2-w1)+v1, V(0, 1)}=max{V(0, 2-2)+v1, V(0, 1)}={0+3, 0}=3

(说明3):
j=3, w1=2
j>=w1
V(1, 3)=max(V(0, 3-2)+v1, V(0, 3))={0+3, 0}=3

(说明4):
j=1, w2=3
j<w2
V(2, 1)=V(1, 1)=0

(说明5):
j=2, w2=3
j<w2
V(i, j)=V(i-1, j)
V(2, 2)=V(1, 2)=3

(说明6):
i=2, j=3, w2=3
j>=w2
V(i, j)=max{V(i-1, j-wi)+vi, V(i-1, j)}
V(2, 3)=max{V(1, 3-3)+4, V(1, 3)}=max(0+4, 3)=4

相关文章

  • 算法模板(一) 01背包,多重背包,完全背包

    01背包 多重背包 完全背包

  • 动态规划-背包问题

    01背包问题 详解:01背包问题详解链接

  • DP小结

    DP种类 线性DP 区间DP 树形DP 背包DP01背包满背包完全背包(转成01背包) 例子:线性动规:拦截导弹,...

  • java算法巩固训练day01

    01背包 完全背包 多重背包 多重背包二进制优化算法

  • 动态规划-混合、二维费用、分组背包

    混合背包 如果将01背包、完全背包、多重背包三个背包混合起来,也就是说,有的物品只可以取一次(01背包),有的物品...

  • 01-背包、完全背包、多重背包及其相关应用

    本文介绍了背包问题系列,主要包括: 【1】 01-背包及其应用【2】完全背包及其应用【3】多重背包 【1】01-背...

  • 01 01背包

  • 01背包

    题目: 有N种物品(每种物品只有一件)和一个容量为V的背包。放入第i件物品耗费的费用为Ci,得到的价值是vi,求解...

  • 01背包

    01背包的问题很早就想写了,但是因为一些意外的事情耽搁了下来今天补习一下01背包问题的计算过程。首先,01背包的问...

  • 01背包

    1. 问题 给定背包承重W,对于n件物品(每件物品重量wi,价值vi),在背包的承重范围内,可以带走的物品价值总和...

网友评论

      本文标题:01背包

      本文链接:https://www.haomeiwen.com/subject/vargvxtx.html