雜湊在元素包含測試中的應用
阿新 • • 發佈:2018-12-23
Andrew Zhang
Nov 16, 2017
1、counting bloom filter
counting bloom filter可以解決bloom filter無法刪除元素的問題。但是布隆過濾器會因為負載不均衡,浪費很多空間。
2、d-left雜湊
以2-left為例,採用兩個hash表,T1和T2,分別對應兩個hash函式,h1和h2。儲存一個key時,分別用兩個hash函式h1和h2計算兩個位置h1[key]和h2[key],然後看看兩個hash table對應位置有沒有空,只要任意一個有空就可以將此key放在對應位置。當採用d對hash表和hash函式時就是d-left雜湊。
d-left雜湊可以減輕布隆過濾器的負載均衡問題,使得資源利用趨於平衡。
3、cuckoo hash
採用d個雜湊函式,當插入一個元素的時候,若d個位置有空,任選一個插入,否則在d個位置中隨便找一個,踢走,對被踢走的key,進行重新hash插入,如果被踢走的key的d個hash位置也是全滿了,繼續踢。。。
4、cuckoo filter
結合cuckoo hash和d-left hash的思路,將資源劃分為兩塊,每一塊採用不同的雜湊函式。對於一個插入的key,在這兩塊尋找空的位置插入,若沒空就嘗試cuckoo思想,踢走,重雜湊。cuckoo filter一個改進是在filter中儲存的是資訊壓縮後的指紋,並且重雜湊的時候根據儲存的指紋就能找到另一個地址。