第3章 最优二叉搜索树.ppt_第1页
第3章 最优二叉搜索树.ppt_第2页
第3章 最优二叉搜索树.ppt_第3页
第3章 最优二叉搜索树.ppt_第4页
第3章 最优二叉搜索树.ppt_第5页
免费预览已结束,剩余46页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,3.5最优二叉搜索树OptimalBinarySearchTrees,2,1二叉搜索树2最优二叉搜索树3最优二叉搜索树问题描述4最优子结构性质5递归计算最优值6算法,3,是一棵空树或者满足以下的性质:每个结点作为搜索对象,它的关键字是互不相同的。对于树上的所有结点,如果它有左子树,那么左子树上所有结点的关键字都小于该结点的关键字。对于树上的所有结点,如果它有右子树,那么右子树上所有结点的关键字都大于该结点的关键字。,1二叉搜索树,4,搜索过程:从根结点开始,如果根为空,则搜索不成功;否则使用待搜索值与根结点比较,如果待搜索值等于根结点关键字,则搜索成功返回,如果小于根结点,则向左子树搜索;如果大于根结点,则向右子树搜索。,1二叉搜索树,5,对于一个给定的关键字集合,可能有若干不同的二分检索树如对保留字的子集Name:12345foriflooprepeatwhile的两棵二分检索树为,考虑a图和b图中最坏比较次数和平均比较次数,1二叉搜索树,6,构造不同的二叉搜索树就有不同的性能特征。二叉搜索树a在最坏情况下找一个标识符需要4次比较,而b表示的二分检索树最坏情况下只需3次比较。假设只作成功的检索并且检索每个标识符的概率相同,则两棵二分检索树在平均情况下各需要12/5和11/5次比较。,1二叉搜索树,7,2、最优二叉搜索树,存在的两个问题1在实际中也会遇到不成功检索的情况。2在实际中,不同标识符会有不同的检索概率。对给定的标识符集合,希望给出构造二分搜索树的方法,使得所构造的二分搜索树具有最优的性能。,2最优二叉搜索树,8,扩充二叉树:当二叉树里出现空的子树时,就增加新的、特殊的结点空树叶。对于原来二叉树里度数为1的分支结点,在它下面增加一个空树叶;对于原来二叉树的树叶,在它下面增加两个空树叶。扩充二叉树是满二叉树,新增加的空树叶(以下称外部结点)的个数等于原来二叉树的结点(以下称内部结点)个数加1。,在实际中也会遇到不成功检索的情况,2最优二叉搜索树,9,A,A代表其值处于wim和wul之间的可能关键码集合,2最优二叉搜索树,10,设S=x1,x2,xn是一个有序集合,且x1,x2,xn表示有序集合的二叉搜索树利用二叉树的顶点存储有序集中的元素,而且具有性质:存储于每个顶点中的元素x大于其左子树中任一个顶点中存储的元素,小于其右子树中任意顶点中存储的元素。二叉树中的叶顶点是形如(xi,xi+1)的开区间。,在二叉搜索树中搜索一个元素x,(1)在二叉树的内部顶点处找到:x=xi(2)在二叉树的叶顶点中确定:x(xi,xi+1),2最优二叉搜索树,11,在实际中,不同标识符会有不同的检索概率。,设Pi是对ai检索的概率。设qi是对满足aiXai+1,0in的标识符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最优二叉搜索树,12,最优二叉搜索树,利用动态规划构造对标识符集合a1,a2,an的最优二叉搜索树算法(包括成功检索和不成功检索)。,2最优二叉搜索树,13,例标识符集1,2,3do,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,求每棵树的平均比较次数(成本)。,14,在检索过程中,每进行一次比较,就进入下面一层,对于成功的检索,比较的次数就是所在的层数加1。对于不成功的检索,被检索的关键码属于那个外部结点代表的可能关键码集合,比较次数就等于此外部结点的层数。,2最优二叉搜索树,15,例:,P1=0.5,P2=0.1,P3=0.05,q0=0.15,q1=0.1,q2=0.05,q3=0.05,考虑平均搜索次数,也叫做平均路长,Pa(n)=1p1+2p2+3p3+1q0+2q1+3(q2+q3)=10.5+20.1+30.05+10.05+20.1+3(0.05+0.05)=1.5,2最优二叉搜索树,abcde,16,分析,对于图的内结点而言,第0层需要比较操作次数为1,第1层需要比较2次,第2层需要3次Pb(n)=1p1+2p3+3p2+1q0+3(q2+q3)=10.5+20.05+30.1+10.15+20.05+3(0.05+0.05)=1.6Pc(n)=1p2+2(p1+p3)+2(q0+q1+q2+q3)=10.1+2(0.5+0.05)+2(0.15+0.1+0.05+0.05)=1.9Pd(n)=1p3+2p1+3p2+1q3+2q0+3(q1+q2)=10.05+20.5+30.1+10.05+20.15+3(0.1+0.05)=2.15Pe(n)=1p3+2p1+3p2+1q3+2q0+3(q1+q2)=10.05+20.5+30.1+10.05+20.15+3(0.1+0.05)=2.15,2最优二叉搜索树,17,找到元素x=xi的概率为bi;确定x(xi,xi+1)的概率为ai。其中约定x0=,xn+1=+,有,2最优二叉搜索树,18,在一个表示S的二叉树T中,设存储元素xi的结点深度为ci;叶结点(xj,xj1)的结点深度为dj。,表示在二叉搜索树T中作一次搜索所需的平均比较次数。P又称为二叉搜索树T的平均路长,在一般情况下,不同的二叉搜索树的平均路长是不同的。,2最优二叉搜索树,19,3、最优二叉搜索树问题描述,对于有序集S及其存取概率分布(a0,b1,a1,bn,an),在所有表示有序集S的二叉搜索树中找出一棵具有最小平均路长的二叉搜索树。结点在二叉搜索树中的层次越深,需要比较的次数就越多,因此要构造一棵最小二叉树,一般尽量把搜索概率较高的结点放在较高的层次。,3最优二叉搜索树问题,20,4、最优子结构性质,假设选择k为树根,则1,2,k-1和a0,a1,ak-1都将位于左子树L上,其余结点(k+1,n和ak,ak+1,an)位于右子树R上。,4最优子结构性质,21,4最优子结构性质,22,4最优子结构性质,23,设COST(L)和COST(R)分别是二分检索树T的左子树和右子树的成本。则检索树T的成本是:P(k)+COST(L)+COST(R)+若T是最优的,则上式及COST(L)和COST(R)必定都取最小值。,4最优子结构性质,24,最优子结构性质证明,二叉搜索树T的一棵含有顶点xi,xj和叶顶点(xi-1,xi),(xj,xj+1)的子树可以看作是有序集xi,xj关于全集为xi-1,xj1的一棵二叉搜索树(T自身可以看作是有序集)。根据S的存取分布概率,在子树的顶点处被搜索到的概率是:,4最优子结构性质,25,左子树的搜索概率,右子树的搜索概率,设Tij是有序集xi,xj关于存储概率分布为ai-1,bi,bj,aj的一棵最优二叉搜索树,其平均路长为pij,Tij的根顶点存储的元素xm,其左子树Tl和右子树Tr的平均路长分别为pl和pr。由于Tl和Tr中顶点深度是它们在Tij中的深度减1,所以得到,4最优子结构性质,26,构造最优二叉搜索树时,可以选择先构造其左右子树,使其左右子树最优,然后构造整棵树。,4最优子结构性质,27,5、递归计算最优值,最优二叉搜索树Tij的平均路长为pij,则所求的最优值为p1,n。由二叉树的花费公式根据最优二叉搜索树问题的最优子结构性质可建立计算pij的递归式如下,初始时,5递归计算最优值,28,记wi,jpi,j为m(i,j),递归计算最优值,5递归计算最优值,29,根据该公式,计算树Tij的花费只用到了Tik-1,Tk+1j,可得到具体求解过程如下:1)构造只有1个内部结点的最优二叉搜索树T11,T22,Tnn,可以求得mii同时可以用一个数组存做根结点元素为:s11=1,s22=2snn=n2)构造具有2个内部结点的最优二叉搜索树,30,例,给出标识符集1,2,3do,if,stop存取概率若P1=0.5,P2=0.1,P3=0.05,q0=0.15,q1=0.1,q2=0.05,q3=0.05构造一棵最优二叉搜索树,5递归计算最优值,31,q0=0.15,P1=0.5,q1=0.1,P2=0.1,q2=0.05,P3=0.05,q3=0.05,T12,w12=0.9m12=0.9+m11+m32=1.65,w12=0.9m12=0.9+m10+m22=1.15,32,q0=0.15,P1=0.5,q1=0.1,P2=0.1,q2=0.05,P3=0.05,q3=0.05,T12,w12=0.9m12=0.9+m11+m32=1.65,w12=0.9m12=0.9+m10+m22=1.15,T23w23=0.5,m23=0.5,m23=0.6,33,q0=0.15,P1=0.5,q1=0.1,P2=0.1,q2=0.05,P3=0.05,q3=0.05,T12,w12=0.9m12=0.9+m11+m32=1.65,w12=0.9m12=0.9+m10+m22=1.15,T23w23=0.35,m23=0.5,m23=0.6,34,T12m12=1.15,T23m23=0.5,T13W13=1,m13=1.5,m13=1.9,m13=2.15,q0=0.15,P1=0.5,q1=0.1,P2=0.1,q2=0.05,P3=0.05,q3=0.05,35,T12m12=1.15,T23m23=0.5,2,3,q2,q3,1,q0,q1,T13W13=1,m13=1.5,2,3,q2,q3,1,q0,q1,m13=1.9,2,3,q2,q3,1,q0,q1,m13=2.15,q0=0.15,P1=0.5,q1=0.1,P2=0.1,q2=0.05,P3=0.05,q3=0.05,36,0,1,2,3,1,2,3,0,0,0,0,4,0123,1234,W(i,j),0123,1234,0,0,0,0,0.15,0.1,0.05,0.05,0.75,0.75,1,0.25,0.15,0.25,0.15,2,3,0.9,1.15,1,0.35,1,0.5,2,1.5,1,m(i,j),s(i,j),q0=0.15,P1=0.5,q1=0.1,P2=0.1,q2=0.05,P3=0.05,q3=0.05,37,具体求解过程,递归出口,没有内部节点时,构造T10T21,T32,Tn+1n2)构造具有2个、3个、n个内部结点的最优二叉搜索树r(起止下标的差)0T11,T22,,Tnn,1T12,T23,,Tn-1n,2T13,T24,,Tn-2n,rT1r+1,T2r+2,,Tii+r,Tn-rnn-1T1n,5递归计算最优值,38,voidOBST(int*a,int*b,intn,int*m,int*s,int*w),for(inti=0;i=n;i+)wi+1i=ai;mi+1i=0;/初始化,构造没有内部节点时的情况for(intr=0;rn;r+)for(inti=1;i=n-r;i+)intj=i+r;构造Tij,填写wij,mij,sij,39,构造Tij,Tij表示用第i到第j个内部节点构造的树,做根的结点可以是第i,i+1,j中任意一个。1)首选i作为根,其左子树空,右子树为结点i+1,i+2j构成即Ti+1j。mij=wij+0+mi+1jsij=i2)不选i做根,设k为其根,则k=i+1,j,左子树为结点i,i+1,k-1,右子树为k+1,k+2,jt=wij+mik-1+mk+1jif(tmij)mij=t;sij=k;3)k=k+1,跳回2,5递归计算最优值,40,voidOptimalBinarySearchTree(int*a,int*b,intn,int*m,int*s,int*w)for(inti=0;i=n;i+)wi+1i=ai;mi+1i=0;for(intr=0;rn;r+)for(inti=1;i=n-r;i+)intj=j+r;wij=wij-1+aj+bj;mij=mi+1j;sij=i;,for(intk=i+1;k=j;k+)intt=mik-1+mk+1j;if(tmij)mij=t;sij=k;mij+=wij;,初始化对角线赋值,i为起始元素下标,j为终止元素下标,加第j个结点后,权值w改变,如第i个结点作根的值,取第k个结点作根,5递归计算最优值,41,6、构造最优解,6构造最优解,42,7、计算复杂性,43,练习,设n=4,且(1,2,3,4)=(do,if,read,while)。又设b(1:4)=(3,3,1,1)和a(0:4)=(2,3,1,1,1)(这些b,a都乘了16。)写出数组wij,mij,sij及最后的最优二叉搜索树。,44,作业,P843-15,45,Exercises,Determinethecostandstructureofanoptimalbinarysearchtreeforasetofn=7keyswiththefollowingprobabilities:i:01234567pi0.04,0.06,0.08,0.02,0.10,0.12,0.14qi0.06,0.06,0.06,0.06,0.05,0.05,0.05,0.05,46,动态规划总结,一、动态规划的基本思想:将问题分解为若干小问题,解子问题,然后从子问题得到原问题的解。,47,二、动态规划特点,将问题分解为子问题,这些子问题往往不相互独立。(如果可以用分治法求解,分解的子问题太多,因此,用分治法时间代价太高,消耗指数时间),4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论