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、增加哈希表,類似於第一種;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM