当我说方框时,我说的是装运箱。
我有一些随机大小的小物品,我需要尽可能少地装箱。 我需要知道哪种盒子尺寸是最佳的。
有哪些算法可以让我计算出我需要用于最佳空间使用的盒子大小? 将大多数项目放入尽可能少的框中。
可用的盒子尺寸来自我现有的库存。例如,您可以创建有限数量的组合盒尺寸。
答案 0 :(得分:7)
这是Bin packing problem的概括,意思是NP-Hard。
要想看到这一点,想象所有的箱子和包装都有相同的宽度和高度,另外所有的箱子(但不是包裹)都有相同的长度。然后它是一个一维问题:我们有大小为V的箱子,大小为a 1 的包裹, 2 ,..., n < /子>。这个简化的案例正是Bin-packing问题。因此,快速解决您的问题可以为我们提供快速的垃圾箱包装解决方案,因此您的问题至少同样困难;因为bin-packing是NP-Hard,所以你的问题也是如此。
虽然有一些近似算法可用;例如,很容易证明简单的first-fit算法(将每个项目放在它适合的第一个bin中)绝不会比最佳解决方案的2倍差。
类似的“First Fit Decreasing”算法(按降序对项目进行排序,然后将每个项目放入适合的第一个bin中)甚至更好,保证在约25%的范围内最佳解决方案。另外还有一个稍微复杂的算法MFFD,它保证在20%左右。
当然,只有7个盒子,你总是可以蛮力解决问题。这将需要大约7个 n 步骤(其中n
是项目数),因此这个解决方案是不可行的,有十几个项目。< / p>
答案 1 :(得分:2)
您已经描述了knapsack problem的变体。查看wikipedia article以获取有关问题解决方案的更多详细信息。