- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.5 最优二叉搜索树Optimal Binary Search Trees
1二叉搜索树
2最优二叉搜索树
3最优二叉搜索树问题描述
4最优子结构性质
5递归计算最优值
6算法
是一棵空树或者满足以下的性质:
每个结点作为搜索对象,它的关键字是互不相同的。
对于树上的所有结点,如果它有左子树,那么左子树上所有结点的关键字都小于该结点的关键字。
对于树上的所有结点,如果它有右子树,那么右子树上所有结点的关键字都大于该结点的关键字。
1 二叉搜索树
搜索过程:从根结点开始,如果根为空,则搜索不成功;否则使用待搜索值与根结点比较,如果待搜索值等于根结点关键字,则搜索成功返回,如果小于根结点,则向左子树搜索;如果大于根结点,则向右子树搜索。
1 二叉搜索树
对于一个给定的关键字集合,可能有若干不同的二分检索树
如对保留字的子集
Name: 1 2 3 4 5
for if loop repeat while
的两棵二分检索树为
考虑a图和b图中最坏比较次数和平均比较次数
1 二叉搜索树
构造不同的二叉搜索树就有不同的性能特征。
二叉搜索树a在最坏情况下找一个标识符需要4次比较,而b表示的二分检索树最坏情况下只需3次比较。
假设只作成功的检索并且检索每个标识符的概率相同,则两棵二分检索树在平均情况下各需要12/5和11/5次比较。
1 二叉搜索树
2、最优二叉搜索树
存在的两个问题
1 在实际中也会遇到不成功检索的情况。
2 在实际中,不同标识符会有不同的检索概率。
对给定的标识符集合,希望给出构造二分搜索树的方法,使得所构造的二分搜索树具有最优的性能。
2 最优二叉搜索树
扩充二叉树:当二叉树里出现空的子树时,就增加新的、特殊的结点——空树叶。对于原来二叉树里度数为1的分支结点,在它下面增加一个空树叶;对于原来二叉树的树叶,在它下面增加两个空树叶。
扩充二叉树是满二叉树,新增加的空树叶(以下称外部结点)的个数等于原来二叉树的结点(以下称内部结点)个数加1。
在实际中也会遇到不成功检索的情况
2 最优二叉搜索树
A
A代表其值处于wim和wul之间的可能关键码集合
2 最优二叉搜索树
设 S={x1, x2, ···, xn} 是一个有序集合,且x1, x2, ···, xn表示有序集合的二叉搜索树利用二叉树的顶点存储有序集中的元素,而且具有性质:
存储于每个顶点中的元素x 大于其左子树中任一个顶点中存储的元素,小于其右子树中任意顶点中存储的元素。二叉树中的叶顶点是形如(xi, xi+1) 的开区间。
在二叉搜索树中搜索一个元素x
(1) 在二叉树的内部顶点处找到: x = xi
(2) 在二叉树的叶顶点中确定: x∈ (xi , xi+1)
2 最优二叉搜索树
在实际中,不同标识符会有不同的检索概率。
设Pi是对ai检索的概率。
设qi是对满足aiXai+1,0?i ? n的标识符X检索的概率, (假定a0=-?且an+1=+?)。
a1
Q(0)
E0
P(1)
a2
E1
Q(1)
P(2)
ai
P(i)
ai+1
Ei
Q(i)
P(i+1)
an
P(n)
En
Q(n)
2 最优二叉搜索树
最优二叉搜索树
利用动态规划构造对标识符集合
{a1, a2, …, an}的最优二叉搜索树算法(包括成功检索和不成功检索)。
2 最优二叉搜索树
例 标识符集{1, 2, 3}={do, if, stop}可能的二分检索树为:
设每个内、外结点检索的概率相同:pi=qi=1/7,
求每棵树的平均比较次数(成本)。
若P1=0.5, P2=0.1, P3=0.05,
q0=0.15, q1=0.1, q2=0.05, q3=0.05,求每棵树的平均比较次数(成本)。
在检索过程中,每进行一次比较,就进入下面一层,
对于成功的检索,比较的次数就是所在的层数加1。
对于不成功的检索,被检索的关键码属于那个外部结点代表的可能关键码集合,比较次数就等于此外部结点的层数。
2 最优二叉搜索树
例:
P1=0.5, P2=0.1, P3=0.05, q0=0.15, q1=0.1, q2=0.05, q3=0.05
考虑平均搜索次数,也叫做平均路长
Pa(n)=1 × p1 + 2 × p2+3 × p3 + 1×q0 +2×q1+ 3×( q2 + q3 )
=1 × 0.5+ 2 × 0.1+3 ×0.05 + 1×0.05 +2×0.1+ 3×( 0.05 + 0.05 )
=1.5
2 最优二叉搜索树
a
文档评论(0)