当前位置: 首页 > news >正文

Cuckoo Hashing的变体:多哈希表多槽位版本

1️⃣数据结构:

  1. 哈希表:创建 n n n个哈希表 T 1 , T 2 , . . . , T n T_1,T_2,...,T_n T1,T2,...,Tn
  2. 哈希函数:每个哈希表 T i T_i Ti都有各自的独立的哈希函数 h i h_i hi h i ( x ) h_i(x) hi(x)决定了 x x x T i T_i Ti表中的分桶
  3. 哈希桶:每个哈希表 T i T_i Ti有各自独立的 r r r个桶即 T i [ 0 ] , T i [ 1 ] , . . . , T i [ r – 1 ] T_i[0],T_i[1],...,T_i[r–1] Ti[0],Ti[1],...,Ti[r–1],一共有 n r nr nr个桶

2️⃣查找 / / /删除算法:

  1. 计算桶:在 n n n个哈希表中找到查询 q q q所在的桶 T 1 [ h 1 ( q ) ] , T 2 [ h 2 ( q ) ] , . . . , T n [ h n ( q ) ] T_1[h_1(q)],T_2[h_2(q)],...,T_n[h_n(q)] T1[h1(q)],T2[h2(q)],...,Tn[hn(q)]
  2. 查找:检查所有这些桶中是否含 q q q,若某一桶中含有 q q q则返回查询成功
  3. 删除:检查所有这些桶中是否含 q q q,遇到某桶含有 q q q则进行删除

3️⃣插入算法:设置每个桶数量最大值 MaxNum \text{MaxNum} MaxNum,最大插入次数 MaxLoop \text{MaxLoop} MaxLoop

  1. 计算桶:在 n n n个哈希表中找到待插入对象 x x x的候选桶 T 1 [ h 1 ( x ) ] , T 2 [ h 2 ( x ) ] , . . . , T n [ h n ( x ) ] T_1[h_1(x)],T_2[h_2(x)],...,T_n[h_n(x)] T1[h1(x)],T2[h2(x)],...,Tn[hn(x)]
  2. 初步插入:
    • 成功:优先尝试将 x x x插入到没达到阈值 MaxNum \text{MaxNum} MaxNum的任一桶 T i [ h i ( x ) ] T_i[h_i(x)] Ti[hi(x)]
    • 失败:如果所有桶对象数目都大于阈值 MaxNum \text{MaxNum} MaxNum,则随机选取桶 T i [ h i ( x ) ] T_i[h_i(x)] Ti[hi(x)]强行插入 x x x并驱赶其任一个原有对象 y y y
  3. 重新插入:计算 y y y的候选桶 T 1 [ h 1 ( y ) ] , T 2 [ h 2 ( y ) ] , . . . , T n [ h n ( y ) ] T_1[h_1(y)],T_2[h_2(y)],...,T_n[h_n(y)] T1[h1(y)],T2[h2(y)],...,Tn[hn(y)],按照同样的策略将 y y y插入到桶 T i [ h i ( y ) ] T_i[h_i(y)] Ti[hi(y)]
  4. 算法终止:
    • 收敛情形:不断插入 + \text{+} +驱赶一直到到不再有驱赶发生,用优先队列避免驱赶时形成回路(比如待插入键变化为 x → y → x x\text{→}y\text{→}x xyx)
    • 不收敛情形:当插入次数达到设定的最大值 MaxLoop \text{MaxLoop} MaxLoop时,重建所有的哈希表然后重新执行插入 x x x

相关文章:

  • SOME/IP-SD -- 协议英文原文讲解4
  • 为AI聊天工具添加一个知识系统 之123 详细设计之64 人类文化和习俗,即文化上的差异-根本差异
  • 如何搭建起成熟的团队知识文档管理系统
  • 仿真环境下实现场景切换、定位物体和导航行走
  • RK3588--MIPI屏幕选型以及底板设计要点
  • JUC (java. util.concurrent) 的常见类及创建新线程的方法等 [Java EE 初阶]
  • Springboot快速接入豆包大模型
  • 【二分查找 图论】P8794 [蓝桥杯 2022 国 A] 环境治理|普及
  • C++中的多重继承
  • 品牌设计分析模版
  • DeepSeek的100个实用提示词模板
  • 如何让 Git 管理本地项目
  • 使用Jenkins实现Windows服务器下C#应用程序发布
  • Deepseek开源周,第二天:Deep EP
  • OkHttp、Retrofit、RxJava:一文讲清楚
  • Wasserstein 距离(Wasserstein Distance)
  • adb的安装
  • 数据如何安全“过桥”?分类分级与风险评估,守护数据流通安全
  • 软件工程(复习折磨题目版)
  • 墨刀:Axure托管插件登录/注册时出现空白页
  • 探索演艺产业新路径,2万观众走进音乐科技融创节
  • 一位排球青训教练的20年时光:努力提高女排球员成才率
  • 葡萄牙总理:未来几小时内将全面恢复供电
  • 央行副行长:我们在研究丰富政策工具箱,将适时推出增量政策
  • 媒体:每一个“被偷走的人生”,都该得到公道和正义
  • 热点问答|第三轮间接谈判结束,美伊分歧还有多大?