32.二叉树与最优二叉树
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教师:田检
28
即最佳前缀码为:{10,010,111,110,001, 0111,0001,0110,00000,00001}。
(2) (2×20%+3×(10%+15%+10%+10%)+4×(5%+1 0%+10%)+5×(5%+5%))×10000=32500 即传输10000个数字需32500个二进制码。 (3)因为用等长码传输10个数字码长为4,即 用等长的码传10000个数字需40000个二进制 码,故用最佳前缀码传节省了7500个二进制码。
( 2)在w1 w2 , w3 ,, wm中选出两个最小的权, 连接它们对应的顶点, 得分支点及对应的权
(3)重复(2),直到形成m 1个分支点,m片树叶为止
教师:田检
16
例题1:求带权为 1,3,4,5,6的最优二叉树
19
8
11
4 1
4
5 3
教师:田检
6
17
例题2:求带权为 1,2, 3,4,6的最优二叉树
(m-1)i=t-1 证明: 由假设知, 该树有 i+t 个结点, 所以, 该树边数为 i+t -1。 因为所有结点出度之和等于边数,所以根据完全
m叉树的定义知, mi= i+t -1
即 (m-1)i=t-1
教师:田检
8
• 【例 7.7.2】假设有一台计算机, 它有 一条加法指令, 可计算 3 个数之和。 如果要求 9 个数x1, x2, …, x9之和, 问至少要执行几次加法指令? • 解: 用 3 个结点表示 3 个数, 把 9 个数看成树叶, 将表示 3 数之和的结点 作为它们的父亲结点。 这样本问题可理 解为求一个完全三叉树的分枝点的个数 问题。
教师:田检
3
在根树中,从树根到任 意顶点v的通路的长度 称为v的层数
层数最大的顶点的层数 称为树高
v1的层次为0, v2、 v3的层次为1, 其余结点
的层次均为2。树高2层。
教师:田检
4
• m叉树 • 在树的实际应用中, 我们经常研究完 全m 叉树。 • 定义 在根树中, 若结点的最大出度 等于 m , 则称这棵树为 m 叉树。 如果每 个结点的出度恰好等于0或 m , 则称这 棵 树 为 完 全 m 叉 树 。 二 叉 树 (binary tree ) 的每个结点 v 至多有两棵子树, 分别称为v的左子树和右子树。
教师:田检
11
【例7.7.4】 8 枚硬币问题。 若有 8 枚硬币a, b, c, d, e, f, g, h, 其中 7 枚重量相等, 只有 1 枚稍轻。 现要求以天平为工具, 用最少 的比较次数挑出轻币来。 解: 可用图7.7.6所示的树表示判断过程。 从图中可知, 只需称 2 次即可挑出轻币。 这种用于描述判断过程的树叫判定树。
31
教师:田检
12
在所有的m 叉树中,二叉树居重要地位,对计 算机来说,二叉树最容易处理,因此常将有序树 转化为二叉树,步骤如下:
(1)对于每个顶点只保留左儿子。
(2)兄弟间从左到右连接。
(3)对于每个分支点,保留的左儿子仍做左儿 子,右边邻接的顶点做作为兄弟的右儿子。
教师:田检
13
例如,图(a)是棵有序树,图(b)是表示图( a)的一棵
教师:田检
9
• 由定理7.7.1知, 有 (3-1)i=9-1 i=4 所以要执行 4 次加法指令。 图7.7.5表示了两种可能的顺序。
得
图 7.6.5
教师:田检
10
【例 7.7.3】设有 28 盏灯,拟公用一个电源,则 至少需要多少个4插头的接线板 ? 解:把 28盏灯看成树叶, 将4插头的接线板看 成分枝点, 这样本问题可理解为求一个完全四 叉树的分枝点的个数 i的问题。 由定理7.7.1知, 有 (4-1)i=28-1 得 i=9 所以至少需要9个4插头的接线板 。
如果传输过程中所有字 母出现的频率大致相等 ,等长 码是一种好方法。但是 往往频率是不一样的, 因此要 寻求一种用较短的字符 串表示频率高的字母, 以提高 传输效率的方法。
教师:田检
23
设 1 2 n1 n为长度是n的符号串,称其子串 1 ,
1 2 ,, 1 2 n1分别为的长度为 1,2,, n 1的前缀
c
b
教师:田检
21
a
d
e
练习 3:用二叉树表示算式
((a (b c )) d b) (c d )
教师:田检
22
前 缀 码 的 设 计 ——最优二叉树的应用
在远程通信中,常用 5位二进制码来表示一个 英文字母(24 26 25 )。
发送端发送一条0和1组成的字符串,接收端 将其 分成长度为 5的序列就得到了相应信 息。这种传输 信息的方法称为等长码 方法。
29
教师:田检
练习 4:在通信中八进制数出 现的频率如下:
0 1 2 3 4 5 30% 20% 15% 10% 10% 5% 6 5% 7 5%
求传输它们的最佳前缀 码。
参考答案: 0 01 1 11 2 3 4 5 6 7 1001
001 101 0000 0001 1000
教师:田检
30
教师:田检
i 1 m
其中L( w i )为带权w i的树叶v i的层数
在所有带权w1 , w2 ,, wm的二叉树中, 带权最小的二叉树称为 最优二叉树
教师:田检
15
Huffman算法:
给定实数w1 , w2 ,, wm , 且w1 w2 wm
(1)连接w1 , w2为权的两片树叶 , 得一分支点 , 其权为w1 w2
教师:田检
24
定理1 任意一颗二叉树的树叶 集合对应一组前缀码。 定理2 任何一组前缀码都对应 一颗二叉树。
0 1 0 1
0 0 0 00 1
1 01
0 10
1 11 0 0 00
0 1
1 01
1
0 01 (a )
0 01 (b )
{000,001,01,10,11}
{000,001,01,1}
25
二叉树,图(c)是相应的二叉位置树。
0 0 0 1 1 2 2 3 3 4 4 5 5 5 6 6 7 7 8 8 (a a) ) ( 0 8 1 2 3 4 9 4 9 9 10 10 6 7 3 1 2
10 5 6 7 8 (b ) 9 10 (c)
教师:田检
14
Fra Baidu bibliotek
最优二叉树
设二叉树T有m 片树叶,分别带权为w1 , w 2 , , w m , 称W (T ) w i L( w i )为T的权
16 16
10 10
最优二叉树不唯一!
6
6
4
6 3
1
3
2
4
6
3
1 2
3
教师:田检
18
练习 1:求带权为 2,4,7,8,10,12的最优二叉树 43
25
18
12
13 8
6
7 4
教师:田检
10
2
19
练习 2:求带权为 1,2,3,5,7,8的最优二叉树
26
11
15
5 3
6
7
8
3
2
教师:田检
20
1
例题3:用二叉树表示算式: (a b) c (d e)
教师:田检
例: 假设在通讯中,十进制数字出现的频率是 0:20%; 1:15%; 2:10%; 3:10%; 4:10%; 5:5%; 6:10%; 7:5%; 8:10%; 9:5% (1)求传输它们的最佳前缀码。 (2)用最佳前缀码传输 10000个按上述频率 出现的数字需要多少个二进制码? (3)它比用等长的二进制码传输 10000个数 字节省多少个二进制码?
5
教师:田检
图 7.7.3 教师:田检
6
• 【例7.7.1】甲、 乙两人进行球赛, 规定 三局两胜。 图7.7.4表示了比赛可能出现 的各种情况(图中结点标甲者表示甲胜, 标乙者表示乙胜), 这是一棵完全二叉树。
图7.7.4
教师:田检
7
定理 7.7.1 在完全 m 叉树中, 若树叶数为 t , 分枝点数为 i, 则
教师:田检
26
解 (1)令i对应树叶权为wi,wi=100i,则 w0=20;w1=15;
w2=10;w3=10; w4=10;w5=5; w6=10;w7=5; w8=10;w9=5。 构造一棵带权5,5,5,10,10,10,10,10,15, 20的最优二叉树。
教师:田检
27
1 00 0 —10 1 —01 0 2 —11 1 3 —11 0 4 —01 11 5 —00 01 6 —01 10 7 —00 00 1 8 —00 1 9 —00 00 0
为一个符号串集合, 设B , , , i , j B, 1 2 m i j , i与 j互不为前缀,则称 B为前缀码。
例如{ 0, 10 , 110 , 1110 , 1111 }是前缀码;
而{ 00, 001 , 011 }不是前缀码。
60 20 10 15 10 15 0 01 10 5 0 00 1 5 0 00 00 5 0 00 01 0 10 10 0 11 0 10 0 11 1 20 10
40 20
25
35
10 1 11
1 10
图 9.2.11
w0=20; w1=15;w2=10;w3=10; w4=10; w5=5; w6=10; w7=5; w8=10;w9=5。
教师:田检
1
本讲内容:
1、二叉树与最优二叉树
2、Huffman算法
教师:田检
2
有向树与根树的定义
有向树: 基图为无向树的有向图 根树: 有一个顶点入度为0, 其余的入度均为1的 非平凡的有向树 树根: 有向树中入度为0的顶点 树叶: 有向树中入度为1, 出度为0的顶点 内点: 有向树中入度为1, 出度大于0的顶点 分支点: 树根与内点的总称
28
即最佳前缀码为:{10,010,111,110,001, 0111,0001,0110,00000,00001}。
(2) (2×20%+3×(10%+15%+10%+10%)+4×(5%+1 0%+10%)+5×(5%+5%))×10000=32500 即传输10000个数字需32500个二进制码。 (3)因为用等长码传输10个数字码长为4,即 用等长的码传10000个数字需40000个二进制 码,故用最佳前缀码传节省了7500个二进制码。
( 2)在w1 w2 , w3 ,, wm中选出两个最小的权, 连接它们对应的顶点, 得分支点及对应的权
(3)重复(2),直到形成m 1个分支点,m片树叶为止
教师:田检
16
例题1:求带权为 1,3,4,5,6的最优二叉树
19
8
11
4 1
4
5 3
教师:田检
6
17
例题2:求带权为 1,2, 3,4,6的最优二叉树
(m-1)i=t-1 证明: 由假设知, 该树有 i+t 个结点, 所以, 该树边数为 i+t -1。 因为所有结点出度之和等于边数,所以根据完全
m叉树的定义知, mi= i+t -1
即 (m-1)i=t-1
教师:田检
8
• 【例 7.7.2】假设有一台计算机, 它有 一条加法指令, 可计算 3 个数之和。 如果要求 9 个数x1, x2, …, x9之和, 问至少要执行几次加法指令? • 解: 用 3 个结点表示 3 个数, 把 9 个数看成树叶, 将表示 3 数之和的结点 作为它们的父亲结点。 这样本问题可理 解为求一个完全三叉树的分枝点的个数 问题。
教师:田检
3
在根树中,从树根到任 意顶点v的通路的长度 称为v的层数
层数最大的顶点的层数 称为树高
v1的层次为0, v2、 v3的层次为1, 其余结点
的层次均为2。树高2层。
教师:田检
4
• m叉树 • 在树的实际应用中, 我们经常研究完 全m 叉树。 • 定义 在根树中, 若结点的最大出度 等于 m , 则称这棵树为 m 叉树。 如果每 个结点的出度恰好等于0或 m , 则称这 棵 树 为 完 全 m 叉 树 。 二 叉 树 (binary tree ) 的每个结点 v 至多有两棵子树, 分别称为v的左子树和右子树。
教师:田检
11
【例7.7.4】 8 枚硬币问题。 若有 8 枚硬币a, b, c, d, e, f, g, h, 其中 7 枚重量相等, 只有 1 枚稍轻。 现要求以天平为工具, 用最少 的比较次数挑出轻币来。 解: 可用图7.7.6所示的树表示判断过程。 从图中可知, 只需称 2 次即可挑出轻币。 这种用于描述判断过程的树叫判定树。
31
教师:田检
12
在所有的m 叉树中,二叉树居重要地位,对计 算机来说,二叉树最容易处理,因此常将有序树 转化为二叉树,步骤如下:
(1)对于每个顶点只保留左儿子。
(2)兄弟间从左到右连接。
(3)对于每个分支点,保留的左儿子仍做左儿 子,右边邻接的顶点做作为兄弟的右儿子。
教师:田检
13
例如,图(a)是棵有序树,图(b)是表示图( a)的一棵
教师:田检
9
• 由定理7.7.1知, 有 (3-1)i=9-1 i=4 所以要执行 4 次加法指令。 图7.7.5表示了两种可能的顺序。
得
图 7.6.5
教师:田检
10
【例 7.7.3】设有 28 盏灯,拟公用一个电源,则 至少需要多少个4插头的接线板 ? 解:把 28盏灯看成树叶, 将4插头的接线板看 成分枝点, 这样本问题可理解为求一个完全四 叉树的分枝点的个数 i的问题。 由定理7.7.1知, 有 (4-1)i=28-1 得 i=9 所以至少需要9个4插头的接线板 。
如果传输过程中所有字 母出现的频率大致相等 ,等长 码是一种好方法。但是 往往频率是不一样的, 因此要 寻求一种用较短的字符 串表示频率高的字母, 以提高 传输效率的方法。
教师:田检
23
设 1 2 n1 n为长度是n的符号串,称其子串 1 ,
1 2 ,, 1 2 n1分别为的长度为 1,2,, n 1的前缀
c
b
教师:田检
21
a
d
e
练习 3:用二叉树表示算式
((a (b c )) d b) (c d )
教师:田检
22
前 缀 码 的 设 计 ——最优二叉树的应用
在远程通信中,常用 5位二进制码来表示一个 英文字母(24 26 25 )。
发送端发送一条0和1组成的字符串,接收端 将其 分成长度为 5的序列就得到了相应信 息。这种传输 信息的方法称为等长码 方法。
29
教师:田检
练习 4:在通信中八进制数出 现的频率如下:
0 1 2 3 4 5 30% 20% 15% 10% 10% 5% 6 5% 7 5%
求传输它们的最佳前缀 码。
参考答案: 0 01 1 11 2 3 4 5 6 7 1001
001 101 0000 0001 1000
教师:田检
30
教师:田检
i 1 m
其中L( w i )为带权w i的树叶v i的层数
在所有带权w1 , w2 ,, wm的二叉树中, 带权最小的二叉树称为 最优二叉树
教师:田检
15
Huffman算法:
给定实数w1 , w2 ,, wm , 且w1 w2 wm
(1)连接w1 , w2为权的两片树叶 , 得一分支点 , 其权为w1 w2
教师:田检
24
定理1 任意一颗二叉树的树叶 集合对应一组前缀码。 定理2 任何一组前缀码都对应 一颗二叉树。
0 1 0 1
0 0 0 00 1
1 01
0 10
1 11 0 0 00
0 1
1 01
1
0 01 (a )
0 01 (b )
{000,001,01,10,11}
{000,001,01,1}
25
二叉树,图(c)是相应的二叉位置树。
0 0 0 1 1 2 2 3 3 4 4 5 5 5 6 6 7 7 8 8 (a a) ) ( 0 8 1 2 3 4 9 4 9 9 10 10 6 7 3 1 2
10 5 6 7 8 (b ) 9 10 (c)
教师:田检
14
Fra Baidu bibliotek
最优二叉树
设二叉树T有m 片树叶,分别带权为w1 , w 2 , , w m , 称W (T ) w i L( w i )为T的权
16 16
10 10
最优二叉树不唯一!
6
6
4
6 3
1
3
2
4
6
3
1 2
3
教师:田检
18
练习 1:求带权为 2,4,7,8,10,12的最优二叉树 43
25
18
12
13 8
6
7 4
教师:田检
10
2
19
练习 2:求带权为 1,2,3,5,7,8的最优二叉树
26
11
15
5 3
6
7
8
3
2
教师:田检
20
1
例题3:用二叉树表示算式: (a b) c (d e)
教师:田检
例: 假设在通讯中,十进制数字出现的频率是 0:20%; 1:15%; 2:10%; 3:10%; 4:10%; 5:5%; 6:10%; 7:5%; 8:10%; 9:5% (1)求传输它们的最佳前缀码。 (2)用最佳前缀码传输 10000个按上述频率 出现的数字需要多少个二进制码? (3)它比用等长的二进制码传输 10000个数 字节省多少个二进制码?
5
教师:田检
图 7.7.3 教师:田检
6
• 【例7.7.1】甲、 乙两人进行球赛, 规定 三局两胜。 图7.7.4表示了比赛可能出现 的各种情况(图中结点标甲者表示甲胜, 标乙者表示乙胜), 这是一棵完全二叉树。
图7.7.4
教师:田检
7
定理 7.7.1 在完全 m 叉树中, 若树叶数为 t , 分枝点数为 i, 则
教师:田检
26
解 (1)令i对应树叶权为wi,wi=100i,则 w0=20;w1=15;
w2=10;w3=10; w4=10;w5=5; w6=10;w7=5; w8=10;w9=5。 构造一棵带权5,5,5,10,10,10,10,10,15, 20的最优二叉树。
教师:田检
27
1 00 0 —10 1 —01 0 2 —11 1 3 —11 0 4 —01 11 5 —00 01 6 —01 10 7 —00 00 1 8 —00 1 9 —00 00 0
为一个符号串集合, 设B , , , i , j B, 1 2 m i j , i与 j互不为前缀,则称 B为前缀码。
例如{ 0, 10 , 110 , 1110 , 1111 }是前缀码;
而{ 00, 001 , 011 }不是前缀码。
60 20 10 15 10 15 0 01 10 5 0 00 1 5 0 00 00 5 0 00 01 0 10 10 0 11 0 10 0 11 1 20 10
40 20
25
35
10 1 11
1 10
图 9.2.11
w0=20; w1=15;w2=10;w3=10; w4=10; w5=5; w6=10; w7=5; w8=10;w9=5。
教师:田检
1
本讲内容:
1、二叉树与最优二叉树
2、Huffman算法
教师:田检
2
有向树与根树的定义
有向树: 基图为无向树的有向图 根树: 有一个顶点入度为0, 其余的入度均为1的 非平凡的有向树 树根: 有向树中入度为0的顶点 树叶: 有向树中入度为1, 出度为0的顶点 内点: 有向树中入度为1, 出度大于0的顶点 分支点: 树根与内点的总称