Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
HASH SEARCH METHOD FOR REDUCING HASH CONFLICTS
Document Type and Number:
WIPO Patent Application WO/2012/013023
Kind Code:
A2
Inventors:
ZHANG, Rongbin (Room 715, Number 219 Lane 498, Dongchang Road,Pudong, Shanghai 0, 200120, CN)
张荣斌 (中国上海市浦东区东昌路498弄219号715室, Shanghai 0, 200120, CN)
Application Number:
CN2011/001250
Publication Date:
February 02, 2012
Filing Date:
July 29, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ATHEROS INTERNATIONAL (SHANGHAI) CO., LTD. (Suite 101, Unit 9 690 Bibo Road, Zhangjiang Hi-Tech Park, Shanghai 3, 201203, CN)
创锐讯通讯科技(上海)有限公司 (中国上海市张江高科技园区碧波路690号9号楼101室, Shanghai 3, 201203, CN)
ZHANG, Rongbin (Room 715, Number 219 Lane 498, Dongchang Road,Pudong, Shanghai 0, 200120, CN)
International Classes:
G06F17/00
Attorney, Agent or Firm:
LEE AND LI - LEAVEN IPR AGENCY LTD. (Room 1008, Tower W1 Oriental Plaza,1 East Chang An Avenue, Beijing 8, 100738, CN)
Download PDF:
Claims:
权 利 要 求 书

1.一种减少哈希冲突的哈希査找方法, 其特征在于, 包括如下步骤:

( 1 )增力 n—个 index表, 采用 rule表结合 index表的方法, 并将 index表项大小扩大为 rule表项的 2倍;

(2) rule表中将 rule分为 N个桶, 每个桶包含 m个 rule; index 表的内容是 rule所在的桶的索引;

(3) 在以上改进后的哈希表的基础上执行哈希查找。

2.如权利要求 1所述的减少哈希冲突的哈希查找方法, 其特征在于, 步骤 (1 )中,所述将 index表项大小扩大为 rule表项的 2倍是将 index 表项大小扩大为 rule表中 rule数量的 2倍。

3.如权利要求 1所述的减少哈希沖突的哈希查找方法, 其特征在于, 步骤 (3) 中, 添加一条 rule的步骤如下-

A.根据哈希函数得到的哈希值, 索引 index表, 得到桶的地址;

B.然后在该桶内的空闲位置写入 rule。

4.如权利要求 3所述的减少哈希冲突的哈希查找方法,其特征在于, 步骤 B中, 所述桶内的空闲位置的有效标识位 V为 0, 写入 rule后将有 效标识位 V值置为 1。

5.如权利要求 1所述的减少哈希冲突的哈希査找方法,其特征在于, 步骤(3) 中, 查找一条 rule的步骤如下:

A.根据哈希函数得到哈希值, 索引 index表;

B.通过查 index表, 得到桶的索引,如果该索引是个无效值, 则表示 rule表里无命中项, 结束査找; 否则进入步骤 C; C.根据得到的桶索引, 继续索引 ile表, 找到指定的桶后, 在该桶 里的有效标识位 V为 1的若干条 nile里进行查找, 最后得到査找结果。

Description:
说 明 书

一种减少哈希冲突的哈希查找方法 技术领域

本发明属于査找算法领域,具体涉及一种哈希 查找方法,尤其涉及一 种减少哈希冲突的哈希查找方法。

背景技术

哈希表是种数据结构,它可以提供快速的插入 操作和查找操作。哈希 表(Hash table, 也叫散列表), 是根据关键码值 (Key value)而直接迸行 访问的数据结构。也就是说,它通过把关键码 值映射到表中一个位置来访 问记录, 以加快査找的速度。这个映射函数叫做哈希函 数(或散列函数), 存放记录的数组叫做哈希表(或散列表)。 所有哈希函数都有如下一个基 本特性: 如果两个哈希值是不相同的 (根据同一函数), 那么这两个哈希 值的原始输入也是不相同的。这个特性使哈希 函数具有确定性的结果。但 另一方面,哈希函数的输入和输出不是一一对 应的,如果两个哈希值相同, 两个输入值很可能是相同的,但并不能绝对肯 定二者一定相等。对不同的 关键字可能得到同一哈希值, 即 keyl≠key2,而 f (keyl)=f (key2), 这种 现象称为哈希冲突。

