2012-02-11 84 views
-3

im使用布隆過濾器模擬集合交點近似。我已經嘗試了很多簡單的散列函數來將值散列到過濾器。但它不擅長避免碰撞。所以有人提出了一個通用的散列函數。但我不知道它是如何工作的。我的程序被設計爲只將密鑰傳遞給散列函數,散列函數返回散列。任何人都可以幫助我的代碼? 謝謝用於布隆過濾器的通用哈希函數實現C

+0

具體是什麼問題? – 2012-02-11 21:52:46

+1

你是錯誤的軌道上。如果你有一個完美的通用散列函數,那麼使用布隆過濾器將毫無意義。如果你有*不完美的*,它們很有用。而非通用的,它需要一組哈希函數。 – 2012-02-11 22:07:28

回答

0

與bloom過濾器一起使用時,不用擔心散列函數的衝突。在這種情況下,您不必處理碰撞。當你插入一個元素時,只需要讓k不同就具有在m位數組中設置k位的功能。在查詢時,您再次使用全部k個哈希函數來檢查所有的k位;如果其中任何一個沒有設置,那麼搜索就是錯誤的。如果所有這些都已設置,則不能得出任何結果(誤報結果)。這在維基中有清楚的解釋:

http://en.wikipedia.org/wiki/Bloom_filter