2014-09-11 72 views
2

什麼是一個整數數組的好散列函數? 例如,我有兩個數組[1,2,3]和[1,5]。我應該採用什麼散列函數來分離這兩個數組? 我想在將它提升到2的冪後將每個元素相加,但是由於多重乘法,這會產生很大的成本。這種情況下是否有簡單的哈希函數?整數數組的散列函數

回答

3

對於特定數據集,只是減去一個從第二到最後一個項目,會給你一個完美的最小哈希,用:-)

產生更嚴重的是桶0和1,選擇一個好的散列函數確實很大程度上依賴於這類數據,所以應該將其考慮在內。如果不知道要存儲的數據的屬性,很難提出建議。

numbuckets = 97 
bucket = array.length() % numbuckets 
for index in range (array.length()): 
    bucket = (bucket + array[index]) % numbuckets 

然後檢查結果:

簡單地通過選擇任意的功能,例如添加的所有項目陣列中,然後加入所述陣列長度的是,並減少它模一些值開始 (跨很多真實數據集)以確保沒有太多的衝突。如果有,請選擇另一個功能。

這與優化相同:措施,不要猜測!其實顯示器碰撞和使用情況,如果它變壞。

+0

謝謝,因爲我目前的使用情況似乎很好。但如果我需要進一步擴展,我想我可能會碰到更多的衝突 – Chimba 2014-09-11 03:49:31