哈夫曼树和图的应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016/2/25
16
权:与图的边或弧相关的数。 网:带权的图。 顶点的度:依附于该顶点的边数或弧数。 出度:(仅对有向图)以该顶点为尾的弧数。 入度:(仅对有向图)以该顶点为头的弧数。 路径:顶点A与顶点C之间存在一条路径。路 径上边或弧的数目称为该路径的路径长度。
3 2 5
A
1
B D
C
6
2016/2/25
0 1 1 1
1 0 0 1
1 0 0 0
1 1 0 0
V4
19
邻接矩阵表示法对求顶点的度很方便。 在无向图中: 顶点的度数=矩阵中对应该顶点的行或列中非 零元素的个数。 在有向图中:
顶点的出度=矩阵中对应该顶点的行中非零元 素的个数。 顶点的入度=矩阵中对应该顶点的列中非零元 素的个数。
2016/2/25
80≤a<90 60≤a<70 a<60
次,可得到(c)判定树。
(b)
(c)
2016/2/25
11
(2)哈夫曼编码-----利用哈夫曼树构造通讯中电文编码(前缀码)
例2:要传输的电文是{CAS;CAT;SAT;AT} 要传输的字符集是 D={C,A,S,T, ;}
每个字符出现的频率是W={ 2,4, 2,3, 3 }
弧的集合G={<V1 ,V3>, <V3 ,V4>,
<V2 ,V4>, <V4,V1>}
V1
V3
顶点集合V={V1 , V2 , V3 , V4 } 边的集合E={(V1, V3), (V1, V2), (V1, V4),(V2, V4)} 顶点(V1, V3)与 (V3, V1)表示同一条边
V2
V4
17
2.6.2 图的存储结构
(1)图的连接矩阵表示法 (2)图的邻接表示法
2016/2/25
18
图的连接矩阵表示法
V1 V2 V3 V4 V1 0 0 1 0
V1
V3
V2
V3 V2 V4 V4
0
0 1
0
0 0
0
0 0
1
1 0
V1 V2 V3 V4 V1 V1 V3 V2 V3 V2 V4
2016/2/25
2016/2/25
WPL=7*1+5*2+2*3+4*3=35
2、哈夫曼树的构造
8
例:给定权值{7,5,2,4},构造哈夫曼树。
7 5
6
方法: 7 5 2 4 c d (1)由原始数据生成森林; a b c d (2) 在森林中选取两棵根结点权值最小的和次小的二 (b) (a) 叉树作为左右子树构造一棵新的二叉树,其根结点的 18 权值为左右子树根结点权值之和。规定左子树根结点 的权值小于右子树根结点的权值。 11 7 11 a 7 F中,去除原两棵权值 (3)将新的二叉树加入到森林 最小的树; b b (4)重复 2、3步骤,直至F中只剩一棵树为止。 5 5 注意:参看书中 c P53的例子。 d c (c) (d) 2
8
5 D
1
9 A
2016/2/25
2016/2/25
12
11月1日上机作业: 1. 折半查找 2. 顺序查找
3. 选择排序
4. 快速排序
2016/2/25
13
2.6 图
2.6.1 图的基本概念
顶点:图中的数据元素
A
1
3 2
B D
5
C
6
V表示顶点的非空有限集合。
VR表示两个顶点之间关系的集合。
2016/2/25
14
有向图
图
无向图
PL=0+1+1+2+2+2+2=10
2016/2/25
4
树的路径长度用PL表示。
1 1 2 4 5 6 3 7 6 PL=0+1+1+2+2+2+2=10 7 PL=0+1+1+2+2+3+3=12 4 2 5 C
2016/2/25
5
结点带权的路径长度: 从该结点到树根之间的路径长度与结点上权的乘积。 树的带权路径长度: 树中叶子结点带权路径长度之和。
28.有n个叶子结点的哈夫曼树,其结wk.baidu.com总数为2n-1
2016/2/25
25
26. 设电文中出现的字符 为A, B, C, D, E,每个字 母在电文中出现的次数分 别为 9, 7 , 3, 5,11,按哈 夫曼得出C的编码是:
0
55
1 28
B
27 E
0
11
1
1
0 17
0 C的编码是1100 3 C
WPL最小的二叉树就称作最优二叉树或哈夫曼树 。
2016/2/25
7
哈夫曼树 (最优树)
加权路径长度最小的二叉树就 是哈夫曼树。
n
公式:
WPL
k 1
WK LK
a b c d 7 5 2 4 WPL=7*2+5*2+2*2+4*2=36
c 4 d
2
7 a 5 b 2 c d 4
a b 7 5 WPL=7*3+5*3+2*1+4*2=46
2016/2/25
6 d 4
3、哈夫曼树的应用 (1)判定树 在解决某些判定问题时,利用哈夫曼树可以得到最 佳判定算法。 例1 将学生百分成绩按分数段分级的程序。
9
若学生成绩分布是均匀的,可用图(a)二叉树结构 来实现。
Y
不及格 a<60
N
a<70
Y
及格
输入10000个 数据,则需进 行31500次比 较。
V1 V2 V3 V4 V1 V3
V2
V4
在有向图中,<V1,V3>表示从V1到V3的一条弧。
V1为弧尾或初始点,V3为弧头或终端点。
在无向图中,(V1,V 3)表示V1和V3之间的一条边。 2016/2/25
15
G=( V, E )
V1 V2 V3 V4
顶点集合V={V1 , V2 , V3 , V4 }
20
V1 V2 V3 V4 V1 V3 V1 V2 0 0 0 0 1 0 0 1
入度
1 0 1
出度
1 1 1
V3
V2 V4 V4
0
1
0
0
0
0
1
0
2
1
V1 V2 V3 V4
度数
3
2
V1
V1 V3 V2 V3 V4
2016/2/25
0
1 1 1
1
0 0 1
1
0 0 0
1
1 0 0
V2
V4
1 2
21
用有值图可以表示两座城市之间的距离、车费、或 班次数目。 表示城市之间建立的通讯网络 可以描述化学结构式。
图中两点之间的最短距离问题。
2016/2/25
23
作业: P77 第26题、第28题
第30题(1)、(2)、(3) 第31题(1)、(2)、(3)
2016/2/25
24
26. 1100
a b c d 7 5 2 4 WPL=7*2+5*2+2*2+4*2=36
2016/2/25
6
树的带权路径长度记作:
WPL
k 1 其中:Wk为树中每个叶子结点的权;
WK LK
n
L k为每个叶子结点到根的路径长度。
a b c d 7 5 2 4 WPL=7*2+5*2+2*2+4*2=36
10
65
865
姓名
学号
成绩
班级 机97.6
李红 9761059 95
2
2.5.3哈夫曼树及其应用
1、哈夫曼树 树的路径长度的概念: 从一个结点到另一个结点之间的分支数 目称为这对结点之间的路径长度。
树的路径长度是从树的根到每一结点的 路径长度之和。
2016/2/25
3
树的路径长度用PL表示。
1 2 4 5 6 3 7
2016/2/25
中等
Y
a<80
N
N
a<90
Y
良好
N
优秀
(a)
学生成绩分布不是均匀的情况: 分数 比例 0—59 0.05 60—69 0.15 70—79 0.4 80—89 0.3
70≤a≤ 80
10
90—99 0.10
以比例数为权构造一棵哈夫曼树, 输入10000个 如(b)判断树所示。
数据,仅需进 行22000次比 再将每一比较框的两次比较改为一 较。
各字符编码是 方法: T ; A C S
0
14
00 01 10 110 111
1
6 8 (1)用{ 2,4, 2,3, 3 }作为叶子结点的权值生成一棵哈 上述电文编码: 0 1 0 1 夫曼树,并将对应权值wi的叶子结点注明对应的字符; 11010111011101000011111000011000 3 3 4 4 (2)约定左分支表示字符“0”,右分支表示字符‘ 1’ 1 T ; A 0 注意:编码的总长度恰好为哈夫曼树的带权路径长。 (3)从叶子结点开始,顺着双亲反推上去,直到根结点,路 2 2 径上的‘ 0’ 或‘ 1’ 连接的序列就是结点对应的字符的二进制 C S 编码的逆序。
图的邻接表表示法:即对图中每个顶点建立一个单链表,第i个 单链表中的结点表示依附于该顶点Vi的边(或弧)
1
V1
V3
3 ∧ 4 ∧ 4 ∧ 1 ∧
2 3
V2
V4
4
V1
V3
1 2 3
2 1 1 ∧
3 4 ∧
4 ∧
V2
V4
4
1
2 ∧
2016/2/25
22
2.6.3 图的应用
图的应用非常广泛,例如:
用图可以表示一座城市的交通联系的情况;