30离散数学第9章树
离散数学-图论-树

二叉树
• 定义:二元有序树称为二叉树.
– 每个顶点最多有两个子顶点,一般称为左子顶 点和右子顶点. – 类似地,称每个顶点的左子树和右子树. – 每个顶点的出度都是0或2,称为二叉正则树.
二叉树的性质
• 定理:设有二叉树T, (1)第i层最多有2i个顶点; (2)若T高度为h,则T最多有2h11个顶点,最 少有h个顶点; (3)树叶个数出度为2的顶点个数1.
1 2
Huffman树与最优编码
• 若以符号为树叶,符号概率为树叶的权,利 用通过Huffman算法得到的二叉树对符号 编码,则可以保证i pili最小. • 例:对1,1,2,3,5,6,7,8构造Huffman树.
7 3 2 1 1 5 6
8
编码:设 A, B, C, D 的频率(即权值)分别为 17%, 25%, 38%, 20%, 试设计哈夫曼编码(最佳前缀码/最优编码)。
最优编码
• 构成消息的各符号的使用频率是不一样 的,显然常用符号编码短一些,罕用符号编 码长一点,可以使传输的二进制位数最少. • 最优编码问题:给定符号集{a1,a2,...,am}, ai 的出现概率是pi,编码长度为li,要使i pili最 小.
例:如果需传送的电文为 ‘A B A C C D A’,它只用到四种字符, 用两位二进制编码便可分辨。假设 A, B, C, D 的编码分别为 00, 01,10,11,则上述电文便为 ‘00010010101100’(共 14 位), 译码员按两位进行分组译码,便可恢复原来的电文。 数据的最小冗余编码问题 在编码过程通常要考虑两个问题 译码的惟一性问题
5 1 5 6 6
U 1
1 5 6 1 5 5 4 6 5 4 5 5
2
离散数学sec9 树

实例
例5 求图的一棵最小生成树
避圈法
W(T)=38
21
实例
例5 求图的一棵最小生成树
Prim算法
W(T)=38
22
作业
第九章:3,6,8,10,11
第9章 树
• 无向树及其性质 • 生成树
1
无向树及其性质
• 无向树 • 无向树的性质
2
无向树的定义
无向树: 连通无回路的无向图 平凡树: 平凡图 森林: 每个连通分支都是树的非连通的无向图 树叶: 树中度数为1的顶点 分支点: 树中度数2的顶点
例如
(a)
(b)
3
无向树的性质
定理9.1 设G=<V,E>是n阶m条边的无向图, 下面 各命题是等价的: (1) G是树(连通无回路); (2) G中任意两个顶点之间存在惟一的路径; (4) G中无回路且m=n1; (3) G是连通的且m=n1; (6) G是连通的且G中任意一条边均为桥. (5) G中无回路, 但在任何两个不相邻的顶点之间 加一条边所得图中有惟一的一条初级回路.
在集合E中选取权值最小的边(u, v),其中u为集合Vnew中的元素, 而v则是V中没有加入Vnew的顶点(如果存在有多条满足前述条件即具 有相同权值的边,则可任意选取其中之一);
将v加入集合Vnew中,将(u, v)加入集合Enew中; 输出:使用集合Vnew和Enew来描述所得到的最小生成树。
{{a,f,g}, {e,b,f,g}, {c,b}, {d,g} }
17
基本割集与基本割集系统
• 求基本割集 设e为生成树T的树枝,Te为两棵小树T1与 T2,令Se ={e|eE(G)且e的两个端点分别属于 T1与T2},则Se为e对应的基本割集。
离散数学课件_9 树与平面图

1.概念:有向树,根树,树叶,内点,分支
点,层数,树高,祖先,后代,父亲,儿子,
兄弟,有序树,m叉树,完全m叉树,根子树,
左子树,右子树,带权二叉树,最优二叉
树,前缀,前缀码,二元前缀码,二叉树遍
历等;
4
返回本章首页
2019/12/4
第三节 有向树与根树(2)
2.定理: 设T是一棵根树,r是T的树根,则 对于T的任一顶点v,存在唯一的有向路 从r到v;
3.算法:最优二叉树的Huffman算法;
4.前缀码问题:前缀码与二叉树的对应关 系;
5.二叉树的遍历:三种遍历方法,即先根遍 历,中根遍历,后根遍历法.
返回本章首页
5 2019/12/4
第四节 平面图
平面图是很多实际问题的模型. 例如在 集成电路的布线设计中就遇到了平面图 的问题.
1.基本概念:平面图,平面嵌入,面,无限 面(外部面),内部面,边界,次数等;
第九章 树与平面图
树是一类结构较为简单的图,是用途极 为广泛的离散数学模型,特别是二叉树, 它在计算机科学中用得最多.因此在学习 时应很好地掌握好诸如树的充要条件、 生成树、最优生成树、根树、树的各种 算法、及二叉树的访问次序等内容.平面 图是实际背景很强的一类图,能用本章 介绍的方法判断一个图是否为平面图.
2.基本非平面图:K3,3与K5; 3.平面图的欧拉公式; 4.平面图的判定:库拉图斯基定理.
返回本章首页
6 2019/12ቤተ መጻሕፍቲ ባይዱ4
本章小结
本章我们介绍树与平面图,但以介绍树 为主.给出树的定义及树的充要条件, 生成树、最优生成树及最优生成树的克 鲁斯卡尔算法,特别是二叉树,我们讨 论 了 二 叉 树 的 Huffman 算 法 、 前 缀 码 、 二叉树的遍历等问题.最后介绍了一类 实际背景很强的一类图——平面图.
离散数学课件----Trees

Any ordered tree can be converted into a ordered binary tree.
1
1
2
5 9 6
3
7
4
2
3
4 7 11 8
8
5 9
6
10
11 12
10
12
Computer Representation
1
S
8
(3-(2x))+((x-2)-(3+x)) as a doubly linked list
No Edge Can Be Removed
Let T is an undirected tree, e is any edge in T, then T-{e} is no longer connected.
Proof: We have know that for any vertices v,w, there is a unique vw-path. Let e=(x,y), then e is the unique path between x and y. So, there is no xypath in T-{e}, which means that T-{e} is no longer connected.
12 14
3 arrays:
LEFT DATA RIGHT
2
+
-
+
x
13
3
5 3
6
7
9
x
11
2
4
3
2
10
x
Tree Searching
离散数学第四版课后答案(第9章)

