一种应用改进的哈希方法进行查找的方法技术

技术编号:3545613 阅读:226 留言:0更新日期:2012-04-11 18:40
本发明专利技术旨在提供一种改进的哈希方法及其应用,涉及网络通讯领域。包括以下步骤:提供哈希关键码表,包括由一系列哈希关键码页面构成的存储空间表;提供关键码页面,包括一定数量的关键码条目和指向下一个关键码页面的指针;提供关键码条目,包括有效标志位、关键码和结果指针;提供实际存储条目,包括存放关键码对应的实际信息内容。本发明专利技术克服了现有技术访问内存次数变化大的缺点,对于解决语音、图象等信息在网络中传送的“抖动”问题十分有利,同时也提高了内存的利用效率。

【技术实现步骤摘要】

本专利技术涉及使用HASH(哈希)技术的计算机领域,尤其涉及使用HASH技术的网络通信领域。
技术介绍
HASH方法是在计算机领域进行信息检索和存储的一种常用方法,常用的HASH方法有直接定址法、数字分析法、除留余数法和乘余取整法等。HASH方法在表项的存储位置与它的关键码(KEY)之间建立一个确定的对应函数关系Hash(),使得每个关键码与结构中的一个唯一的存储位置相对应(Address=Hash(Rec.key))。在HASH方法中使用的转换函数叫做HASH函数,而按此种方法构造出来的表或者结构就叫做HASH表。使用HASH方法进行查找不必进行多次关键码的比较,因此查找速度比较快,可以直接到达或逼近具有此关键码的表项的实际存放地址。在一些网络处理系统(如路由器系统等)中常常使用HASH方法来存储和检索对应的转发表信息。一般来说,HASH函数是一个压缩映象函数。通常关键码集合比HASH表地址集合大的多,因此有可能经过HASH函数的计算,把不同的关键码映射到同一个HASH地址上,这就产生了HASH冲突,为此必须再找一个地址来存放冲突的表项,这就是如何解决冲突问题。处理HASH冲突的一种常用解决办法是线性探查法。在线性探查法中,当发生HASH冲突时,从冲突表项对应的存储位置依次往后进行查找,直到找到一个为空的位置存放发生冲突的表项。线性探查法容易产生“堆积”问题,即不同探查序列的关键码占据了可利用的空桶,使得为寻找某一关键码需要经历不同的探查序列的元素,导致查找时间增加。另一种常用的解决HASH冲突的方法是多HASH法。第一个HASH函数Hash1()按表项的关键码计算表项所在的存放位置H1=Hash1(),一旦发生-->冲突,利用不同于第一个HASH函数的第二个HASH函数Hash2()计算该表项的“下一个”存放位置。有可能某些关键码使用第二个HASH函数得到的存放位置也是相同的,此时需要继续使用第三个HASH函数Hash3()计算该表项的“下一个”存放位置。如此重复进行,直到所有的HASH冲突被解决为止。相比其他很多解决HASH冲突的方法,多HASH法是比较简单,高效,而且适用于大多数应用的方法,但是多HASH法应用在网络通信领域存在一定的问题。在网络通讯应用中,“抖动”是和“时延“同等重要的一个参数,例如,声音和图象记录可以作为数据在因特网上进行传输,通过路由器由发送地转发到目的地。如果路由器设备使用多HASH法来定位数据报文的目的地和转发数据报文,大多数数据报文(70%~80%)可以通过一次内存访问定位目的地,但是,20%~30%的数据报文需要进行再一次内存访问,而且,有不少情况下还需要三次,四次甚至是五次对内存的访问,内存访问次数的不确定性极大地影响性能,将导致数据报文传送抖动太大,声音不连续,时断时续。因此,需要一种改进的哈希方法及其应用,既具有比较高的查找性能,又对绝大多数的报文具有固定的查找次数以降低网络抖动,同时还需要具有较高的内存利用率。
技术实现思路
本专利技术所要解决的技术问题是:克服现有技术中存在的哈希方法需要访问的内存次数变化大的问题和缺陷,提供一种改进的哈希方法及其应用。本专利技术采用以下技术方案,一种改进的哈希方法,包括以下步骤:提供哈希关键码表,包括由一系列哈希关键码页面构成的存储空间表;提供关键码页面,包括一定数量的关键码条目和指向下一个关键码页面的指针;提供关键码条目,包括有效标志位、关键码和结果指针;提供实际存储条目,包括存放关键码对应的实际信息内容。进一步地,所述关键码对应的实际信息内容包括转发信息。-->一种改进的哈希方法的应用,用于存储信息,包括以下步骤:步骤A:使用一个哈希函数对关键码进行哈希操作,得到关键码在哈希关键码表中对应的一个关键码页面地址;步骤B:将关键码写入在步骤A运算得到的关键码页面中的一个空闲关键码条目;步骤C:在关键码条目中写入一个对应的结果指针,该指针和关键码对应,并指向实际存储条目。进一步地,所述的步骤B包括:步骤B1:在当前关键码页面中寻找一个空闲的关键码记录条目;步骤B2:如果找到了某个空闲关键码条目,将关键码写入,转步骤C;步骤B3:如果没有找到可用的空闲关键码条目,检查下一个关键码页面指针是否为空,如果为空,转步骤B4,如果不为空转步骤B6;步骤B4:分配一个新的关键码页面,将新关键码页面地址作为当前关键码页面的下一个关键码页面指针;步骤B5:在新的关键码页面中寻找一个空闲的关键码记录条目,转步骤C;步骤B6:根据下一个关键码页面指针读取下一个关键码页面,转步骤B1。一种改进的哈希方法的应用,用于查找信息,包括以下步骤:步骤a:使用一个哈希函数对关键码进行哈希操作,得到关键码在哈希关键码表中对应的一个关键码页面地址;步骤b:根据关键码页面地址读取关键码页面;步骤c:在当前关键码页面中查找一个关键码条目的关键码等于查找用的关键码,如果找到了匹配的关键码条目,转步骤d,否则查找失败;步骤d:根据匹配到的关键码条目的结果指针读取实际存储条目。进一步地,所述的步骤c包括:步骤c1:在当前关键码页面查找是否存在一个关键码条目的关键码等于查找用的关键码;步骤c2:如果找到了匹配的关键码条目,转步骤d,否则转步骤c3;步骤c3:检查当前关键码页面的下一个关键码页面指针是否为空,如果-->为空,查找失败,否则转步骤c4;步骤c4:根据下一个关键码页面指针读取下一个关键码页面,转步骤c1。有益效果:采用本专利技术方法,对于大多数情况下的HASH查找只需要两次内存访问,第一次内存访问为读取关键码页面,第二次内存访问为读取实际存储条目,与现有技术相比,克服了访问内存次数变化大的缺点,对于解决语音、图象等信息在网络中传送的“抖动”问题十分有利,同时也提高了内存的利用效率。附图说明图1是按照本专利技术方法进行存储和查找所需要的数据结构图;图2是按照本专利技术方法进行存储的流程图;图3是按照本专利技术方法进行查找的流程图。具体实施方式下面结合附图对技术方案的实施作进一步的详细描述。如图1所示,本专利技术改进的HASH方法应用的数据结构包括:HASH关键码表10:由一系列HASH关键码页面11构成的存储空间表。关键码页面11:是存放一系列关键码等信息的一个存储块,包含一定数量的关键码条目12和指向下一个关键码页面的指针17,在本实施例中假设一个关键码页面11包含8个关键码条目。关键码条目12:包含有效标志位13、关键码14和结果指针15。有效标志位13:标识当前关键码条目是否有效,为0表示当前关键码条目无效,是一个空闲条目,为1标识当前关键码条目有效。关键码14:存放的是关键码,用于和查找的关键码进行比较确定匹配条目。结果指针15:指向该关键码对应的实际存储条目18。有效标志位16:表示下一个关键码页面指针17是否有效,为0标识无效,为1标识有效。下一个关键码页面指针17:如果当前关键码页面的所有关键码条目都-->被占用,有可能需要分配下一个关键码页面,此时将下一个关键码页面的地址作为当前关键码页面的“下一个关键码页面指针17”。实际存储条目18:存放查找所需要的实际信息,比如转发信息等。下一个关键码页面19:和关键码页面11一样,是存放一系列关键码等信息的一个存储块。如图2本文档来自技高网
...

