动态规划之0/1背包问题 |
您所在的位置:网站首页 › 填表格怎么填 › 动态规划之0/1背包问题 |
题目: 下面开始正式填表格啦! 首先,面对只有0个物品,或者背包容量为0的时候,是不可能放入任何东西的,所以这里(0,j)和(i,0)均填0。 01234567891000000000000w1=2v1=610w2=2v2=320w3=6v3=530w4=5v4=440w5=4v5=650接着,从这里开始,我们要从上到下,再从左到右的填表了。 面对(1,1),物品1重量为2,放不下,填0,纵观一整列,没有重量为1的物品,所以面对背包为1的这一列,都填0. 01234567891000000000000w1=2v1=6100w2=2v2=3200w3=6v3=5300w4=5v4=4400w5=4v5=6500面对(1,2),套用递推式,2 >= w1, 使用第2个式子, V ( 1 - 1 , 2 ) = 0 V(1-1,2-2)+ v1 = 6 选这两个更大的一个,故此处填6。翻译过来就是:物品1重量为2,可以放进背包容量为2的背包,其价值为6。以下我们省略翻译部分,直接套公式。 01234567891000000000000w1=2v1=61006w2=2v2=3200w3=6v3=5300w4=5v4=4400w5=4v5=6500接着是(2,2),套用递推式,2 > = w2, 使用第2个式子, V ( 2 - 1 , 2 ) = 6 V(1 - 1 , 2 - 2 )+ v2 = 3 选这两个更大的一个,故此处填6。 对于(3 ,2),因为 2 < w3 , 所以使用第1个式子 V(3-1,2)= 6 故此处填6。 剩下的物品4和物品5重量都大于背包容量,同(3,2)。 01234567891000000000000w1=2v1=61006w2=2v2=32006w3=6v3=53006w4=5v4=44006w5=4v5=65006不知道通过上面的示例你发现没有,使用第一个式子,就是直接复制正上方的数字,使用第二个式子则需要根据具体情况计算,把正上方的数字和具体物品计算的结果进行比较,由此一来,就方便多了。 下面我先填了简单的数据,再举1个例子就结束填表教程。 01234567891000000000000w1=2v1=610066666w2=2v2=320066999w3=6v3=530066999w4=5v4=440066999w5=4v5=65006699面对(5,6),由于 6 > = w4 ,故使用第2个式子,把正上方的数字 9 和 【正上方减去wi个单位的数字,再加上当前要放入的物品重量比较】,即: V(i-1 , j-4)+ 6 = 12 故此处填12. 01234567891000000000000w1=2v1=610066666w2=2v2=320066999w3=6v3=530066999w4=5v4=440066999w5=4v5=6500669912如法炮制,同学们自己动手填一填吧,然后再对照答案。 接下来我们就要通过回溯来判断出我们都把什么物品放进了背包,请听下回分解! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |