- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于贪心算法构建最优二叉查找树.pdf
山西师范大学学报(自然科学版)
第29卷第 1期 JournalofShanxiNormalUniversity Vol_29 No.1
2015年 3月 NaturalScienceEdition March.2015
文章编号:1009-4490(2015)01-0040-05
基于贪心算法构建最优二叉查找树
王文霞
(运城学院计算机科学与技术系,山西 运城 044000)
摘 要:分析二叉查找树与赫夫曼树各 自的特点 ,提出了一种构建最优二叉查找树的算法即贪心算法,
并用VC++程序设计语言编码实现.实验结果表明:贪心算法不仅趋于稳定、时间效率明显优于动态
规划算法 ,而且还实现了其数据规模达到2O000时空间上的突破.
关键词:最优二叉查找树;哈夫曼树;贪心算法 ;效率
中图分类号:TP301.6 文献标识码 :A
O 引言
随着信息技术的快速发展,出现了各类信息检索,比如百度检索、知网文章检索等,如何提高检索效率
就成为一个比较重要的问题.常用的数据存储结构有两大类,树形存储结构和线性存储结构,但是树形存
储结构比线性存储结构更加灵活方便,这就是现在好多数据检索中经常用树形存储结构检索的原因….
树形存储结构又分为二叉排序树、最优二叉树、平衡二叉树等 j,这些树是在所有结点的查找概率均相等
的情况下完成的.若在相同的概率下查找,那么二又排序树的平均比较次数是最少的,因为只考虑结点的
深度.如果所给各结点的查找概率不同,如何构造一棵最优的二叉查找树?
目前构建一棵最优二叉查找树多采用的是动态规划法 .4J,本文把二叉查找树的特点和赫夫曼树的
思想结合起来,提出了用贪心算法来构建最优二叉查找树.
1 问题分析
给定n个有序结点的二叉查找树S=(s,s,…,S),各结点的查找概率为P=(P,P,…,P),要求S
中各元素互不相同,且该树需具有以下性质:(1)如果s是一棵空树,则S树中没有一个结点;(2)若s不为
空,树中每个结点包含一个键值,最多有两个孩子,并且对于任意两个结点 和Y,它们需要满足下述性质:
① 如果 在Y的左子树里,则key(Y)key(x);②如果 在Y的右子树里,则key(Y)key();(3)二
叉查找树的空指针对应(e,e ,)(i:0,1,…,n,设 e。=一o0,e =+∞)且各空指针的查找概率为q=
(q。,q,…,q).在5树中查找一个元素有以下两种情形:(1)查找成功,返回其在树中的位置;(2)查找不
成功,返回空指针.具有 7/,个结点的二叉查找树中共有 n+1个空指针.我们称 Js为实结点,e为虚结点且
P+ qj=1 .设在一棵二叉查找树S=(s。,s,…s)中,实结点s深度为m,查找概率为P;虚结点
i:1 =O
e的深度为n,查找概率为q.定义每个结点的层次为该结点的路径长度,如果查找成功在实结点处,那么
需要比较的次数就等于该实结点的深度加 1;如果查找不成功时在虚结点处,需要比较的次数等于该虚结
点的深度 j.所以一棵二叉查找树的平均比较次数可以表示如下:
收稿 日期 :2013—12—17
作者简介:王文霞 (1979一),女,山西运城人,运城学院计算机科学与技术系讲师,硕士,主要从事算法分析方面的研究
第 1期 王文霞:基于贪心算法构建最优二叉查找树
G=∑P×( +1)+∑qi× =1 (1)
i=l :0
对于有n个字符的集合,其字符有n!种不同的排列,可构成多棵二叉查找树.因为在二叉查找树中结
点的深度越大,需要比较的次数就会越多,所以要构造一棵最优二叉查找树就应在离根结点比较近的地方
放置查找概率高的结点 .上述构造思想与构造赫夫曼树的思想相似,但因赫夫曼树中查找概率小的结
点离根远,概率高的结点离根近,而最优二叉查找树中结点的左右顺序不能随意变化,所以不能完全根据
赫夫曼树来设计 .
文档评论(0)