最优二叉搜索树

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
1 二叉搜索树
xal
wan wil wen wim wul xem yo xul
zol zom yu m yon
zi
搜索过程:从根结点开始,如果根为空, 搜索过程:从根结点开始,如果根为空,则搜索 不成功;否则使用待搜索值与根结点比较, 不成功;否则使用待搜索值与根结点比较,如 果待搜索值等于根结点关键字, 果待搜索值等于根结点关键字,则搜索成功返 如果小于根结点,则向左子树搜索; 回,如果小于根结点,则向左子树搜索;如果 大于根结点,则向右子树搜索。 大于根结点,则向右子树搜索。
14
2 最优二叉搜索树 P1=0.5, P2=0.1, P3=0.05, q0=0.15, q1=0.1, q2=0.05, q3=0.05
例:
1 q0 q1 q2 a 2
3 1 q0 3 q3 q1 b 2 q2 3 q3 q0 1 q1 q2 c 2 3 q0 q3 d 1 q1 q1 e q2 2 q2 q0 2 q3 1 3 q3
• 设 S={x1, x2, ···, xn} 是一个有序集合,且x1, 是一个有序集合, x2, ···, xn表示有序集合的二叉搜索树利用二叉树 的顶点存储有序集中的元素,而且具有性质: 的顶点存储有序集中的元素,而且具有性质:
– 存储于每个顶点中的元素 大于其左子树中任一个 存储于每个顶点中的元素x 顶点中存储的元素, 顶点中存储的元素,小于其右子树中任意顶点中存 储的元素。二叉树中的叶顶点是形如(x 储的元素。二叉树中的叶顶点是形如 i, xi+1) 的开 区间。 区间。 (1) 在二叉树的内部顶点处找到: x = xi 在二叉树的内部顶点处找到: (2) 在二叉树的叶顶点中确定: x∈ (xi , xi+1) 在二叉树的叶顶点中确定: ∈
1 2 3 2 (c) (d) (a) (b) (e) 1 3 1 2 1 3 2 1 2 3
• 设每个内、外结点检索的概率相同: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,求每棵树的平均比较 , 次数(成本)。 次数(成本)。 13
8
2 最优二叉搜索树
xal
wan wil wen wim wul xem yo xul yu m
zol zom
yon
zi
A
A代表其值处于 代表其值处于wim和wul之间的可能关键码集合 代表其值处于 和 之间的可能关键码集合
9
2 最优二叉搜索树
在二叉搜索树中搜索一个元素x 在二叉搜索树中搜索一个元素
19
4 最优子结构性质
4、最优子结构性质 、
• 假设选择 k为树根,则 1, 2, …, k-1 和a0, 为树根, 为树根 a1, …, ak-1 都将位于左子树 L 上,其余 结点 (k+1, …, n 和 ak, ak+1, …, an)位于 位于 右子树 R 上。 k
L R
1, 2, …, k-1 a0, பைடு நூலகம்1, …, ak-1
7
2 最优二叉搜索树
在实际中也会遇到不成功检索的情况 在实际中也会遇到不成功检索的情况 不成功
• 扩充二叉树:当二叉树里出现空的子树时, 扩充二叉树:当二叉树里出现空的子树时, 就增加新的、特殊的结点——空树叶。对 空树叶。 就增加新的、特殊的结点 空树叶 于原来二叉树里度数为1的分支结点 的分支结点, 于原来二叉树里度数为 的分支结点,在它 下面增加一个空树叶; 下面增加一个空树叶;对于原来二叉树的 树叶,在它下面增加两个空树叶。 树叶,在它下面增加两个空树叶。 • 扩充二叉树是满二叉树,新增加的空树叶 扩充二叉树是满二叉树 满二叉树, 以下称外部结点) (以下称外部结点)的个数等于原来二叉 树的结点(以下称内部结点)个数加1。 树的结点(以下称内部结点)个数加 。
10
2 最优二叉搜索树
在实际中,不同标识符会有不同的检索概率。 在实际中,不同标识符会有不同的检索概率。 不同的检索概率 • 设Pi是对 i检索的概率。 是对a 检索的概率。 是对满足a 的标识符X检 • 设qi是对满足 i<X<ai+1,0≤i ≤ n的标识符 检 ≤ 的标识符 索的概率, 假定 假定a ∞ 索的概率, (假定 0=-∞且an+1=+∞)。 + 。 P(1) P(2) P(i) P(i+1) P(n) an En Q(n)
4
1 二叉搜索树
• 对于一个给定的关键字集合,可能有若干不同的 对于一个给定的关键字集合, 二分检索树 • 如对保留字的子集 Name: 1 2 3 4 5 : for if loop repeat while 的两棵二分检索树为
if for repeat loop a while for if repeat
11
E0 a1 E1 a2 Q(0) Q(1)
ai Ei ai+1 Q(i)
2 最优二叉搜索树
最优二叉搜索树
利用动态规划构造对标识符集合 {a1, a2, …, an}的最优二叉搜索树算法 的最优二叉搜索树算法 包括成功检索 不成功检索)。 成功检索和 (包括成功检索和不成功检索)。
12
• 例 标识符集 2, 3}={do, if, stop}可能的二 标识符集{1, = 可能的二 3 分检索树为: 分检索树为:
16
2 最优二叉搜索树
• 找到元素 = xi的概率为 i;确定 ∈ (xi , xi+1)的 找到元素x 的概率为b 确定x∈ 的 概率为ai。其中约定x0= -∞ , xn+1= + ∞ ,有 概率为 其中约定 有
17
2 最优二叉搜索树
• 在一个表示S的二叉树 中,设存储元素xi的结点深 在一个表示 的二叉树T中 设存储元素 的二叉树 度为c 叶结点( 的结点深度为d 度为 i;叶结点(xj,xj+1)的结点深度为 j 。 +
3、最优二叉搜索树问题描述 、
• 对于有序集 及其存取概率分布 对于有序集S及其存取概率分布 ),在所有表示有序集 (a0, b1, a1, ···, bn, an),在所有表示有序集 S的二叉搜索树中找出一棵具有最小平均路 的二叉搜索树中找出一棵具有最小平均路 长的二叉搜索树。 长的二叉搜索树。 结点在二叉搜索树中的层次越深, 结点在二叉搜索树中的层次越深,需要比 较的次数就越多, 较的次数就越多,因此要构造一棵最小二 叉树,一般尽量把搜索概率较高的结点放 叉树, 在较高的层次。 在较高的层次。
loop
考虑a图和 图中最 考虑 图和b图中最 图和 坏比较次数和平均 比较次数
while b
5
if for repeat loop a while for
if repeat loop b while
1 二叉搜索树
• 构造不同的二叉搜索树就有不同的性能特征。 构造不同的二叉搜索树就有不同的性能特征 就有不同的性能特征。
是一棵空树或者满足以下的性质: 是一棵空树或者满足以下的性质: 每个结点作为搜索对象,它的关键字是互不相同 互不相同的 每个结点作为搜索对象,它的关键字是互不相同的。 对于树上的所有结点,如果它有左子树,那么左子树 对于树上的所有结点,如果它有左子树 左子树, 上所有结点的关键字都小于该结点的关键字。 小于该结点的关键字 上所有结点的关键字都小于该结点的关键字。 对于树上的所有结点,如果它有右子树 右子树, 对于树上的所有结点,如果它有右子树,那么右子树 大于该结点的关键字 上所有结点的关键字都大于该结点的关键字。 上所有结点的关键字都大于该结点的关键字。
• 表示在二叉搜索树T中作一次搜索所需的平均比 表示在二叉搜索树 中作一次搜索所需的平均比 较次数。 又称为二叉搜索树 的平均路长, 又称为二叉搜索树T的平均路长 较次数。P又称为二叉搜索树 的平均路长,在 一般情况下, 一般情况下,不同的二叉搜索树的平均路长是不 同的。 同的。
18
3 最优二叉搜索树问题
k+1, …, n ak, ak+1, …, an
20
4 最优子结构性质
51 14 72
06
33
53
97
13
25
43
64
84
99
21
4 最优子结构性质
51 14 72
06
33
53
97
13
25
43
64
15
2 最优二叉搜索树
分析
对于图的内结点而言, 层需要比较操作次数为1, 层需要比较2次 对于图的内结点而言,第0层需要比较操作次数为 ,第1层需要比较 次,第2层 层需要比较操作次数为 层需要比较 层 需要3次 需要 次 Pb(n)=1 × p1 + 2 × p3+3 × p2 + 1×q0 + 3×( q2 + q3 ) × × =1 × 0.5+ 2 × 0.05 + 3 ×0.1 + 1×0.15 +2×0.05+ 3×( 0.05 + 0.05 ) × × × =1.6 • Pc(n)=1 × p2 + 2 × (p1 + p3) + 2×(q0 +q1 +q2 + q3 ) × =1 × 0.1+ 2 × (0.5 + 0.05) + 2×(0.15 + 0.1 + 0.05 + 0.05) × =1.9 • Pd(n)=1 × p3 + 2 × p1+3 × p2 + 1 × q3+2 × q0 +3 × (q1+ q2) =1 × 0.05 + 2 × 0.5 + 3 × 0.1 + 1×0.05 + 2 × 0.15 + 3 × (0.1 + 0.05) × =2.15 • Pe(n)=1 × p3 + 2 × p1+3 × p2 + 1 × q3+2 × q0 +3 × (q1 + q2) =1 × 0.05 + 2 × 0.5 + 3 × 0.1 + 1×0.05 + 2 × 0.15 + 3 × (0.1 + 0.05) × =2.15
2 最优二叉搜索树
在检索过程中,每进行一次比较,就进入下面一层, 在检索过程中,每进行一次比较,就进入下面一层, • 对于成功的检索,比较的次数就是所在的层数加 。 对于成功的检索,比较的次数就是所在的层数加1。 • 对于不成功的检索,被检索的关键码属于那个外部结 对于不成功的检索, 点代表的可能关键码集合, 点代表的可能关键码集合,比较次数就等于此外部结 点的层数。 点的层数。
考虑平均搜索次数, 考虑平均搜索次数,也叫做 平均路长 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
3.5 最优二叉搜索树 Optimal Binary Search Trees
1
• • • • • •
1二叉搜索树 二叉搜索树 2最优二叉搜索树 最优二叉搜索树 3最优二叉搜索树问题描述 最优二叉搜索树问题描述 4最优子结构性质 最优子结构性质 5递归计算最优值 递归计算最优值 6算法 算法
2
1 二叉搜索树
下找一个标识符需要4次比 • 二叉搜索树 在最坏情况下找一个标识符需要 次比 二叉搜索树a在最坏情况下找一个标识符需要 表示的二分检索树最坏情况下只需3次比较 较,而b表示的二分检索树最坏情况下只需 次比较。 表示的二分检索树最坏情况下只需 次比较。 • 假设只作成功的检索并且检索每个标识符的概率相同, 假设只作成功的检索并且检索每个标识符的概率相同 作成功的检索并且检索每个标识符的概率相同, 则两棵二分检索树在平均情况下各需要12/5和11/5次 则两棵二分检索树在平均情况下各需要 和 次 比较。 比较。
6
2 最优二叉搜索树
2、最优二叉搜索树 、
存在的两个问题 1 在实际中也会遇到不成功检索的情况。 在实际中也会遇到不成功检索的情况。 不成功检索的情况 2 在实际中,不同标识符会有不同的检索概率。 在实际中,不同标识符会有不同的检索概率。 不同的检索概率 • 对给定的标识符集合,希望给出构造二分搜索 对给定的标识符集合, 树的方法,使得所构造的二分搜索树具有最优 树的方法,使得所构造的二分搜索树具有最优 的性能。 的性能。
相关文档
最新文档