背包问题讲解文稿.ppt

上传人:b****2 文档编号:2141466 上传时间:2022-10-27 格式:PPT 页数:15 大小:551.50KB
下载 相关 举报
背包问题讲解文稿.ppt_第1页
第1页 / 共15页
背包问题讲解文稿.ppt_第2页
第2页 / 共15页
背包问题讲解文稿.ppt_第3页
第3页 / 共15页
背包问题讲解文稿.ppt_第4页
第4页 / 共15页
背包问题讲解文稿.ppt_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

背包问题讲解文稿.ppt

《背包问题讲解文稿.ppt》由会员分享,可在线阅读,更多相关《背包问题讲解文稿.ppt(15页珍藏版)》请在冰豆网上搜索。

背包问题讲解文稿.ppt

2022/10/27算法案例算法案例0-1背包问题背包问题通信四班刘蕾、文艺蓉、周家欣2022/10/272/150-10-1背包问题背包问题问题描述:

给定n种物品和一背包。

物品i的重量是wi,其价值为vi,背包的容量为c。

问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大?

0-1背包问题:

对每种物品i装入背包或不装入背包。

不能将物品i装入背包多次,也不能只装入部分的物品i。

2022/10/273/150-10-1背包问题背包问题解空间:

设Xi表示第i件物品的取舍,1代表取,0代表舍,搜索的空间为n元一维数组(X1,X2,X3,,Xn)取值范围:

为(0,0,0,0,0),(0,0,0,0,1),(0,0,0,1,0),(0,0,0,1,1),(1,1,1,1,1)。

2022/10/274/150-10-1背包问题背包问题解空间图示:

以3个物品为例,解(0,1,0)表示(不取物品0,取物品1,不取物品2)root1001010100012022/10/275/150-10-1背包问题背包问题问题转化:

给定c0,wi0,vi0,1in,要求找出一个n元0-1向量(x1,x2,xn),xi0,1,1in,使得wixic,而且vixi达到最大。

2022/10/276/150-10-1背包问题背包问题由0-1背包问题的最优子结构性质,可以建立计算m(i,j)的递归式如下:

设所给0-1背包问题的子问题的最优值为m(i,j),即m(i,j)是背包容量为j,可选择物品为i,i+1,n时0-1背包问题的最优值。

第第i+1个物品不装入背包个物品不装入背包第第i+1个物品装入背包个物品装入背包第第i+1个物品无法装入背包个物品无法装入背包2022/10/277/150-10-1背包问题背包问题vvoidKnapsack(intv,intw,intc,intn,intm)vintn=v.length-1;vintjMax=Math.min(wn-1,c);vfor(j=0;j=jMax;j+)mnj=0;vfor(j=wn;j1;i-)vintjMax=Math.min(wi-1,c);vfor(j=0;j=jMax;j+)mij=mi+1j;vfor(j=wi;j=w1)m1c=Math.max(m1c,m2c-w1+v1);vM,横坐标表示所放物品号码,纵坐标表示横坐标表示所放物品号码,纵坐标表示背包容量背包容量1到到C,值表示当前考虑方案的价值,值表示当前考虑方案的价值不选择第不选择第i个物品个物品如何可以装下(重量允许)如何可以装下(重量允许)选择价值更大的方式(装入选择价值更大的方式(装入or不装入)不装入)处理边界情况处理边界情况处理边界情况处理边界情况2022/10/278/150-10-1背包问题背包问题012345678910w1=2v1=61w2=2v2=32w3=6v3=53w4=5v4=44w5=4v5=650问题实例:

有5个物品,其重量分别是2,2,6,5,4,价值分别为6,3,5,4,6,背包的容量为10。

mij表示把第i,.,n物品装入容量为j的背包的最大价值2022/10/279/150-10-1背包问题背包问题012345678910w1=2v1=61w2=2v2=32w3=6v3=53w4=5v4=44w5=4v5=650问题实例:

有5个物品,其重量分别是2,2,6,5,4,价值分别为6,3,5,4,6,背包的容量为10。

000000006666666666666m5=4=6m5=4=6mij表示把第i,.,n物品装入容量为j的背包的最大价值intjMax=Math.min(wn-1,c);for(j=0;j=jMax;j+)mnj=0;for(j=wn;j1;i-)intjMax=Math.min(wi-1,c);for(j=0;j=jMax;j+)mij=mi+1j;for(j=wi;j=c;j+)mij=Math.max(mi+1j,mi+1j-wi+vi);2022/10/2711/150-10-1背包问题背包问题012345678910w1=2v1=61w2=2v2=32w3=6v3=53w4=5v4=44w5=4v5=650问题实例:

有5个物品,其重量分别是2,2,6,5,4,价值分别为6,3,5,4,6,背包的容量为10。

000066669999121212121515151515150000333366669999991010111100000000666666666610101111000000006666666666101010100000000066666666666666mij表示把第i,.,n物品装入容量为j的背包的最大价值2022/10/2712/150-10-1背包问题背包问题vvoidKnapsack(intv,intw,intc,intn,intm)vintn=v.length-1;vintjMax=Math.min(wn-1,c);vfor(j=0;j=jMax;j+)mnj=0;vfor(j=wn;j1;i-)vintjMax=Math.min(wi-1,c);vfor(j=0;j=jMax;j+)mij=mi+1j;vfor(j=wi;j=w1)m1c=Math.max(m1c,m2c-w1+v1);vm,横坐标表示背包号码,纵坐标表示背包横坐标表示背包号码,纵坐标表示背包容量容量1到到C,值表示当前考虑方案的价值,值表示当前考虑方案的价值背包容量背包容量0-wn-1,该物品装不下,该物品装不下n个物品个物品背包装不下物品背包装不下物品n,此时考虑物品,此时考虑物品n装入方法最大价值装入方法最大价值为零为零背包能装下物品背包能装下物品n,物品,物品n装入方法最大价值为装入方法最大价值为vn背包不能装下物品时背包不能装下物品时背包能装下物品时背包能装下物品时图示图示隐藏隐藏2022/10/27Traceback求最优解求最优解TemplateVoidTraceback(Type*m,intw,intc,intn,intx)for(inti=1;in;i+)if(mic=mi+1c)xi=0;elsexi=1;c-=wi;xn=(mnc)?

1:

0;13/15按照按照KnapsackKnapsack计算后计算后m1cm1c给出的为给出的为0-10-1背包问题的最优值,然后按背包问题的最优值,然后按照上述照上述TracebackTraceback算法构造出最优解算法构造出最优解(x1,x2,x3,(x1,x2,x3,xn),xn)。

2022/10/2714/150-10-1背包问题背包问题Traceback回溯过程:

012345678910w1=2v1=61w2=2v2=32w3=6v3=53w4=5v4=44w5=4v5=650006699121215151500336699910110000666661011000066666101000006666666综上所述:

本例中最大价值为综上所述:

本例中最大价值为15,最优解向量为,最优解向量为(1,1,0,0,1)11001if(mic!

=mi+1c)xi=1;c-=wi;if(mic!

=mi+1c)xi=1;c-=wi;if(mic=mi+1c)xi=0;if(mic=mi+1c)xi=0;xn=(mnc)?

1:

0;2022/10/2715/15Thanku

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1