[发明专利]一种减少哈希冲突的哈希查找方法在审
申请号: | 201410778520.5 | 申请日: | 2015-08-03 |
公开(公告)号: | CN104504038A | 公开(公告)日: | 2015-07-29 |
发明(设计)人: | 白帆;李燕杰 | 申请(专利权)人: | 北京更快互联网技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京纽乐康知识产权代理事务所(普通合伙) 11210 | 代理人: | 覃莉 |
地址: | 100007 北京市东城区东*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 减少 冲突 查找 方法 | ||
技术领域
本发明涉及一种减少哈希冲突的哈希查找方法。
背景技术
哈希方法,又名散列算法,哈希方法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值;哈希值是一段数据唯一且极其紧凑的数值表示形式,散列算法一般用于快速查找和加密算法,著名的散列算法有RS Hash、JS Hash、PJW Hash、ELF Hash、BKDR Hash、SDBM Hash、DJB Hash以及BP Hash等。
哈希表(HashTable),也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度;这个映射函数叫做散列函数,存放记录的数组叫做散列表;给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数,若结构中存在关键字和K相等的记录,则必定存储在f(K)的位置上,由此,不需比较便可直接取得所查记录。这个对应关系f称为散列函数(Hash function),按这个思想建立的表为散列表。
碰撞或冲突, 如果两个不同的输入通过散列函数计算得出的结果是一样的,则称这两个串是一个碰撞,即key1≠key2,而f(key1)=f(key2),既然是把任意长度的字符串变成固定长度的字符串,所以必有一个输出串对应无穷多个输入串,碰撞是必然存在的。
哈希冲突:两个不同的关键字,由于散列函数值相同,因而被映射到同一表位置上,该现象称为冲突(collision)或碰撞;发生冲突的两个关键字称为该散列函数的同义词(synonym)。
冲突基本上不可避免的,除非数据很少,我们只能采取措施尽量避免冲突,或者寻找解决冲突的办法。
影响冲突的因素,冲突的频繁程度除了与选择的哈希函数相关外,还与表的填满程度相关。
设m和n分别表示表长和表中填入的结点数,则将α=n/m定义为散列表的装填因子(load factor),α越大,表越满,冲突的机会也越大;通常取α≤1。
1、现有哈希冲突处理
1)开放寻址法:Hi=(H(key) + di) MOD m,i=1,2,…,k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列,可有下列三种取法:
1.1 di=1,2,3,…,m-1,称线性探测再散列;
1.2 di=1^2,-1^2,2^2,-2^2,⑶^2,…,±(k)^2,(k<=m/2)称二次探测再散列;
1.3 di=伪随机数序列,称伪随机探测再散列。
2)再散列法:Hi=RHi(key),i=1,2,…,k RHi均是不同的散列函数,即在同义词产生地址冲突时计算另一个散列函数地址,直到冲突不再发生,这种方法不易产生“聚集”,但增加了计算时间。
3)链地址法(拉链法),同一个散列值存储在同一个链表。
4)建立一个公共溢出区
2、现有处理冲突的方法缺点
1)开放寻址法,在冲突发生时,需要进行模运算,极端情况下,将重复多次。
2)再散列法,在冲突发生时,需要通过另一散列函数进行计算散列值,增加了计算的时间,如果另一散列再次冲突,计算时间再次增加,并且影响性能。
3)链地址法,同一个链表中的都是相同的散列表,为了确定查找的串,需要进行串的比较,增加时间。
4)建立公共溢出区,同样在冲突时,将在溢出区中进行查找,还是需要进行串的比较。
综上所述,现有处理冲突有两个大的缺点, 一是需要超过一次的散列,另一个是要进行串的比较,即散列表的查找过程仍是一个和关键字比较的过程,这两大缺点降低了查找性能。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
本发明的目的是提供一种减少哈希冲突的哈希查找方法,以克服目前现有技术存在的上述不足。
本发明的目的是通过以下技术方案来实现:
一种减少哈希冲突的哈希查找方法,包括以下步骤:
对将要查找哈希值的哈希关键码进行分析,初始所述哈希关键码所对应的三个哈希值,其中,所述三个哈希值不相同;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京更快互联网技术有限公司,未经北京更快互联网技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410778520.5/2.html,转载请声明来源钻瓜专利网。