1

问题:

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,但我不认为它应该有所作为。

4

1 回答 1

2

我认为您可以使用内存分配算法,例如第一次拟合、最佳拟合或最差拟合(您可以在此处阅读它们):它们只是最佳解决方案的启发式近似值,但我怀疑您的原始问题与bin有关- 以某种方式包装问题,并且可能难以以最佳方式解决。尝试使用近似算法,只有在没有它就无法放置元素时才进行拆分。

于 2012-06-17T08:33:56.147 回答