动态规划之0/1背包问题

您所在的位置:网站首页 填表格怎么填 动态规划之0/1背包问题

动态规划之0/1背包问题

2023-12-06 01:03| 来源: 网络整理| 查看: 265

题目: 在这里插入图片描述 在填表之前,你要知道0/1背包问题的递推式,才能完成下面的任务。在动态规划求解问题中,都有一个递推式,这个递推式面对不同的问题是不同的。 0/1背包问题递推式 wi代表第i个物品的重量(weight),vi代表第i个物品的价值(value),绘制表格时,横轴为背包容量 j ,纵轴为“前 i 个物品”放入背包,中间这些矩阵就填背包中物品的价值的和。

下面开始正式填表格啦! 首先,面对只有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