Bin Packing还是背包?

时间:2014-06-18 22:12:07

标签: algorithm knapsack-problem bin packing

我对自己的任务有一些问题。我一直在搜索stackoverflow和其他网站,看看我正在处理哪种问题,结果发现我不确定它是背包问题还是垃圾箱问题。这就是问题所在:

一位老太太买了N种产品,每种产品都有不同的重量(kg),她想把它全部装进一个可以容纳K kg的袋子里。找到权重总和尽可能接近K的对象集。

3 个答案:

答案 0 :(得分:3)

这是背包问题的一个特例,其中每个项目的值等于其重量。 (在一般的背包问题中,您可能最大化问题所定义的所有对象的总“值” - 可能是物理问题中的货币价值,或者在安排程序或任务时对用户的需求。)

来自维基百科,

  

当垃圾箱数量限制为1且每个物品都以体积和数值为特征时,最大化可装入垃圾箱的物品价值的问题称为背包问题。

所以你可以认为它是bin-packing的一个特例(“volume”是项目的重量)。

答案 1 :(得分:3)

这是背包问题的简单案例。一般来说,这些项目同时具有权重和值,并且要求您查找总权重适合且总值最大化的项目;在您的情况下,该值等于重量。

垃圾箱包装问题要求将所有物品放入尽可能少的垃圾箱中。

您可能会遇到类似但更困难的问题,例如选择要放入可能不同尺寸的固定容器组中的物品。我不认为这个问题有个名字。

答案 2 :(得分:3)

一方面,Knapsack problem的定义通常如下:

  

给定一组具有质量和值的项目,确定要包含在集合中的每个项目的数量,以使总权重小于或等于给定限制,并且总值为尽可能大

另一方面,Bin packing problem通常以这种形式定义:

  

不同卷的对象必须以最小化使用的箱数的方式打包到每个卷V的有限数量的箱或容器中。

所以,据我所知,你的问题是背包问题。

我没有花很多精力回答你的问题,因为它是来自维基百科的复制粘贴,你可以通过阅读我给你的链接来做。