考虑下述背包问题的实例。有5件物品,背包容量为100。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考虑下述背包问题的实例。有5件物品,背包容量为100。相关的知识,希望对你有一定的参考价值。

为何61选C,考虑0/1背包问题,不是可以放入2,3,4物品总价值为605吗,为什么不选A?

参考技术A 贪心算法,在对问题求解时总是做出在当前看来是最好的选择(但结果未必是最好)
典型的算法:Prim算法和Kruskal算法

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,
这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解.
典型的算法:汉诺塔,二分搜索

动态规划,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法
典型的算法:背包问题

回溯算法也叫试探法,它是一种系统地搜索问题的解的方法
典型算法:八皇后问题

按单位重量价值最大优先策略入包,就是当前看来最好(结果不一定最好)
这里采用的是贪心算法,
考虑0/1背包问题,入包的是1,2,3最大价值是430(50+200+180)
考虑部分入包的话,入包的是1,2,3,4(4入包40)最大价值是630(50+200+180+225/45*40)

2,3,4最大价值的确是605,但那不是用贪心算法计算来的
所以答案是C追问

题目问的不是考虑0/1背包问题吗?

追答

是的,按单位重量价值最大优先策略入包,这个思想是采用的是贪心算法不是动态规划,也不是回溯,考虑0/1背包(这个意思要么都入包,要么都不入)

按照贪心算法,单位价值最大的,
第一次入包的是物品1,这个时候包的价值最大50,重5
第二次入包的是物品2,这个时候包的价值最大250,重30
第三次入包的是物品3,这个时候包的价值最大430,重60
第四次,物品的重量是45,包重60,不能入包
第5五次,物品的重量是50,包重60,不能入包
完成背包,结果入包的是1,2,3最大价值是430(50+200+180)

其他算法能找出605这个解,但是贪心算法不能,我知道,上面找完一次,再从第二个物品开始再入包,依次i个物品都入找一次,结果就能找到605

本回答被提问者采纳

以上是关于考虑下述背包问题的实例。有5件物品,背包容量为100。的主要内容,如果未能解决你的问题,请参考以下文章

hdu2159二维背包

0/1 背包问题

完全背包

背包问题(0-1背包+完全背包)

动态规划 之背包问题(九讲)

动态规划总结