我想将一组项目存储到N个不同的存储桶中。每个项目都有一个与之关联的属性(大小),我希望每个存储桶中此属性的总和大致相等。确定此的最佳方法是什么?请注意,这些商品的尺寸范围相当大,在我使用的数据集中,最小尺寸为1,最大尺寸为325220。
示例:
Item A - size 5
Item B - size 10
Item C - size 8
Item D - size 16
Item E - size 7
如果我想将它们分为3个存储桶
Bucket 1: A, B
Bucket 2: C, E
Bucket 3: D
答案 0 :(得分:1)
我最终实现了Joe Farrel链接的paper中描述的完整贪婪算法。我使用的完整C#代码如下:
INFORMATION_SCHEMA.STATISTICS
答案 1 :(得分:0)
我在laying out pictures上对这个问题的回答可能可以适应。 高的图片变成尺寸的项目。每页列成为存储桶。
该算法包括三个部分:首次拟合;贪婪的交换和反向排序,其中某些数据可能比其他数据更有用。