最优二叉搜索树

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

8
2 最优二叉搜索树
xal
wan wil wen wim wul xem yo xul yu m
zol zom
yon
zi
A
A代表其值处于 代表其值处于wim和wul之间的可能关键码集合 代表其值处于 和 之间的可能关键码集合
9
2 最优二叉搜索树
在二叉搜索树中搜索一个元素x 在二叉搜索树中搜索一个元素
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
2 最优二叉搜索树
在检索过程中,每进行一次比较,就进入下面一层, 在检索过程中,每进行一次比较,就进入下面一层, • 对于成功的检索,比较的次数就是所在的层数加 。 对于成功的检索,比较的次数就是所在的层数加1。 • 对于不成功的检索,被检索的关键码属于那个外部结 对于不成功的检索, 点代表的可能关键码集合, 点代表的可能关键码集合,比较次数就等于此外部结 点的层数。 点的层数。
6
2 最优二叉搜索树
2、最优二叉搜索树 、
存在的两个问题 1 在实际中也会遇到不成功检索的情况。 在实际中也会遇到不成功检索的情况。 不成功检索的情况 2 在实际中,不同标识符会有不同的检索概率。 在实际中,不同标识符会有不同的检索概率。 不同的检索概率 • 对给定的标识符集合,希望给出构造二分搜索 对给定的标识符集合, 树的方法,使得所构造的二分搜索树具有最优 树的方法,使得所构造的二分搜索树具有最优 的性能。 的性能。
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, a1, …, ak-1
是一棵空树或者满足以下的性质: 是一棵空树或者满足以下的性质: 每个结点作为搜索对象,它的关键字是互不相同 互不相同的 每个结点作为搜索对象,它的关键字是互不相同的。 对于树上的所有结点,如果它有左子树,那么左子树 对于树上的所有结点,如果它有左子树 左子树, 上所有结点的关键字都小于该结点的关键字。 小于该结点的关键字 上所有结点的关键字都小于该结点的关键字。 对于树上的所有结点,如果它有右子树 右子树, 对于树上的所有结点,如果它有右子树,那么右子树 大于该结点的关键字 上所有结点的关键字都大于该结点的关键字。 上所有结点的关键字都大于该结点的关键字。
3.5 最优二叉搜索树 Optimal Binary Search Trees
1
• • • • • •
1二叉搜索树 二叉搜索树 2最优二叉搜索树 最优二叉搜索树 3最优二叉搜索树问题描述 最优二叉搜索树问题描述 4最优子结构性质 最优子结构性质 5递归计算最优值 递归计算最优值 6算法 算法
2
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)
loop
考虑a图和 图中最 考虑 图和b图中最 图和 坏比较次数和平均 比较次数
while b
5
if for repeat loop a while for
if repeat loop b while
1 二叉搜索树
• 构造不同的二叉搜索树就有不同的性能特征。 构造不同的二叉搜索树就有不同的性能特征 就有不同的性能特征。
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 。 +
4
1 二叉搜索树
• 对于一个给定的关键字集合,可能有若干不同的 对于一个给定的关键字集合, 二分检索树 • 如对保留字的子集 Name: 1 2 3 4 5 : for if loop repeat while 的两棵二分检索树为
if for repeat loop a while for if repeat
• 设 S={x1, x2, ···, xn} 是一个有序集合,且x1, 是一个有序集合, x2, ···, xn表示有序集合的二叉搜索树利用二叉树 的顶点存储有序集中的元素,而且具有性质: 的顶点存储有序集中的元素,而且具有性质:
– 存储于每个顶点中的元素 大于其左子树中任一个 存储于每个顶点中的元素x 顶点中存储的元素, 顶点中存储的元素,小于其右子树中任意顶点中存 储的元素。二叉树中的叶顶点是形如(x 储的元素。二叉树中的叶顶点是形如 i, xi+1) 的开 区间。 区间。 (1) 在二叉树的内部顶点处找到: x = xi 在二叉树的内部顶点处找到: (2) 在二叉树的叶顶点中确定: x∈ (xi , xi+1) 在二叉树的叶顶点中确定: ∈
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
7
2 最优二叉搜索树
在实际中也会遇到不成功检索的情况 在实际中也会遇到不成功检索的情况 不成功
• 扩充二叉树:当二叉树里出现空的子树时, 扩充二叉树:当二叉树里出现空的子树时, 就增加新的、特殊的结点——空树叶。对 空树叶。 就增加新的、特殊的结点 空树叶 于原来二叉树里度数为1的分支结点 的分支结点, 于原来二叉树里度数为 的分支结点,在它 下面增加一个空树叶; 下面增加一个空树叶;对于原来二叉树的 树叶,在它下面增加两个空树叶。 树叶,在它下面增加两个空树叶。 • 扩充二叉树是满二叉树,新增加的空树叶 扩充二叉树是满二叉树 满二叉树, 以下称外部结点) (以下称外部结点)的个数等于原来二叉 树的结点(以下称内部结点)个数加1。 树的结点(以下称内部结点)个数加 。
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
3、最优二叉搜索树问题描述 、
• 对于有序集 及其存取概率分布 对于有序集S及其存取概率分布 ),在所有表示有序集 (a0, b1, a1, ···, bn, an),在所有表示有序集 S的二叉搜索树中找出一棵具有最小平均路 的二叉搜索树中找出一棵具有最小平均路 长的二叉搜索树。 长的二叉搜索树。 结点在二叉搜索树中的层次越深, 结点在二叉搜索树中的层次越深,需要比 较的次数就越多, 较的次数就越多,因此要构造一棵最小二 叉树,一般尽量把搜索概率较高的结点放 叉树, 在较高的层次。 在较高的层次。
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
下找一个标识符需要4次比 • 二叉搜索树 在最坏情况下找一个标识符需要 次比 二叉搜索树a在最坏情况下找一个标识符需要 表示的二分检索树最坏情况下只需3次比较 较,而b表示的二分检索树最坏情况下只需 次比较。 表示的二分检索树最坏情况下只需 次比较。 • 假设只作成功的检索并且检索每个标识符的概率相同, 假设只作成功的检索并且检索每个标识符的概率相同 作成功的检索并且检索每个标识符的概率相同, 则两棵二分检索树在平均情况下各需要12/5和11/5次 则两棵二分检索树在平均情况下各需要 和 次 比较。 比较。
• 表示在二叉搜索树T中作一次搜索所需的平均比 表示在二叉搜索树 中作一次搜索所需的平均比 较次数。 又称为二叉搜索树 的平均路长, 又称为二叉搜索树T的平均路长 较次数。P又称为二叉搜索树 的平均路长,在 一般情况下, 一般情况下,不同的二叉搜索树的平均路长是不 同的。 同的。
18
3 最优二叉搜索树问题
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 分检索树为: 分检索树为:
3
1 二叉搜索树
xal
wan wil wen wim wul xem yo xul
zol zom yu m yon
zi
搜索过程:从根结点开始,如果根为空, 搜索过程:从根结点开始,如果根为空,则搜索 不成功;否则使用待搜索值与根结点比较, 不成功;否则使用待搜索值与根结点比较,如 果待搜索值等于根结点关键字, 果待搜索值等于根结点关键字,则搜索成功返 如果小于根结点,则向左子树搜索; 回,如果小于根结点,则向左子树搜索;如果 大于根结点,则向右子树搜索。 大于根结点,则向右子树搜索。
考虑平均搜索次数, 考虑平均搜索次数,也叫做 平均路长 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
相关文档
最新文档