[发明专利]基于布谷哈希和布隆过滤器的Hash建表方法有效
申请号: | 201810422766.7 | 申请日: | 2018-05-05 |
公开(公告)号: | CN108647289B | 公开(公告)日: | 2022-01-21 |
发明(设计)人: | 于洪;魏帅;黄雅静;杨镇西;沈剑良;宋克;吕平;刘勤让;张帆;陈博 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学;天津市滨海新区信息技术创新中心 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 陈勇 |
地址: | 450000 河*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及基于布谷哈希和布隆过滤器的Hash建表方法。本发明将存储空间划分为m个组,每组包含一个存储表和n个过滤表,每个过滤表对应一个Hash函数,共有m*n个不同的Hash函数;另外选取m*n个不同的Hash函数备用;定义一个max_insert值,如果对某次输入数据的操作次数超过所述max_insert值,则表示填表失败。本发明提供的建表方法,有效地提高了空间利用率,利于在有限的硬件存储空间上进行设计开发。且不限制m的取值,m可以取任意设计者认为合适的值,相对于很多传统Hash建表方法来说,具有更高的灵活性。同时,本发明消除了对Hash函数选取的限制,更加易用。 | ||
搜索关键词: | 基于 布谷 过滤器 hash 方法 | ||
【主权项】:
1.基于布谷哈希和布隆过滤器的Hash建表方法,其特征在于,所述方法将存储空间划分为m个组,每组包含一个存储表和n个过滤表,即共有m个存储表,对应为ST(1)、ST(2)…存储表ST(m);共有m*n个过滤表,对应为FT(11)、FT(12)…FT(1n),FT(21)、FT(22)…FT(2n),…,FT(m1)、FT(m2)…FT(mn);所述存储表的长度为2k,宽度为k比特;所述过滤表的长度为2k,宽度为1比特;每个过滤表对应一个Hash函数,共有m*n个不同的Hash函数,分别为hash(11)、hash(12)…hash(1n),hash(21)、hash(22)…hash(2n),…,hash(m1)、hash(m2)…hash(mn);所述Hash函数用于把输入的数据转换为k比特的定长数据,不同的Hash函数输出数据的长度相同、数值不同;另外选取m*n个不同的Hash函数备用;定义一个max_insert值,如果对某次输入数据的操作次数超过所述max_insert值,则表示填表失败;包括以下步骤:步骤1:初始化所有表项为0;步骤2:对于每一个输入Hash_Input,使用第一组Hash函数计算其在存储表1中的插入位置ST(1)[addr(1i)],i∈[1,n],插入存储表1中,如果没有踢出数据,就对下一个输入执行步骤2,如果踢出了数据,执行步骤3;步骤3:将踢出数据变为新的Hash_Input,使用第二组Hash函数计算出其在存储表2中的插入位置ST(2)[addr(2i)],i∈[1,n],插入存储表2中,如果没有踢出数据,就对下一个输入执行步骤2,如果踢出了数据,执行步骤4;步骤4:将原存于ST(2)[addr(2n)]中的数据变为新的Hash_Input,并依此法继续处理,若至ST(m)依然没有填充成功,将Hash_Input填入ST(m)[addr(mn)]中,将原存于ST(m)[addr(mn)]中的数据作为新的Hash_Input,执行步骤2;步骤5:如果步骤2‑步骤4重复的次数超过max_insert,则表示无法填充表项,使用备用的Hash函数替换现有Hash函数,执行步骤1;如果已经替换过Hash函数,则建表失败。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学;天津市滨海新区信息技术创新中心,未经中国人民解放军战略支援部队信息工程大学;天津市滨海新区信息技术创新中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810422766.7/,转载请声明来源钻瓜专利网。