将物品打包到固定数量的箱子中
Posted
技术标签:
【中文标题】将物品打包到固定数量的箱子中【英文标题】:Packing items into fixed number of bins 【发布时间】:2011-12-22 19:31:24 【问题描述】:我正在寻找一种能够以最有效的方式解决我的问题的算法。
问题描述:
我有一个项目列表(只允许正整数)和相同容量的固定数量的箱子。到目前为止,我考虑过分支定界算法,但我不太确定它是否是这种情况下的最佳方法。
示例:
给定一个项目列表:
(3, 4, 4, 2, 3, 9, 2)
和三个容量为 9 的垃圾箱 我需要把它们打包成这样:(物品的顺序无关紧要)
[3, 4, 2], [4, 3, 2], [9]
我认为这是装箱问题的一种变体(我知道这是 NP 完全问题),但由于我并不想尽量减少使用的箱数,我想知道是否有更好的解决方案。
【问题讨论】:
Here 是 Java 源代码的 multibin 打包问题。 【参考方案1】:这等价于装箱问题,给定多个箱子,最大化装进箱子的物品数量。
如果最佳解决方案大于或等于列表中的项目数,则该解决方案也是您的问题的解决方案。如果最佳解决方案少于列表中的项目数,则您的问题没有解决方案。
由于装箱问题是 NP-Hard,因此您的问题也没有多项式时间解。您可以使用针对装箱问题开发的启发式算法,例如最佳拟合、首次拟合等。但它们不能保证找到最佳解决方案。
【讨论】:
【参考方案2】:这是多箱打包问题:
给定一组物品,每个物品都有特定的尺寸,还有一组箱子,每个 也有特定尺寸——是否有物品分配到垃圾箱 这样就没有任何物品被打开包装并且没有超过垃圾箱容量?
一般来说它是 NP 难的。但是,有几种特殊情况可以有效地解决,无论是近似的还是最优的。
见Wolfgang Stille aus Göppingen's thesis
【讨论】:
以上是关于将物品打包到固定数量的箱子中的主要内容,如果未能解决你的问题,请参考以下文章