在固定大小的桶中对齐不同大小的元素的算法

时间:2012-06-17 08:22:49

标签: algorithm partitioning bucket

问题:

1) I have buckets of fixed size, in my case 64. This cannot change.
2) Values vary in size, but are never bigger than a bucket (64).
3) Access is much slower if any element is split between buckets.

是否有一些算法可以计算存储桶中元素的最佳顺序?

这里有两个版本,我对这两个版本感兴趣,使代码用户可以在速度和内存使用情况之间进行选择:

A) Splitting is allowed, but should be minimized.
B) Splitting is not allowed, and padding should be minimized.

请发布算法或链接,或者至少是他们的名字,如果他们是"众所周知的"。互联网搜索没有返回任何有用的东西,可能是因为答案被淹没在无关的结果中,例如最佳的桶大小,以及散列表中的分区数据。

目标语言是Java,但我认为它不应该有所作为。

1 个答案:

答案 0 :(得分:2)

我认为你可以使用内存分配算法,比如第一次拟合,最佳拟合或最差拟合(你可以阅读它们here):它们只是最优解的启发式近似,但我怀疑你的原始问题以某种方式与bin-packing problem有关,并且可能是NP难以最佳地解决。尝试使用近似算法,只有在没有它的情况下放置元素时才能进行分割。