日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cuckoo hash

發布時間:2024/4/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cuckoo hash 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? 布谷鳥哈希最早于2001 年由Rasmus Pagh 和Flemming Friche Rodler 提出。該哈希方法是為了解決哈希沖突的問題而提出,利用較少計算換取了較大空間。名稱源于該哈希方法行為類似于布谷鳥在別的鳥巢中下蛋,并將別的鳥蛋擠出的行為。它具有占用空間小、查詢迅速等特性,可用于Bloom filter 和內存管理。

算法描述

算法使用hashA 和hashB 計算對應key 的位置。

  • 當兩個哈希任意位置為空,則選擇一個位置插入
  • 讓兩個哈希有位置為空時,則插入到空位置
  • 當兩個哈希位置均不為空時,隨機選擇兩者之一的位置上keyx 踢出,計算踢出的keyx 另一個哈希值對應的位置進行插入,轉至2執行(即當再次插入位置為空時插入,仍舊不為空時,踢出這個keyy)
  • 圖例

    1. 插入key1 兩個位置均為空,則插入任意位置.

    2. 插入后

    3. 插入key2 兩個位置有一個位置為空,則插入空的位置中

    4. 插入后效果

    5. 新插入keyi 發現對應兩個位置均被占據

    ?

    6. 隨機選擇一個位置提出所在位置的key(key1),將踢出的key 放置在另一個哈希結果對應的位置上

    7. 如果踢出的key(key1)又占據/踢出了其他key(keyj)的位置,則反復執行上面的過程直到結束

    其他

  • Cockoo hash 有兩種變形。一種通過增加哈希函數進一步提高空間利用率;另一種是增加哈希表,每個哈希函數對應一個哈希表,每次選擇多個張表中空余位置進行放置。三個哈希表可以達到80% 的空間利用率。
  • Cockoo hash 的過程可能因為反復踢出無限循環下去,這時候就需要進行一次循環踢出的限制,超過限制則認為需要添加新的哈希函數。
  • 在SOSP 11 的SLIT 文章中有使用Cockoo hash。
  • 增加哈希表過程如下:

    當新插入一個key hashA 在上面哈希表位置和hashB 在下面哈希表的位置分別被key1 和keyx 占據,任選一個key 提出(這里選擇key1)。

    計算key1 hashB 的值然后插入到下面的hashB 對應的哈希表中。

    ?

    轉載于:https://www.cnblogs.com/cobbliu/archive/2013/01/08/2850979.html

    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的cuckoo hash的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。