将物品打包到固定数量的箱子中

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

【讨论】:

以上是关于将物品打包到固定数量的箱子中的主要内容,如果未能解决你的问题,请参考以下文章

组合优化装箱问题简介

Python 如何将长度不同的字符串尽量均匀地分配到N个文件中?每一行的字符串作为整体,不能打散。

是否有按物品尺寸包装箱子的背包算法?

基础实验2-2.4 装箱问题 (20分)

Codeforces698C. LRU

[PTA]实验7-1-13 装箱问题