第9章 习题解答9.1 有5片树叶.分析 设T 有x 个1度顶点(即树叶).则T 的顶点数Tx x n ,523+=++=的边数.41x n m +=-=由握手定理得方程.∑=+=⋅+⨯+⨯==+=ni ix x vd x m 1.1312233)()4(22由方程解出.5=x所求无向树T 的度数列为1,1,1,1,1,2,2,3,3,3.由这个度数列可以画多棵非同构的无向树,图9.6给出的4棵都具有上述度数列,且它们是非同构的.9.2 T 中有5个3度顶点.分析 设T 中有x 个3度顶点,则T 中的顶点数,7x n +=边数x n m +=-=61,由握手定理得方程.∑=+==+=ni ix v d x m 173)(2122由方程解出x=5.所求无向树T 的度数列为1,1,1,1,1,2,2,3,3,3.由这个度数列可以画多棵非同构的无向树,图9.6给出的4棵都具有上述度数列,且它们是非同构的.9.2 T 中有5个3度顶点.要析 设T 中有x 个3度顶点,则T 中的顶点数x n +=7,边数x n m +=-=61,由握手定理得方程.∑=+==+=ni ix v d x m 173)(2122.由此解出5=x ,即T 中有5个3度顶.T 的度数列为1,1,1,1,1,1,1,3,3,3,3,3.由于T 中只有树叶和3度顶点,因而3度顶点可依次相邻,见图9.7所示. 还有一棵与它非同构的树,请读者自己画出.9.3 加1-k 条新边才能使所得图为无向树.分析 设具有k 个连通分支的森林为G,则G 有k 个连通分支i K T T TT ,,,21全为树,.,,2,1k i =加新边不能在i T 内部加,否则必产生回路.因而必须在不同的小树之间加新边. 每加一条新边后,所得到的森林就减少一个连通分支. 恰好加1-k 条新边,就使得图连通且无回路,因而是树.在加边过程中,只需注意,不在同一人连通分支中加边. 下面给出一种加边方法,取iv 为iT 中顶点,加新边1,,2,1),(1-=+k i vv i i,则所得图为树,见图9.8 给出的一个特例.图中虚线边为新加的边.9.4 不一定.分析 n 阶无向树T 具有1-n 条边,这是无向树T 的必要条件,但不是充公条件.例如, 阶圈(即1-n 个顶点的初级回路)和一个孤立点组成无向简单图具有1-n 条边, 但它显然不是树.9.5 非同构的无向树共有2棵,如图 9.9所示.分析由度数列1,1,1,1,2,2,4不难看出,唯一的4度顶点必须与2度顶点相邻,它与1个2度顶点相邻,还是与两个2度顶点都相邻,所得树是非同构的,再没有其他情况.因而是两棵非同构的树.9.6 有两棵非同构的生成树,见图9.10所示.分析图9.10 是5阶图(5个顶点的图), 5阶非同构的无向树只有3棵,理由如下. 5阶无向树中,顶点数5=n,边数4=m,各顶点度数之和为8,度数分配方案有3种,分别为①1,1,1,1,4;②1,1,1,2,3;③1,1,2,2.2.每种方案只有一棵非同构的树.图9.10所示的5阶图的非同构的生成树的度数列不能超出以上3种,也就是说,它至多有3棵非同构的生成树, 但由于图中无4度顶点,所示,不可能有度数列为①的生成树,于是该图最多有两棵非同构的生成树. 但在图9.10 中已经找出了两个非同构的生成树,其中(1)的度数列为③,(2) 的度数列为②,因而该图准确地有两棵非同构的生成树.9.7 基本回路为: .,,,hfab C gfa C ead C cbad C h g e c====基本回路系统为}.,,,{h g e cC C C C基本割集为:},,{},,{},,,{},,,,,{h g f Sc ed S h c b S h g ce a S fd b a ====基本回路系统为},,,{f d b aS S S S.分析 1°注意基本回路用边的序列表示,而基本割集用边的集合表示.2° 基本回路中,只含一条弦,其余的边全为树枝,其求法是这样的: 设弦),(j iv ve =,则jiv v,在生成树T 中,且在T 中,ji v v ,之间存在唯一的路径ji ,Γ与),(j iv ve =组成的回路为G 中对应弦e 的基本回路.3° 基本割集中,只含一条树枝,其余的边都是弦,其求法是这样的:设树枝),(j iv ve =,则e 为T 中桥,于是eT-(将e 从T中支掉),产生两棵小树1T 和2T ,则}|{21'''中和的两端点分别在中且在T T e G e e S e =e S 为树枝e 对应的基本割集. 显然ee S S e ,∈中另外的边全是弦. 注意,两棵小树1T 和2T ,中很可能有平凡的树(一个顶点).aT -得两棵小树如图9.11中(1) 所示. G 中一个端点在i T 中,另一个端点在2T 中的边为a(树枝), h g c e ,,,,它们全是弦,于是},,,,{h g c e a Sa=bT - 得两棵小树如图9.11中(2) 所示, 其中有一棵为平凡树. G 中一个端点在1T 中,另一个端点在2T 中的边数除树枝b 外,还有弦,,h c 所以, },,{h c b Sb=dT -产生的两棵小树如图9.11中(3) 所示 . G 中一个端点在1T 中,另中一个端点在2T 中的边,除树枝d 外,还有两条弦e c ,,所示, },,{e c d Sd=fT -产生的两棵小树如图9.11中(4) 所示. 由它产生的基本割集为},,{h g f Sf=9.8 按Kruskal 求最小生成树的算法,求出的图9.3(1)的最小生成树T 为图9.12中(1) 所示, 其7)(=T W .(2) 的最小生成树T 为图9.12中(2)所示,其.11)(=T W9.9 421,,B B B为前缀码.分析 在421,,B B B中任何符号串都不是另外符号串的前串,因而它们都是前缀码.而在3B 中, 1是11,101的前缀,因而3B不是前缀码. 在5B 中,,a 是ac aa ,等的前缀,因而5B 也不是前缀码.9.10 由图9.4 (1) 给出的2元前缀码.}11,011,01010,0100,00{1=B由(2) 给出的3元前缀码为.}.2,1,022,0202,0201,0200,01,00{2=B分析 1B 是2元树产生的2元前缀码(因为码中的符号串由两个符号0,1组成),类似地,2B 是由3元树产生的3元前缀码(因为码中符号串由3个符号0,1,2组成).一般地,由r 元树产生r 元前缀码.9.11 (1) 算式的表达式为ji h g f e d c b a *)*()()*)*((((++÷-+.由于使其成为因而可以省去一些括号优先于,,,*,-+÷ji h g f e d c b a **)()*)*((++÷-+.(2) 算式的波兰符号法表达式为.****hij fg bcde a ++-÷+(3) 算式的逆波兰符号法表达式为.****+÷+-+jI hi fg e d abc9.12 答案 A:①; B ②; C:④; D:⑨.分析 对于每种情况都先求出非同构的无向树,然后求出每棵非同构的无向树派生出来的所有非同构的根树.图9.13 中,(1),(2),(3),(4)分别画出了2阶,3阶,4阶,5阶所有非同构的无向树,分别为1棵,1棵,2棵和3棵无向树.2阶无向树只有1棵,它有两个1度顶点,见图9.13中(1)所示,以1个顶点为树根,1个顶点为树叶,得到1棵根树.3阶非同的无向树也只有1棵,见图9.13中(2)所示.它有两个1度顶点,1个2度顶点,以1度顶点为根的根树与以2度顶点为根的树显然是非同构的根树,所以2个阶非同构的根树有两棵.4阶非同构的无向树有两棵,见图9.13中(3)所示. 第一棵树有3片树叶,1个3度顶点, 以树叶为根的根树与以3度顶点为根的树非同构.所以,由第一棵树能生成两个非同构的根树, 见图9.14 中(1)所示. 第二棵树有两片树叶,两个2度顶点,由对称性,以树叶为根的根树与2度顶点为根的根树非同构,见图9.14中(2) 所示. 所以,4阶非同构的根树有4棵.5阶非同构的无向树有3棵,见图9.13中(4)所示. 由第一棵能派生两棵非同构的根树, 由第二棵能派生4棵非同构的根树,由第三棵能派生3棵非同构的根树,所以,5阶非同构的根树共有9棵,请读者将它们都画出来.9.13 答案 A:②; B:②; C:③; D:③; E:③;F:④; G: ④; H:③.分析 将所有频率都乘100,所得结果按从小到大顺序排列:.35,20,15,10,10,5,5=======a b c d e f g w w w w w w w以以上各数为权,用Huffman 算法求一棵最优树,见图9.15所示.对照各个权可知各字母的前缀码如下:a ——10,b ——01,c ——111,d ——110,e ——001,f ——0001,g ——0000.于是,a,b 的码长为e d c ,,,2的码长为g f ,,3的码长为4. W(T)=255(各分支点的权之和),W(T)是传输100按给定频率出现的字母所用的二进制数字,因则传输104个按上述频率出现的字母要用25500⨯个二进制数字..24=1055最后还应指出一点,在画最优树叶, 由于顶点位置的不同,所得缀码可能不同,即有些字母的码子在不同的最优树中可能不同,但一般说来码长不改变.特别是,不同的最优树,它们的权是固定不变的.9.14 答案 A:②; B:④分析用2元有序正则树表示算式,树叶表示参加运算的数,分支点上放运算符,并将被减数(被除数)放在左子树上,所得2元树如图9.16所示.用前序行遍法访问此树,得波兰符号表示法为abc-++de-*.**ghf用后序行遍法访问此树,得逆波兰符号表示法为dec*fghab--++**。
《离散数学》课件-第九章 树(A)

定理9.3.2
• 定理9.3.2一个m元正则树T 1. 若T有n个结点,则有i=(n−1)/m个分支点和 l=[(m−1)n+1]/m片树叶; 2. 若T有i个分支点,则有n=mi+1个结点和l=(m−1)i+1片树叶; 3. 若T有l片树叶,则有n=(ml−1)/(m−1)个结点和i=(l−1) /(m−1)个分支点。
大于等于2,则 2e deg(v) 2k ,从而ek,,即图T至少有k条边,与e= vV
n-1矛盾。在T中删去1度结点v0及其关联的边,得到新图T也是连通的。 根据归纳假设,T无回路,e= n-1,将删去的1度结点v0及其关联的边添 入T得到图T ,T中仍无回路,且e= n-1。
➢ (4)(5)。用反证法证明。假设在T的每一对结点之间的简单路不唯
T1
T2
T3
9
生成树
• 定义9.2.1 给定连通图G,如果它的生成子图TG是树,则称TG为G的生成树。生 成树TG中的边称为树枝;G中的不在TG中的边称为弦;TG的所有弦的集合 称为生成树TG的余树。 例如 图中黑边构成生成树 红边构成余树
注意: 余树一般不是树
10
例题
• 例9.2.1 在图9.2a.1中,哪e 些是图9a.2.1(1e)的生成树a? e
• 证明 用归纳法对高度h进行归纳证明。
• 假设高度h=1。高度h=1的m元树由根结点及其不超过m个子 结点组成,每个子结点都是树叶。因此高度为h的m元树里至 多有m1=m片树叶。
• 因此,数据集D上的k聚类就是求使得 D( ) 最大的k划分。
离散数学 第9章_树

是 v1 v5,v7,v8,v9,v10,v11
v2,v3,v4,v6
否
§9.2.1 基本概念
二、有向树的性质 设有向树T=<V,E>, |V|=n, |E|=m,则:
① T 中无回路; ② T 是连通图; ③ m = n 1; ④ 删去T中任何一条边后,所得到的图不连通。
避圈法 破圈法
求最小生成树 (方法一)
Kruskal避圈算法 (从边的角度) (1)将各条边按照权值从小到大的顺序排列; (2)依次选取权值最小并且没有造成回路的边; (3)总共选取n-1条边(n为图中的结点数)。
求最小生成树(方法二)
破圈法 (从边的角度) 每次删去回路中权最大的边。
举例
(3) 由性质②来推证性质③。 对结点数进行归纳。 当n = 2时,m = n 1 = 1,由T的连通性质,T没有回路。如果两个结点之 间增加一条边,就只能得到唯一的一个基本回路。 假设n = k时,命题成立。则当n = k + 1时,因为T是连通的并有(n1)条边 ,所以每个结点的度数都至少为1,且至少有一个结点的度数为1。否则 ,如果每个结点的度数都至少为2 ,那么必然会有结点的总度数2m 2n ,即m n。这与m = n 1相矛盾,所以,至少有一个结点v的度数为1。 删除结点v及其关联的边,得到图T*,由假设知,图T*无回路。现将结点 v及其关联的边添加到图T*,则还原成T,所以,T没有回路。 在连通图T中,任意两个结点vi和vj之间必存在一条通路,且是基本通路。 如果这条基本通路不唯一,则T中必有回路,这与已知条件矛盾。进一步 地,如果在连通图T中,增加一条边(vi, vj),则边(vi, vj)与T中结点vi和vj之 间的一条基本通路,构成一个基本回路,且该基本回路必定是唯一的。 否则,当删除边时,T中必有回路,这与已知条分支结点各1个,其余 结点均为叶结点,求树T中叶结点的数目? 解 设树T中叶结点的数目为x,则树T的结点数目为(x+3) 。 由树的性质知,树T中边的数目为 (x+3) 1 = x +2。 由握手定理知:2(x+2) = 41 + 31 +1 + x1 可以解出: x = 5。
9-1 树 离散数学 教学课件

某一地区有若干个主要城市,拟修建高速公路 把这些城市连接起来,使得其中任何一个城市 都可以经高速公路直接或间接到达另一个城市, 设已知任意两个城市之间修建高速的成本,那 么应如何决定在哪些城市间修建高速公路,使 得总成本最小?
是a的后代.
根子树
设v为根树的一个顶点且不是树根, 称v及其所有后代的导出子图为以v 为根的.
根树的分类
r 元树:根树的每个分支点至多有r 个儿子 r 元正则树: 根树的每个分支点恰有r 个儿子 r 元完全正则树: 树叶层数相同的r 元正则树
二元树
二元正则树
二元完全正则树
根树的分类
有序树: 将根树同层上的顶点规定次序. r元有序树: 有序的r元树. r元正则有序树: 有序的r元正则树. r元完全正则有序树: 有序的r元完全正则树.
定义
Si是G的只含树枝ei, 其他边都是弦的割集, 称Si为对应 生成树T由树枝ei生成的基本割集, i=1, 2, …, n1.
称{S1, S2, …, Sn1}为对应T 的基本割集系统.
求基本割集的算法:
设e为生成树T的树枝, Te由两棵子树T1与T2组成, 令 Se={e | eE(G)且e的两个端点分别属于T1与T2} 则Se为e对应的基本割集.
(1)G是树(连通无回路); (2)G中每对顶点之间具有惟一的一条路径; (3)G中无回路且 m=n1; (4)G是连通的且 m=n1; (5)G是连通的且G中任何边均为桥; (6)G中无回路, 但在任何两个不同的顶点之间加
一条新边后所得图中有惟一的一个含新边的回路.
求出6个顶点的非同构无向树
∵顶点数n = 6,∴树的边数m = n-1=5
离散数学 第九章:树

方法:避圈法
在不产生回路的基础上依次画出 权值最小的边,直至画出n-1条边 为止
例9.1.1: v1
v1 5
5
v2 1 5 6 4 6
v5
2 v4
v2
3 v3 5
1 4 2 v4
v5
3
v3
5
W(T)=1+2+3+4+5=15
例9.1.2: 5 v2 3 v3 5 5
!最小生成树不一定唯一
v1 5 1 5 v5 v2 1 v5 2 v4 5 5 v1
2元树.
Huffman算法
给定实数w1, w2, …, wt, ① 作t片树叶, 分别以w1, w2, …, wt为权.
② 在所有入度为0的顶点(不一定是树叶)中选出两个 权最小的顶点, 添加一个新分支点, 以这2个顶点为 儿子, 其权等于这2个儿子的权之和.
③ 重复②, 直到只有1个入度为0 的顶点为止. W(T)等于所有分支点的权之和
根树的画法:树根放上方,省去所有有向边上的箭头 如右图所示 a是树根 b,e,f,h,i是树叶 c,d,g是内点 a,c,d,g是分支点 a为0层;1层有b,c; 2层有d,e,f; 3层有g,h; 4层有i. 树高为4
家族树:
定义 把根树看作一棵家族树: (1) 若顶点 a 邻接到顶点 b, 则称 b 是 a 的儿子, a 是 b 的父亲; (2) 若b和c为同一个顶点的儿子, 则称b和c是 兄弟; (3) 若ab且a可达b, 则称a是b的祖先, b是a的 后代. (4)设v为根树的一个顶点且不是树根, 称v及其 所有后代的导出子图为以v为根的根子树.
例子
A
A
A
生成树
D B C
《离散数学》第九章树讲稿

《离散数学》第九章树讲稿9.1 无向树及生成树一、本节主要内容无向树、森林树枝、弦、余树生成树基本回路与基本回路系统基本割集与基本割集系统最小生成树无向树二、教学内容无向树(树): 连通而无回路的无向图,用T表示.平凡树: 平凡图森林: 每个连通分支都是树的非连通的无向图树叶: 树中度数为1的顶点分支点: 树中度数≥2的顶点右图为一棵12阶树.声明:本章中所讨论的回路均指简单回路或初级回路无向树的性质定理9.1 设G=是n阶m条边的无向图,则下面各命题是等价的:(1)G是树(连通无回路);(2)G中任意两个顶点之间存在惟一的路径;(3)G中无回路且m=n-1;(4)G是连通的且m=n-1;(5)G是连通的且G中任何边均为桥;(6)G中没有回路, 但在任何两个不同的顶点之间加一条新边后所得图中有惟一的一个含新边的圈.无向树的性质(续)例题例1 已知无向树T中, 有1个3度顶点, 2个2度顶点, 其余顶点全是树叶. 试求树叶数, 并画出满足要求的非同构的无向树.解用树的性质m=n-1和握手定理.设有x片树叶,于是n=1+2+x=3+x,2m=2(n-1)=2?(2+x)=1?3+2?2+x解出x=3,故T有3片树叶.T的度数列为1, 1, 1, 2, 2, 3有2棵非同构的无向树, 如图所示例题例2 已知无向树T有5片树叶, 2度与3度顶点各1个, 其余顶点的度数均为4. 求T的阶数n, 并画出满足要求的所有非同构的无向树.解设T的阶数为n, 则边数为n-1, 4度顶点的个数为n-7. 由握手定理得2m=2(n-1)=5?1+2?1+3?1+4(n-7)解出n=8, 4度顶点为1个.T的度数列为1,1,1,1,1,2,3,4有3棵非同构的无向树生成树生成树的存在性定理任何无向连通图都有生成树.证用破圈法. 若图中无圈, 则图本身就是自己的生成树.否则删去圈上的任一条边, 这不破坏连通性, 重复进行直到无圈为止,剩下的图是一棵生成树.推论1 设n阶无向连通图有m条边, 则m≥n-1.推论2 设n阶无向连通图有m条边, 则它的生成树的余树有m-n+1条边.基本回路与基本回路系统定义设T是n阶m条边的无向连通图G的一棵生成树,设e1', e2', … , e'm-n+1为T的弦. 设Cr为T添加弦er' 产生的G中惟一的圈(由er'和树枝组成), 称Cr为对应弦er'的基本回路或基本圈, r=1, 2, …, m-n+1. 称{C1,C2, …, Cm-n+1}为对应T的基本回路系统.求基本回路的算法: 设弦e=(u,v), 先求T中u到v的路径Γuv, 再并上弦e, 即得对应e的基本回路.基本割集与基本割集系统定义设T是n阶连通图G的一棵生成树, e1', e2', …,e'n-1为T的树枝,Si是G的只含树枝ei', 其他边都是弦的割集, 称Si为对应生成树T由树枝ei'生成的基本割集, i=1, 2, …, n-1. 称{S1, S2, …, Sn-1}为对应T的基本割集系统.求基本割集的算法: 设e '为生成树T 的树枝, T -e '由两棵子树T1与T2组成, 令Se '={e | e ∈E(G)且e 的两个端点分别属于T1与T2}则Se '为e '对应的基本割集.实例例图中红边为一棵生成树,求对应它的基本回路系统与基本割集系统解弦e,f,g 对应的基本回路分别为Ce=e b c, Cf=f a b c, Cg=g a b c d,C 基={Ce, Cf, Cg}.树枝a,b,c,d 对应的基本割集分别为Sa={a, f, g}, Sb={b, e, f, g}, Sc={c, e, f g}, Sd={d, g},S 基={Sa, Sb, Sc, Sd}.无向图与最小生成树对无向图或有向图的每一条边e 附加一个实数w(e), 称作边e 的权. 图连同附加在边上的权称作带权图, 记作G=.设G '是G 的子图, G '所有边的权的和称作G '的权, 记作W(G ').最小生成树: 带权图权最小的生成树求最小生成树的算法——避圈法 (Kruskal)设G=, 将非环边按权从小到大排序:e1, e2, …, em.(1) 取e1在T 中(2) 检查e2, 若e2与e1不构成回路, 则将e2加入T 中, 否则弃去e2.(3) 检查e3,…, 重复进行直至得到生成树为止.实例例求图的一棵最小生成树9.2根树及其应用一、本节主要内容有向树根树、树根、树叶、内点、分支点家族树、根子树、有序树r元树(r元有序树)r元正则树(r元有序正则树)r元完全正则树(r元有序完全正则树)最优2元树与Huffman算法前缀吗与最佳前缀吗中序行遍法、前序行遍法、后续行遍法波兰符号法与逆波兰符号法二、教学内容有向树与根树的定义有向树: 基图为无向树的有向图根树: 有一个顶点入度为0, 其余的入度均为1的非平凡的有向树树根: 有向树中入度为0的顶点树叶: 有向树中入度为1, 出度为0的顶点内点: 有向树中入度为1, 出度大于0的顶点分支点: 树根与内点的总称顶点v的层数: 从树根到v的通路长度树高: 有向树中顶点的最大层数根树(续)根树的画法:树根放上方,省去所有有向边上的箭头如右图所示a是树根b,e,f,h,i是树叶c,d,g是内点a,c,d,g是分支点a为0层;1层有b,c; 2层有d,e,f;3层有g,h; 4层有i.树高为4家族树定义把根树看作一棵家族树:(1) 若顶点a 邻接到顶点b, 则称b 是a 的儿子, a 是b 的父亲;(2) 若b和c为同一个顶点的儿子, 则称b和c是兄弟;(3) 若a b且a可达b, 则称a是b的祖先, b是a的后代. 设v为根树的一个顶点且不是树根, 称v及其所有后代的导出子图为以v为根的根子树.根树的分类有序树: 将根树同层上的顶点规定次序r元树:根树的每个分支点至多有r个儿子r元正则树: 根树的每个分支点恰有r个儿子r元完全正则树: 树叶层数相同的r元正则树r元有序树: 有序的r元树r元正则有序树: 有序的r元正则树r元完全正则有序树: 有序的r元完全正则树最优2元树求最优树Huffman算法:给定实数w1, w2, …, wt,①作t片树叶, 分别以w1, w2, …, wt为权.②在所有入度为0的顶点(不一定是树叶)中选出两个权最小的顶点, 添加一个新分支点, 以这2个顶点为儿子, 其权等于这2个儿子的权之和.③重复②, 直到只有1个入度为0 的顶点为止.W(T)等于所有分支点的权之和实例例求带权为1, 1, 2, 3, 4, 5的最优树.解题过程由下图给出,W(T)=38前缀码设α =α1α2…αn-1αn是长度为n的符号串α的前缀: α1α2…αk , k=1,2,…,n-1前缀码: {β1, β2,…, βm}, 其中β1, β2, …, βm为非空字符串, 且任何两个互不为前缀2元前缀码: 只出现两个符号(如0与1)的前缀码如{0,10,110, 1111}, {10,01,001,110}是2元前缀码{0,10,010, 1010} 不是前缀码前缀码(续)一棵2元树产生一个二元前缀码:对每个分支点, 若关联2条边, 则给左边标0, 右边标1;若只关联1条边, 则可以给它标0(看作左边), 也可以标1(看作右边). 将从树根到每一片树叶的通路上标的数字组成的字符串记在树叶处, 所得的字符串构成一个前缀码.如右图所示最佳前缀码例在通信中,设八进制数字出现的频率如下:0:25% 1:20% 2:15% 3:10%4:10% 5:10% 6:5% 7:5%采用2元前缀码, 求传输数字最少的2元前缀码(称作最佳前缀码), 并求传输10n(n≥2)个按上述比例出现的八进制数字需要多少个二进制数字?若用等长的(长为3) 的码字传输需要多少个二进制数字?解用Huffman算法求以频率(乘以100)为权的最优2元树. 这里w1=5, w2=5, w3=10, w4=10, w5=10, w6=15, w7=20, w8=25. 最优2元树如图所示.编码:0---011---112---0013---1004---1015---00016---000007---00001传100个按比例出现的八进制数字所需二进制数字的个数为W(T)=285.传10n(n≥2)个所用二进制数字的个数为2.85?10n, 而用等长码(长为3)需要用3?10n个数字.波兰符号法与逆波兰符号法行遍(周游)根树T : 对T 的每个顶点访问且仅访问一次.行遍2元有序正则树的方式:①中序行遍法: 左子树、根、右子树②前序行遍法: 根、左子树、右子树③后序行遍法: 左子树、右子树、根例如, 对图所示根树按中序、前序、后序行遍法访问结果分别为:b a (f d g)c e a b (c (d f g) e) b ((f g d)e c) a带下划线的是(子)树根, 一对括号内是一棵子树波兰符号法与逆波兰符号法(续)用2元有序正则树表示算式: 最高层次运算放在树根上, 然后依次将运算符放在根子树的根上, 数放在树叶上, 规定被除数、被减数放在左子树树叶上.例如, 右图表示算式((b+(c+d))*a)÷((e*f)-(g+h)*(i*j))波兰符号法与逆波兰符号法(续)波兰符号法(前缀符号法): 按前序行遍法访问表示算式的2元有序正则树, 其结果不加括号, 规定每个运算符号与其后面紧邻两个数进行运算.例如, 对上页中树的访问结果为÷*+ b + c d a -* e f * + g h * i j逆波兰符号法(后缀符号法): 按后序行遍法访问,规定每个运算符与前面紧邻两数运算.例如, 对上页中树的访问结果为b c d + + a * e f * g h + i j **-÷。
《离散数学》树及其应用

最小瓶颈支撑树
A
10
E
7
3
2
C 9D
8
B5
4 F
A MST
E
3
2
C 9D
B5
4 F
A
E
7
3
2
C 9D
8
B
F
A
E
7
9
C
D
8
B5
4
F
45
最小瓶颈支撑树
定理
无向连通赋权图的最小支撑树一定是最小 瓶颈支撑树,但最小瓶颈支撑树不一定是 最小支撑树
46
最小瓶颈支撑树
证明 —— MST一定是MBST
C
42
博鲁夫卡算法
思考:
该算法能否用来寻找最小支撑森林?
10 B D A 55
12 C E
6
FH
28
10
J
11 5
3 G 12 I
K
43
最小瓶颈支撑树
设 ( G, W ) 是无向连通赋权图,G 的所 有支撑树中权值最大的边的权值最小 的支撑树称为 G 的最小瓶颈支撑树( minimal bottleneck spanning tree, MBST)
58
单源最短道路
迪杰斯特拉算法 Dijkstra ( G ) 输入:赋权简单连通图 G=(V, E),起点 s 输出:G 的最短道路树 T=(VT, ET) 1. VT ,ET ,d(s) 0 2. 对于所有 vV{s},d(v) 3. 若 VT = V,则输出 T = (VT , ET),否则 3.1. 在集合 VVT 中选取 d(v) 值最小的顶点v
u2
v
u3
57
离散数学——树

用Huffman算法产生最佳前缀码
例16.6 在通信中,八进制数字出现的频率如 下: 0:25% 1:20% 2:15% 3:10% 4:10% 5:10% 6: 5% 7: 5%
求传输它们的最佳前缀码? 求传输10n(n≥2)个按上述比例出现的八进
解答 以100乘各频率为权,并按小到大排列,得w1=5, w2=5, w3=10, w4=10, w5=10, w6=15, w7=20, w8=25。产生的最优树如下。
生成树的存在条件
定理16.3 无向图G具有生成树当且仅当G连通。 证明 必要性,显然。
充分性(破圈法)。 若G中无回路,G为自己的生成树。 若G中含圈,任取一圈,随意地删除圈上的一条边, 若再有圈再删除圈上的一条边,直到最后无圈为止。 易知所得图无圈(当然无回路)、连通且为G的生成子图, 所以为G的生成树。
• 二叉树的应用
根树的定义
定义16.6 T是n(n≥2)阶有向树, (1) T为根树— T中有一个顶点入度为0,其余顶
点的入度均为1 (2) 树根——入度为0的顶点 (3) 树叶——入度为1,出度为0的顶点 (4) 内点——入度为1,出度不为0的顶点 (5) 分支点——树根与内点的总称 (6) 顶点v的层数——从树根到v的通路长度 (7) 树高——T中层数最大顶点的层数
唯一性(反证法)。 若路径不是唯一的,设Г1与Г2都是u到v的路径, 易知必存在由Г1和Г2上的边构成的回路, 这与G中无回路矛盾。
(2)(3)
如果G中任意两个顶点之间存在唯一的路径,
则G中无回路且m=n-1。
首先证明 G中无回路。 若G中存在关联某顶点v的环, 则v到v存在长为0和1的两条路经 (注意初级回路是路径的特殊情况), 这与已知矛盾。 若G中存在长度大于或等于2的圈, 则圈上任何两个顶点之间都存在两条不同的路径, 这也与已知矛盾。
离散数学第10章-树

10.2 生成树与割集(续)
• 2 定义10.3(秩,零度) 设图G有n个顶点,e条边,ω个分支, 称n-ω为图G的秩,称e-n+ω为图G的零度。 • G的秩是G的各分支中生成树的枝数之和。 • G的零度是G的各分支中生成树的连枝数 之和。
10.2 生成树与割集(续)
• 二、割集与断集 • 1 定义10.4(割集) 设D是图G的一个边集,若在G中删去 D的全部边后所得图的秩减少1,而D的 任何真子集均无此性质,则称D为G的割 集。 • 例 图10.2
10.1 树及其性质(续)
• 推论 若G是n个顶点,ω个分枝的森林,则G 有n-ω条边。 • 定理10.2 在任一棵非平凡树T中,至少有两片树 叶。 • 证明
10.2 生成树与割集
• 一、生成树 • 1 定义10.2(生成树) 图G的生成子图是树T,称T为G的生成 树。 从G中删去T的边,得到的图称G的余枝, 记为Ť。 T中的边称为树枝(或枝)。 Ť中的边称为G的弦(或连枝)。 • 定理10.3 G是连通图⇔G有生成树。
• 三、割集与回路 • 1 定理10.4 任何一条回路和任何生成树的余树至 少有一条公共边。 • 2 定理10.5 任何一个割集和任何生成树至少有一 条公共边。
10.2 生成树与割集(续)
• 3 定理10.6 任何一条回路和任何一个割集有偶数 条公共边。
10.2 生成树与割集(续)
• 4 定义10.6(基本割集/基本割集组) 设连通图G中给定生成树T,对于只 包含T中的一条枝的割集,称此割集为关 T 于T的基本割集。 T 连通图G有e条边,n个顶点,给定的 生成树T应有n-1条枝,所以恰有n-1个基 本割集,这些割集的全体称为生成树T的 基本割集组。
10.2 生成树与割集(续)
离散数学 第九章:树

4
9.1 无向树
ห้องสมุดไป่ตู้
5
9.1 无向树
如果将上图看作一个图的话,这个图就是一棵树,如下图。 如果将上图看作一个图的话,这个图就是一棵树,如下图。
1 7 4 5 2 1 6 3 2 3 2 6 5 4
7
3 4 1 5 6 7
6
9.1 无向树
一、无向树的定义 定义9.1.1 连通不含回路的无向图称为无向树,简称 连通不含回路的无向图称为无向树 无向树, 定义 常用T表示一棵树 连通分支数大于等于2, 表示一棵树。 为树。常用 表示一棵树。连通分支数大于等于 , 森林。 且每个连通分支都是树的非连通无向图称为森林 且每个连通分支都是树的非连通无向图称为森林。平 凡图称为平凡树 平凡树。 凡图称为平凡树。 例1: :
证明: 只要证明T是连通的 是连通的。 证明:(6)⇒(1)只要证明T是连通的。
则新边(u,v)∪T产生唯一的圈 ,显然有 产生唯一的圈C, ∀u,v∈V且u ≠ v ,则新边 u,v∈ 且 ∪ 产生唯一的圈 C-(u,v)为T中u到v的通路,故u~v,由u,v的任意性可知,T是 的通路, 的任意性可知, 是 为 中 到 的通路 由 的任意性可知 连通的。 连通的。
15
9.1 无向树
(4)T是连通的,且m=n-1; 是连通的, 是连通的 (6)T中无回路,但在 的任何两个不相邻的顶点之间增加一条新边,就得 中无回路, 的任何两个不相邻的顶点之间增加一条新边, 中无回路 但在T的任何两个不相邻的顶点之间增加一条新边 到唯一的一条含新边的初级回路。 到唯一的一条含新边的初级回路。 证明: ⇒ 证明:(4)⇒(6) 归纳法 连通且有n-1条边 条边。 若T连通且有 条边。 连通且有 必无回路。 当n=2时,m=2-1=1,故T必无回路。如果增加一条边得到且仅得到一条 时 故 必无回路 回路。 回路。 时命题成立。 设n=k-1时命题成立。 时命题成立 考察n=k时的情况。因为 是连通的,m=n-1,故每个结点 有deg(u)≥1, 时的情况。 是连通的, 故每个结点u有 考察 时的情况 因为T是连通的 故每个结点 ≥ 可以证明至少有一个结点v,使得 使得deg(v)=1;若不然,即所有结点 有 若不然, 可以证明至少有一个结点 使得 若不然 即所有结点u有 deg(u)≥2则2m≥2n,即m ≥n,与假设 与假设m=n-1矛盾。删去 及其关联的边, 矛盾。 及其关联的边, ≥ 则 ≥ , 与假设 矛盾 删去v及其关联的边 而得到新图T’,由归纳假设可知 无回路; 由归纳假设可知T’无回路 中加入v及其关联的边又得 而得到新图 由归纳假设可知 无回路;在T’中加入 及其关联的边又得 中加入 是无回路的; 中增加新的边(u,w),则该边与 中u到 则该边与T中 到 到T,故T是无回路的;若在连通图 中增加新的边 , 是无回路的 若在连通图T中增加新的边 则该边与 W的一条通路构成一个回路,则该回路必是唯一的,否则若删去此新边, 的一条通路构成一个回路, 的一条通路构成一个回路 则该回路必是唯一的,否则若删去此新边, T中必有回路,得出矛盾。 中必有回路, 中必有回路 得出矛盾。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无向树与生成树 有向树与根树
§9.1 无向树及生成树
定义1 连通无回路的无向图称为无向树,简称树,记作T。 树叶(终点):树中度数为1的结点。 内点(分枝点):树中度数大于1的结点。 平凡图称为平凡树。 森林:每个连通分图均为树的图。
注:由于树无环且无平行边,所以树必是简单图。
例: 下图 中(a)、(b)均是树,图(c)是森林。
6 e10
7
G
1
e1
2
e2
e3
e6
3
5
e7 4 e8
6
7
T1
1
e1
2
e2
e4
3
e6
5
e7 4
e9
6
7
T2
定义6:G是一个连通图,T是G的一棵树,从树T中删 去一边,便将T分成两棵树,即两个连通分支,图G中 连接这两个连通分支的边的集合,称为对应于这条边 的基本(边)割集。
例:在下图 中的G和T1: 对应树枝e1,有基本割集{e1,e4}; 对应树枝e2,有基本割集{e2,e5}; 对应树枝e3,有基本割集{e3, e4 ,e5}
1 2 3 4 5 6 7 8 9 10 11 12
故选择1 2 3 5 6 8 9,共7条边
12
2
4
9 11 1 3 85
10
76219 Nhomakorabea3
85
6
练习:在下图中,用克鲁斯卡尔算法构造最小生成树,计 算最小生成树的边权和,并画出生成树。
n
d (i ) 2(n k) k 2n k
i 1
而
nn
d (d(iv)i )22mm 22((nn1)k) 2n2n2 2
i 1i 1
所以2n-2 ≥ 2n-k,即k ≥2。
例:T是一棵树,有两个顶点度数为2,一个顶点度数为3, 三个顶点度数为4,T有几片树叶? 解: 设树T有x片树叶,则T的顶点数: n=2+1+3+x T的边数: m=n-1=5+x
n
又由握手定理 2m d (i )
i 1
得
2 ·(5+x)=2·2+3·1+4·3+x 所以x=9,即树T有9片树叶。
有一些图,本身不是树,但它的某些子图却是树,其中 很重要的一类是生成树。 定义2 :若无向图G的一个生成子图T是树,则称T是G的 一棵生成树。 例如在下图中,T1和T2是图G的两棵生成树。
定理3:任何连通图至少有一棵生成树。 如何在连通图G中寻找一棵生成树: (1)若G没有回路,则G本身就是一棵树; (2)若G仅有一条回路,从此回路中删去一条边,仍保持图
的连通性,得到一棵生成树。 (3)若G有多条回路,则逐个对每条回路重复(2)中操作,
直到打断G中所有回路,得到一棵生成树为止。
定义3:设T是G的一棵生成树,则称T中的边为树枝。 定义4:设T是G的一棵生成树,G不在T中的边称为T的弦。 定义5:设T是G的一棵生成树,T的所有弦的集合称作生成 树T的补。 一个连通的(n,m)图,其任意一棵生成树的树枝数一定 是n-1,从而弦数保持固定不变,数值为:m-n+1。
1
e1
2
e2
e3 e4
3
e5 e7
4 e6
5
e8
e9
6
e10
7
G
1
e1
2
e2
e3
e6
3
5
e7 4 e8
6
7
T1
1
e1
2
e2
e4
3
e6
5
e7 4
e9
6
7
T2
例:试画出图所示无向图的两棵非同构的生成树。
其度数序列为: (1)1,1,2,2,2 (2)1,1,1,2,3
例:分别画出下图所有不同构的生成树。 解 :所有不同构的生成树有3棵,如下图所示。
中选取e i+1 ,使得 {e1,e2,…,ei ,e i+1} 中无回路,且 ω(e i+1)=min。 (3)继续进行,直到选得e n-1为止。
求最小生成树的Kruskal算法(避圈法)
例:对左边无向图用Kruskal算法求得 右边的最小生成树.
解:此图共8个结点,其最小生成树中应 有8个结点,7条边.将边权从小到大排 序:
1
e1
2
e2
e3 e4
3
e5 e7
4 e6
5
e8
e9
6
e10
7
G
1
e1
2
e2
e3
e6
3
5
e7 4 e8
6
7
T1
1
e1
e2
e4
3
e6
e7 4
6
T2
最小生成树
实际的问题:假设你是一个设计师,欲架设连接n 个村镇的电话线,每个村镇设一个交换站。已知由i 村到j村的线路e=(vi,vj)造价为ω(e)=wij , 要保证任意两个村镇之间均可通话,请设计一个方 案,使总造价最低。
定理1 :无向图T是树,以下关于树的定义是等价的。 (1)无回路的连通图 (2)无回路且m=n-1,其中m为边数,n 为顶点数。 (3)T是连通图且m=n-1。 (4)T中无回路,但增加一条边,则得到一条且仅一 条回路。 (5)T连通且每条边均是桥。 (6)每对顶点间有唯一的一条路。
例:试画出度数列为1,1,1,1,2,2,4的所有非同构的7阶无向树。
1
e1
2
e2
e3 e4
3
e5
e6
5
e7
4
e8
e9
6
e10
7
G
1
e1
2
e2
e3
e6
3
5
e7 4 e8
6
7
T1
1
e1
e2
e4
3
e6
e7 4
6
T2
这些边割集所具有的共同特点是:每个割集中均只含生 成树的一个树枝,其余的均是弦。 定理5:一个边割集和任何生成树至少有一条公共边。
例:在下图 中的G和T1:对应树枝e1,有基本割集{e1,e4}
练习: 设G是有n个结点m条边的连通图,必须删去G的多少 条边,才能获得G的一棵生成树?
定理4:一条回路和任何一棵生成树的补至少有一条公共边。
对于图G的一棵生成树T,每增加一条弦,便得到一条回路 例:在下图所示的T1中: 加弦e5,得回路e2e3e5
1
e1
2
e2
e3 e4
3
e5
e6
5
e7
4
e8
e9
解:由度数列1,1,1,1,2,2,4不难看出,唯一的4度顶 点必须与2度顶点相邻,它与1个2度顶点相邻,还是与 两个2度顶点都相邻,所得树是非同构的,再没有其他 情况。因而是两棵非同构的树。
定理2 :任何一棵非平凡树T至少有两片树叶。
证明 设T是(n,m)图,n ≥ 2,有k片树叶,其余顶 点度数均大于或等于2。则
这个问题的数学模型为:在已知的赋权图上求权和 最小的生成树。
定义7: 设无向赋权连通图G=〈V,E,ω〉,G的所有生 成树中,树权和最小的生成树称为G的最小生成树。
求最小生成树的一个算法是克鲁斯卡尔(Kruskal)算法: (1)选e1∈E(G),使得ω(e1)= min (2)若e1,e2,…,ei已选好,则从E (G)-{e1,e2,…,ei}