【贪心算法】背包问题–可分割

【问题描述】

给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 ,价值wi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。

有两类背包问题(根据物品是否可以分割),如果物品不可以分割,称为0—1背包问题(动态规划);如果物品可以分割,则称为背包问题(贪心算法)。

【算法分析】
假设背包的容量为50,有3个物品:
有3种方法来选取物品: (1)当作0—1背包问题,用动态规划算法,获得最优值220; (2)当作0—1背包问题,用贪心算法,按性价比从高到底顺序选取物品,获得最优值160。由于物品不可分割,剩下的空间白白浪费。 (3)当作背包问题,用贪心算法,按性价比从高到底的顺序选取物品,获得最优值240。由于物品可以分割,剩下的空间装入物品3的一部分,而获得了更好的性能。
【算法分析】
数据结构:
struct bag{
int w; //物

【贪心算法】背包问题–可分割最先出现在Python成神之路

版权声明:
作者:玉兰
链接:https://www.techfm.club/p/27959.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>