Cuckoo Hash——Hash衝突的解決辦法

Cuckoo Hash——Hash衝突的解決辦法

參考文獻:

  1、Cuckoo Filter hash算法

  2、cuckoo hash

用途:

  Cuckoo Hash(布穀鳥散列)。問了解決哈希衝突的問題而提出,利用較少的計算換取較大的空間。佔用空間少,查詢速度快。經常應用於Bloom Filter和內存管理中。之所以起這個名字是因爲布穀鳥生性貪婪,不自己築巢,而是在別的鳥巢裏面鳥蛋孵化,先成長的幼鳥會將別的鳥蛋擠出,這樣獨享“母愛”,類似於哈希衝突處理過程。

算法描述

  使用hashA、hashB計算對應的key位置:

    1、兩個位置均爲空,則任選一個插入;

    2、兩個位置中一個爲空,則插入到空的那個位置

    3、兩個位置均不爲空,則踢出一個位置後插入,被踢出的<key,value>對調用該算法,再執行該算法找其另一個位置,循環直到插入成功。

  如果被踢出的次數達到一定的閾值,則認爲hash表已滿,並進行重新哈希rehash

優化(減少哈希碰撞):

  1、將一維改成多維,使用桶(bucket)的4路槽位(slot);

  2、一個key對應多個value;

  3、增加哈希函數,從兩個增加到多個;

  4、增加哈希表,類似於第一種;

如有轉載請請務必保留此出處:http://www.cnblogs.com/xiangyangzhu/
https://www.jianshu.com/p/68220564f341
http://www.blogs8.cn/posts/WyXIBP4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章