试谈哈希树HashTree)数据结构解析.doc

试谈哈希树HashTree)数据结构解析.doc

ID:49843945

大小:1.17 MB

页数:19页

时间:2020-03-04

试谈哈希树HashTree)数据结构解析.doc_第1页
试谈哈希树HashTree)数据结构解析.doc_第2页
试谈哈希树HashTree)数据结构解析.doc_第3页
试谈哈希树HashTree)数据结构解析.doc_第4页
试谈哈希树HashTree)数据结构解析.doc_第5页
资源描述:

《试谈哈希树HashTree)数据结构解析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、哈希树(HashTree)罗堃吴朝宏从2000年开始,作者开始研究基于TCP/IP的短信息传输技术。这种技术目前在国际上的标准被成为SMPP(ShortMessagePeertoPeerProtocol)。SMPP协议是一种支持异步传输模式(AsynchronizedTransmissionMode)的信息传输方式。这种异步方式主要体现在两个地方:传递信息和等待确认。在为电信运营商编写软件的过程当中,解决大容量(百万用户以上)要求下的快速查找与匹配成为实现这个系统的核心任务。作者在反复设计整个过程中曾经尝试过很多种方式和算法,但

2、都未能取得满意的效果。最终不得不自己开始设计针对这种系统的特殊存储模式。并在这个过程中,找到了一种比较理想的数据存储结构——哈希树(HashTree)。一、查找算法在各种数据结构(线性表、树等)中,记录在结构中的相对位置是随机的,和记录的关键字之间不存在确定的关系。因此在机构中查找记录的时需要进行一系列和关键字的比较。这一类的查找方法建立在“比较”的基础上。在顺序查找时,比较的结果为“”与“”两种可能。在折半查找、二叉排序树查找和树查找时,比较的结果为“”、“”与“”三种可能。查找的效率依赖于查找过程中所进行的比较次数。为确定记

3、录在查找表中的位置,需和给定值进行比较的关键字个数的期望值成为查找算法在查找成功时的平均查找长度(AverageSearchLength)。下面我们简单讨论一下在含有个数据记录的结构中,各种查找算法的平均查找长度。在等概率的情况下,顺序查找的平均查找长度为:对于折半查找(表要求是顺序表),在比较大()的时候,可有以下近似结果:在随机情况下(二叉树查找可能退化为顺序查找),对于二叉树,其平均查找长度为:在平衡二叉树上进行查找,其平均查找长度为:,其中对于一颗阶的树,从根节点到关键字所在节点的路径上涉及的节点数可以说是平均查找长度的

4、上限:总的来说,这些查找算法的效率都将随着数据记录数的增长而下降。仅仅是有的比较快(时间复杂度为),有的比较慢(时间复杂度是)而已。这些查找算法的平均查找长度是在一种比较理想的情况下获得的。在实际应用当中,对数据结构中数据的频繁增加和删除将不断地改变着数据的结构。这些操作将可能导致某些数据结构退化为链表结构,那么其性能必然将下降。为了避免出现这种情况而采取的调整措施,又不可避免的增加了程序的复杂程度以及操作的额外时间。二、哈希表理想的情况是希望不经过任何比较,一次存取便能得到所查的记录,那就必须在记的存储位置和它的关键字之间建立

5、一个确定的对应关系,使每个关键字和结构中一个唯一的存储位置相对应。因而在查找时,只要根据这个对应关系找到给定值的像。若结构中存在关键字和相等的记录,则必定在的存储位置上,由此,不需要进行比较便可直接取得所查记录。在此,我们称这个对应关系为哈希(Hash)函数,按这个思想建立的表为哈希表。在哈希表中对于不同的关键字可能得到同一哈希地址,即,而。这种现象称做冲突(Collision)。在一般情况下,冲突只能尽可能地减少,而不能完全避免。因为哈希函数是从关键字集合到地址集合的映像。通常关键字的集合比较大,它的元素包括所有可能的关键字,

6、而地址集合的元素仅为哈希表中的地址值。假设标识符可定义为以字符为首的8位字符,则关键字(标识符)的集合大小为,而在一个源程序中出现的数据对象是有限的,设有10000个元素。地址集合中的元素为0到9999。因此在一般情况下,哈希函数是一个压缩映像函数,这就不可避免的要产生冲突。二、哈希树的理论基础2.1质数分辨定理定理1:选取任意个互不相同的质数:(),定义:设(),那么对于任意的,()=()不可能总成立。证明:假设定理1的结论不正确,那么对于任意的,()=()将总是成立。这个可以表达为:设:显然,是一个合数,而且包含质因素。根据

7、质数的定义和质因素分解定理,可以表达为:而另外一方面,根据,可以得出:很明显,这两个结论是相互矛盾的。因此原定理1正确。这个定理可以简单的表述为:个不同的质数可以“分辨”的连续整数的个数和他们的乘积相等。“分辨”就是指这些连续的整数不可能有完全相同的余数序列。这个为哈希树的分辨方式奠定了理论基础。显然,这个定理的一个特殊情况就是为从2起的连续质数。我们可以记为前个连续质数的乘积。连续10个质数就可以分辨大约个数,已经超过计算机中常用整数(32bit)的表达范围。连续100个质数就可以分辨大约。而按照目前的CPU水平,100次取余

8、的整数除法操作几乎不算什么难事。在实际应用中,整体的操作速度往往取决于节点将关键字装载内存的次数和时间。一般来说,装载的时间是由关键字的大小和硬件来决定的;在相同类型关键字和相同硬件条件下,实际的整体操作时间就主要取决于装载的次数。他们之间是一个成正比的关系。2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。