2012-06-17 36 views
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,但我不認爲它應該有所作爲。

回答

2

我認爲你可以使用內存分配算法,如第一次適合,最適合或最差適合(你可以閱讀關於他們here):他們只是最佳解決方案的啓發式近似,但我懷疑你的原始問題是以某種方式與bin-packing problem相關,並且可能是NP難以最優解決的。嘗試使用近似算法,並且僅在沒有它時才放置元素的情況下進行分割。

+0

你說得對。 「最優的啓發式近似」就足夠了。 –