【技术保护点】
一种改进的哈希方法,包括以下步骤:提供哈希关键码表,包括由一系列哈希关键码页面构成的存储空间表;提供关键码页面,包括一定数量的关键码条目和指向下一个关键码页面的指针;提供关键码条目,包括有效标志位、关键码和结果指针; 提供实际存储条目,包括存放关键码对应的实际信息内容。

【技术特征摘要】
1.一种改进的哈希方法,包括以下步骤:提供哈希关键码表,包括由一系列哈希关键码页面构成的存储空间表;提供关键码页面,包括一定数量的关键码条目和指向下一个关键码页面的指针;提供关键码条目,包括有效标志位、关键码和结果指针;提供实际存储条目,包括存放关键码对应的实际信息内容。2.根据权利要求1所述的方法,其特征在于,所述关键码对应的实际信息内容包括转发信息。3.一种改进的哈希方法的应用,用于存储信息,包括以下步骤:步骤A:使用一个哈希函数对关键码进行哈希操作,得到关键码在哈希关键码表中对应的一个关键码页面地址;步骤B:将关键码写入在步骤A运算得到的关键码页面中的一个空闲关键码条目;步骤C:在关键码条目中写入一个对应的结果指针,该指针和关键码对应,并指向实际存储条目。4.根据权利要求3所述的方法一种改进的哈希方法的应用,其特征在于,所述的步骤B包括:步骤B1:在当前关键码页面中寻找一个空闲的关键码记录条目;步骤B2:如果找到了某个空闲关键码条目,将关键码写入,转步骤C;步骤B3:如果没有找到可用的空闲关键码条目,检查下一个关键码页面指针是否为空,如果为空,转步骤B4,如果不为空转步骤...

【专利技术属性】
技术研发人员:胡龙斌
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1