[发明专利]哈希表的表项添加、删除、查找方法及哈希表存储装置有效
| 申请号: | 201110138340.7 | 申请日: | 2011-05-25 |
| 公开(公告)号: | CN102194002A | 公开(公告)日: | 2011-09-21 |
| 发明(设计)人: | 李彧;张炜;孙远航;崔玉姣;郑永梅 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 深圳鼎合诚知识产权代理有限公司 44281 | 代理人: | 宋鹰武 |
| 地址: | 518057 广东省深*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 哈希表 添加 删除 查找 方法 存储 装置 | ||
技术领域
本发明涉及通信技术领域,尤其涉及一种哈希表的表项添加、删除、查找方法及其存储装置。
背景技术
在通信领域中,存在着多种的匹配算法,例如,对于精确匹配的查找,可以采用哈希算法。所述的哈希查找的过程就是用哈希函数对输入的查找键值(Key)进行缩位运算,再用计算得到的哈希值在哈希索引表中寻址,找到匹配项后读出对应项中存放的哈希索引(Hash Index),最后用哈希索引在直接地址映射表寻址,得到所需的查找结果。
哈希算法是一种常见的快速查找算法,它的基本思想是以线性表中每个元素的关键字k为自变量。通过一定的函数关系H(k),计算出对应的函数值来,并把这个值解释为一块连续存储空间的单元,将该元素存储到这个单元中。哈希算法将元素的存储位置和它的关键字之间建立一个确定的对应关系,查找时,不需要比较,一次哈希映射就可以查找所需元素。
在哈希函数中,对不同的关键字可能得到同一哈希地址,即key1≠key2,而H(key1)=H(key2),这种情况叫冲突(Collision)。一般来说,遇到冲突是很正常的事情,关键在于遇到冲突后怎么处理,以达到要求的查找目的。处理冲突,主要有以下两种方法:一是选择和改进比较好的哈希函数;二是选择比较合适的表项存储结构。
目前,对于路由查找这类的应用,采用CRC(Cyclic Redundancy Checking,循环冗余码校验)类的哈希函数是比较适合的。通过选取不同的CRC多项式,可以实现同一个位宽下的不同哈希函数。
在选择合适的表存储结构解决冲突问题方面,可以采用多维哈希表、冲突链、Double Hashing等。仿真实验结果表明,使用这些方法,在保证无表项遗留即所有表项都能存入的前提条件下,计算哈希值的次数跟需要的存储表空间存在对立的关系,也就是说如果想要以足够小的存储空间放下所有的表项,则需要进行足够多次数的哈希运算。这样就会造成对同一块表的多次访问,由于表只有一张,所以查找只能顺序进行,这会严重影响查表的速度;另一方面,如果想要以足够少的计算次数就能找到存储空位,那么就要保证存储空间足够的大,空间利用率就会大大的降低。如果采用多张哈希表并行查找,则需要占用多个存储器接口,不利于硬件上的实现。
发明内容
本发明要解决的主要技术问题是,提供一种哈希表的表项添加、删除、查找方法,及其存储装置,以极小的查找时间代价以及较高的表空间利用率实现全部表项存储而无表项遗留;同时只需访问一次就能够准确的查找到需要的表项;同时也便于硬件与存储器之间接口的实现,能够在表空间大小,查找效率以及硬件实现方面获得比较好的均衡。
为解决上述技术问题,本发明采用的技术方案如下:
一种哈希表的表项添加方法,包括:
将哈希表拆分为多张哈希子表,每一张哈希子表对应一张位图,每一张位图对应一个哈希函数;
确定当前目标哈希子表,利用当前目标哈希子表所对应的位图相应的哈希函数计算待存储表项的键值的哈希值,根据所述哈希值确定当前目标哈希子表所对应的存储位置是否空位,如是,将所述待存储表项的信息存入该空位中,否则,更新当前目标哈希子表直至找到空位存储所述待存储表项的信息。
进一步地,所述位图包含了冲突位和有效位,根据所述哈希值确定当前目标哈希子表所对应的存储位置是否空位,如是,将所述待存储表项的信息存入该空位中,否则,更新当前目标哈希子表直至找到空位存储所述待存储表项的信息的步骤,包括:
以所述哈希值作为索引,查找所述当前目标哈希子表对应的位图;
判断所述位图的有效位是否有效,且所述位图的冲突位是否为无效;
如果所述有效位为有效,且所述冲突位为无效,则确定所述当前目标哈希子表所对应的存储位置为空位,则将所述待存储表项的信息存入该空位;否则,更新当前目标哈希子表直至找到空位存储所述待存储表项的信息。
更进一步地,所述以所述哈希值作为索引,查找所述当前目标哈希子表对应的位图的步骤,包括:
判断当前目标哈希子表的容量是否小于计算得到的所述哈希值的位数;
如果所述当前目标哈希子表的容量小于计算得到的所述哈希值的位数,则截取所述哈希值,并将截取后的哈希值作为索引,查找所述当前目标哈希子表对应的位图。
更进一步地,将所述待存储表项的信息存入空位后,还包括:
将所述位图的有效位置为无效,并将所述待存储表项的键值存储到该位图中。
更进一步地,更新当前目标哈希子表直至找到空位存储所述待存储表项的信息的步骤,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110138340.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:回收散布装置
- 下一篇:锅炉烟气余热梯级回收利用的方法及其装置





