基于存储桶总和的数字存储桶算法

时间:2018-07-09 19:05:55

标签: algorithm sorting bucket

我想将一组项目存储到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

2 个答案:

答案 0 :(得分:1)

我最终实现了Joe Farrel链接的paper中描述的完整贪婪算法。我使用的完整C#代码如下:

INFORMATION_SCHEMA.STATISTICS

答案 1 :(得分:0)

我在laying out pictures上对这个问题的回答可能可以适应。 高的图片变成尺寸的项目。每页列成为存储桶。

该算法包括三个部分:首次拟合;贪婪的交换和反向排序,其中某些数据可能比其他数据更有用。