哈希査找是通过计算数据元素的存储地址迸行 查找的一种方法。 传统的哈希查找方法的操作步骤为: ω用给定的哈希函数构造哈希 表; (2〉根据选择的冲突处理方法解决地址冲突 (3)在哈希表的基础上 执行哈希查找。 传统的建立哈希表的操作步骤为:

1.取数据元素的关键字 key, 计算其哈希函数值(地址) 。 若该 地址对应的存储空间还没有被占用, 则将该元素存入; 否则执行步骤 2解决沖突。

2.根据选择的冲突处理方法,计算关键字 key的下一个存储地址。 若下一个存储地址仍被占用, 则继续执行步骤 2, 直到找到能用的存 储地址为止。

传统的哈希査找步骤为:

1.设哈希表为 HST [0~M- 1], 哈希函数取 H ( key) , 解决冲突的 方法为 R ( X ) ;

2.对给定 k值, 计算哈希地址 Di=H (k) ; 若 HST为空, 则查找 失败; 若 HST=k, 则查找成功; 否则, 执行步骤 3 (处理冲突) 。

3.重复计算处理沖突的下一个存储地址 Dk=R ( Dk-1 ) , 直到 HST [Dk]为空, 或 HST [Dk]=k为止。若 HST [Dk]二 K, 则查找成功, 否则 查找失败。

虽然我们不希望发生哈希沖突,但实际上发生 冲突的可能性仍是存在 的。当关键字值域远大于哈希表的长度,而且 事先并不知道关键字的具体 取值时, 哈希冲突就难免会发生。

发明内容

本发明要解决的技术问题是提供一种减少哈希 冲突的哈希查找方法, 该方法可以有效地降低发生哈希冲突的概率。

为解决上述技术问题, 本发明提供一种减少哈希冲突的哈希查找方 法, 包括如下步骤:

( 1 )增加一个 index表, 采用 rule表结合 index表的方法, 并将 index表项大小扩大为 rule表项的 2倍 (即该 index表项大小扩大为 rule表中 rule数量 N的 2倍, 使哈希函数的结果扩大了一倍) ;

(2) rule表中将 rule分为 N个桶, 每个桶包含 m个 rule; index 表的内容是! "ule所在的桶的索引;

( 3)在以上改进后的哈希表的基础上执行哈希查 。

步骤 (3) 中, 添加一条 rule的步骤如下:

A.根据哈希函数得到的哈希值, 索引 index表, 得到桶的地址;

B.然后在该桶内的空闲位置写入 rU le。 所述桶内的空闲位置的有效 标识位 V为 0, 写入 rule后将有效标识位 V值置为 1。

步骤 (3) 中, 查找一条 rule的步骤如下:

A.根据哈希函数得到哈希值, 索引 index表;

B.通过查 index表,得到桶的索引,如果该索引是个无效 , 则表示 rule表里无命中项, 结束査找; 否则进入步骤 C;

C.根据得到的桶索引, 继续索引 rule表, 找到指定的桶后, 在该桶 里的有效标识位 V为 1的若干条 rule里进行查找, 最后得到査找结果。

和现有技术相比,本发明具有以下有益效果: 跟传统的哈希査找方法 相比, 本发明将 rule表的结构进行了调整, 并增加了一个 index表, 引 入 bucket (桶) 的思想, 分级查找, 使得哈希冲突的可能性大大降低, 同时将哈希函数的结果扩大为实际 rule数目的 2倍, 更加降低发生哈希 冲突的概率。 附图说明

图 1是本发明方法的示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步详细 的说明。

如图 1所示,本发明在现有的 rule表基础上增加一个 index表,采 用 rule表结合 index表的方法, 且对 rule表的结构做一下调整, 将 ra 个规则 (rule)分在一个桶(bucket)内,所有 rule分为 N/m个桶。除了 rule 表之外, 霈要另增加一个 index (索引)表, index表的内容是 rule所在 的桶的索引, 这样査找时进行两次索引就可以得到结果。 同时, 将 index 表项大小扩大为 rule表的 2倍,即 rule表为 INCrule的数量), index表 为 2N (rule数量的 2倍), 使得哈希函数的结果扩大了一倍, 可以更加有 效的降低哈希冲突的概率。 '

下面举一实施例详细说明本发明哈希查找方法 的实施步骤(见图 1 ): 在 rule表中添加 rule, 具体步骤如下:

1.根据哈希函数得到的哈希值 K, 索引 index表, 得到 bucket的 ID (地址);

2.然后在该 bucket内的空闲位置(图 1中有效标识位 V为 0), 写入 rule, 并将有效标识位 V值置为 1。

哈希查找过程如下:

1.根据哈希函数得到哈希值 K, 索引 index表;

2.通过查 index表, 得到 bucket的索引, 如果该索引是个无效值, 则表示 rule表里无命中项, 结束査找; 否则进入下一步步骤 3; 3.根据得到的 bucket索引, 继续索引 rule表, 找到指定的 bucket 后,接下来在该 bucket里的有效标 i只位 V为 1的若干条 rule里进行查找, 最后得到査找结果。

由上述实施例可见, 本发明增加了一个 index表, 釆用 mle表结合 index表的方法, 且引入 bucket (桶)的思想, 分级査找, 使得哈希冲突 的可能性大大降低,同时将哈希函数的结果扩 大为实际 rule数目的 2倍, 更加降低发生哈希冲突的概率。