离散数学 第九章:树
离散数学中的图的树与生成树的计数

在离散数学中,图是一个由点和边组成的抽象数学模型。
其中,树是一种特殊的图,它是一个无环连通图。
在图论中,树扮演了重要的角色,它具有许多有趣的性质和应用。
而生成树则是树的一个特殊子集,它由给定图中的所有顶点和部分边构成。
本文将介绍图的树的基本概念,并探讨生成树的计数方法。
首先,让我们来看看图的树。
树是一种无环连通图,其中任意两个顶点之间存在唯一一条路径。
它具有以下性质:1.n个顶点的树有n-1条边。
这可以通过归纳法证明:当n=1时,结论成立;假设n=k时成立,那么n=k+1时,只需要添加一个顶点和一条边,即可构成n=k+1个顶点的树。
因此,结论成立。
2.连接树上任意两个顶点的边都是桥。
即如果一条边被删除,那么树就会变成两个或更多个不相连的子树。
3.树是一个高度平衡的结构。
对于一个n个顶点的树,任意两个叶子结点之间的路径长度至多相差1。
4.树的任意两个顶点之间有唯一一条路径,路径长度为顶点之间的边数。
接下来,让我们来讨论生成树的计数方法。
生成树是树的一个特殊子集,它是由给定图中的所有顶点和部分边构成。
生成树的计数在图论中具有重要的意义和应用。
对于一个具有n个顶点的连通图来说,其生成树的个数可以通过Cayley公式计算得到。
Cayley公式是由亚瑟·凯利于1889年提出的,它给出了完全图的生成树数目。
据此,我们可以得到生成树的计数公式为:T = n^(n-2),其中T表示生成树的个数。
此外,还有一种常见的计数方法是基于度数矩阵和邻接矩阵的矩阵树定理。
矩阵树定理由高斯于1847年提出,它提供了一种计算图的生成树个数的方法。
根据矩阵树定理,一个无向图G的生成树数目等于该图度数矩阵的任意一个(n-1)阶主子式的行列式的值。
其中,度数矩阵是一个对角矩阵,它的对角线上的元素为各个顶点的度数。
邻接矩阵则是一个关于顶点间连接关系的矩阵,其中1表示相邻顶点之间存在边,0表示不存在边。
除了数学方法,还存在一种基于图的遍历的计数方法,称为Kirchhoff矩阵树定理。
离散数学

(注)以上算法需假定图中每条边的权都不 相同.但事实上对图中有若干条边的权相同的情 形,只要将它们的权作微小的变动,使之各不相同, 即可使用这个算法.
例:见书本图9.4
又有计算最小生成树的实例:
1 11
6
3 2
9
7 8
10
4 5
红绿粉红紫黄
另有“破圈法”:删除边破坏回路,同时保持图的连 通性,直到没有回路为止。 a
注意,具有 n 个结点和恰有 n-1 条边的图未 必是树,但连通或无回路的是。 连通无圈完全刻划了树,这是树的一个特
性;树还有另外一个重要性质是:它以最少的
边使结点连通。
定理9.2 给定树T=<V,E>,若|V|≥2,则T中至 少存在两个悬挂结点(树叶)。
证明: 1)设T=<V,E>是树,|V|=v.因为T是连通图,viT 有deg(vi)≥1且由定理5-1.1有∑deg(vi)=2(|V|-1)=2v-2.
例:下图为根树,右边是左图省掉方向的代替图。
v1
v2 v3 v4 v2
v1
v3 v4
v5
v6
v7
v8 v9
v5
v6
v7
v8 v9
v10 v11 v12
v10
v11 v12
为表示结点间的关系,有时借用家族中的
术语。一棵根树可以看成一棵家族树。令u是有
根树中的分枝结点,若从u到v有一条边或,则 结点v称为结点u的“儿子”,或称u是v的“父 亲”;若从u到w有一条路,称u是w的“祖先”, 或称w是u的“子孙”或“后代”,同一个分枝
第九章 树
9.1 无向树及生成树
9.2 根树及其应用
离散数学中的生成树与生成树计数

离散数学是计算机科学中的重要学科,其中生成树是一个重要的概念。
在图论中,生成树是一棵树,它包含了图中的所有顶点,并且是由图边组成的无环连通子图。
生成树在图论中有着重要的应用,特别是在计算机网络、运筹学和电路设计等领域。
生成树的概念与基础就是组成它的边是有限的,并且连接图中的所有顶点,但没有形成圈回到起点。
生成树通常是用来描述一个系统的最小连接方式。
生成树可以应用于计算机网络的设计中,用于构建最小生成树算法,以便在网络中选择最小的数据传输路径。
此外,在运筹学中,生成树被用于求解最小生成树问题,即为一个加权图找到一棵包含所有顶点的生成树,使得树中边的权重之和最小。
在离散数学中,生成树计数是一个重要的研究分支。
生成树计数是指对给定图,计算其生成树的数目。
生成树计数的问题可以通过使用基于图论和组合数学的算法来解决。
通常,生成树计数的问题与相应图的特性和性质密切相关。
对于一个简单图来说,如果图中任意两点之间至少有一条边,那么该图一定存在生成树。
对于有 n 个顶点的连通图来说,它的生成树数量可以通过Cayley公式计算得到。
Cayley公式表明,一个有 n 个标号的顶点的完全图的生成树数量等于 n^(n-2)。
而对于非完全图,生成树的计数问题则较为困难。
在处理非完全图的生成树计数问题时,可以使用基于递归和动态规划的算法来解决。
一个常见的方法是使用Kirchhoff矩阵树定理,它将生成树计数的问题转化为计算矩阵的行列式的问题。
Kirchhoff矩阵树定理提供了一种计算给定图的生成树数目的有效算法,通过计算图的基尔霍夫矢量的一个特征值,可以得到图的生成树的数目。
另一个常见的方法是使用Prufer编码,它是一个用于描述无环连通图的序列。
通过Prufer编码,我们可以将计算生成树的问题转化为计数树的问题。
通过对无向图进行Prufer编码,我们可以计算出生成树的数目,并且可以根据生成树的数目来确定该无向图的种类和特征。
离散数学 求生成树的个数

在离散数学中,生成树(Spanning Tree)是一个图(Graph)的子图,它包含图中的所有顶点,并且是一个树(Tree)。
生成树的一个重要性质是它不包含任何环(Cycle)。
求一个给定图的生成树个数是一个经典问题,通常使用矩阵树定理(Matrix Tree Theorem)来解决。
矩阵树定理给出了一个图的生成树个数的计算公式,它基于图的拉普拉斯矩阵(Laplacian Matrix)的行列式。
拉普拉斯矩阵是一个方阵,其大小为图的顶点数,矩阵的元素定义如下:•如果i和j是不同的顶点,则矩阵的第i行第j列的元素是顶点i和j之间的边的权重(如果存在边的话),否则是0。
•对于每个顶点i,矩阵的第i行第i列的元素是顶点i的度(即与顶点i相邻的边的数量)的负值。
矩阵树定理指出,图的生成树个数等于其拉普拉斯矩阵的任何一个n-1阶主子式的行列式值的绝对值。
n是图的顶点数,n-1阶主子式意味着去掉矩阵中的一行和一列后得到的矩阵。
下面是一个简单的例子,说明如何使用矩阵树定理计算生成树的个数:假设有一个包含4个顶点的简单图,其边和权重如下:A -- 2 -- B| |1 3 1| |C -- 4 -- D1 -3 1 00 1 -3 40 0 1 -4主子式的行列式值。
去掉第一行和第一列后,我们得到:1 01 -3 40 1 -4x3矩阵的行列式,我们得到:1 * 1) - (0 * 0) = 12 - 1 = 11过程可能涉及复杂的行列式计算,特别是对于大型图来说。
在实际应用中,通常会使用专门的数学软件或库(如Python中的NumPy或SciPy)来进行这些计算。
此外,还有一些算法(如Kruskal算法和Prim算法)可以用来构造生成树,但它们并不直接计算生成树的总数。
这些算法通常用于找到图的一个生成树,而不是计算所有可能的生成树的数量。
离散数学 树

离散数学树
离散数学中的树(Tree)是一种常见的图论结构,它是一种无向、连通且没有简单回路的无向图,或者是一个有向连通图,其中每个节点都只有唯一一个父节点(除了根节点)。
树形结构中的每一个节点都可以视为一个子树的根节点,因为它下面连接了若干个子节点,这样就形成了一棵向下生长的树状结构。
树形结构还有一个重要的特点就是它具有很好的递归性质,因为每个节点下面都可以再建立一棵子树,这样就可以逐层递归地构建出整棵树。
在离散数学中,树被广泛应用于算法设计、数据结构以及对计算机网络和信息系统进行建模等领域。
树的深度和广度优先遍历、树的一些基本性质(如高度、度、叶子节点等)以及树的遍历应用在图的搜索算法、排序、哈夫曼编码、抽象语法树等算法中都有广泛的应用。
树分解定理

树分解定理树分解定理(Tree decomposition theorem)是离散数学中一项重要的定理,它与图的分解和图的算法密切相关。
树分解定理描述了任意图都可以根据其边集的某个树分解表达。
首先,我们来介绍一下树分解的概念。
树分解是对一个无向图进行分解的一种方法。
给定一个无向图G=(V,E),其中V表示图的顶点集,E表示图的边集。
树分解是将图G分解成一些子图的集合,这些子图采用树的结构组织,且满足如下条件:1. 每个子图都是图G的子图。
2. 每个顶点都属于一个或多个子图。
3. 任意两个子图之间要么没有公共顶点,要么有且只有一个公共顶点。
根据树分解的定义,我们可以得到一个关键结论:每个子图都可以用一个包含该子图所有顶点的集合作为标记。
这就是树分解的核心思想。
树分解定理指出,对于任意的无向图G=(V,E),存在一个树分解{(B_x, X_x)},其中B_x是一个子图,X_x是子图B_x的标记集合,满足以下三个条件:1. 图G的每个顶点都属于某个子图,即图G中所有的顶点在树分解的所有子图的标记集合中都有。
2. 图G的每条边都关联于某个子图,即图G中所有的边连接的顶点在树分解的某两个子图的标记集合中都有。
3. 任意的顶点v在树分解的所有子图中的标记集合的交集,称为顶点v的袋,即B_v = ∩{X_x|v∈X_x}。
树分解的每个子图袋的大小要小于等于某个常数k,即B_x ≤ k。
树分解定理的证明非常复杂,可以依靠递归的方法得到。
首先,我们定义以v为根的子图B_v和相应的标记集合X_v。
然后,我们选择树G的深度最大的顶点u,将其从图中删除并得到一个新的图G'。
此时,原图G的每个顶点都属于G'的一个子图,并形成一个包含u的袋B_u。
我们再次选择G'中深度最大的顶点,重复上述操作,直到最后得到只包含一个顶点并且没有边的子图。
这样就得到了一个树分解。
树分解的主要应用领域是图算法和计算理论。
离散数学09 图

第九章 图9.1设},,,,{y x w v u V =,画出图),(E V G =,其中:(1))},(),,(),,(),,(),,{(y x y v w v x u v u E =(2))},(),,(),,(),,(),,{(y x y w x w w v v u E =再求各个顶点的度数。
解(1)见图9.1(a )。
其中顶点u 的度数是2,顶点v 的度数是3,顶点x 的度数是2,顶点y 的度数是2,顶点w 的度数是1。
图9.1 习题1图(2)见图9.1(b )。
其中顶点u 的度数是1,顶点v 的度数是2,顶点x 的度数是2,顶点y的度数是2,顶点w 的度数是3。
9.2 设G 是具有4个顶点的完全图。
(1)画出图G 。
(2)画出G 的所有互不同构的生成子图?解(1)如图9.2(1)所示。
图9.2(1) 习题2图(2) 如图9.6(2)所示﹒ ﹒ ﹒ ﹒ ﹒ ﹒图9.2(2) 习题2图9.3 一个无向简单图,如果同构于它的补图,则称这个图为自互补图。
(1)试画出五个顶点的自互补图。
(2)证明一个自互补图一定只有k 4或14+k 个顶点(k 为整数)。
解(1)(a) (b)图9.3 习题3图 (2)因为n 个顶点的无向完全图有)1(21-n n 条边,所以自互补图有)1(41-n n 条边,因此,k n 4=或14+k 。
9.4 画出两个不同构的简单无向图。
每一个图都仅有6个顶点,且每个顶点都均是3度,并指出这两个图为什么不同构。
解图9.4 习题9.4图9.5 证明任意两个同构的无向图,一定有一个同样的顶点度序列。
顶点度序列是一组按大小排列的正整数。
每一个数对应某一个顶点的度数。
证明两个同构的无向图,度数相同的顶点数目一定相同,这样才能够建立起顶点之间的一一对应关系,进而建立起边的对应关系。
所以,任意二个同构的无向图,一定有一个同样的顶点度序列。
9.6图9.6中所给的图(a )与图(b )是否同构?为什么?(a )(b ) 图9.6 习题6图 解左图9.2(a )中次数为4的点,与3个度数为1,一个度数为2的顶点相邻接,右图9.2(b )中度数为4的点,却与3个度数为1,一个度数为3的顶点相邻接。
离散数学课件_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 算 法 、 前 缀 码 、 二叉树的遍历等问题.最后介绍了一类 实际背景很强的一类图——平面图.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例9.1.3:
Ca=aef
b d e f c
Cb=bde
Cc=cdf
a
基本回路系统为:{Ca, Cb, Cc}
六:基本割集与基本割集系统
定义: 设T是n阶连通图G的一棵生成树, e1, e2, …, en1为T的树枝,Si是G的只含 树枝ei, 其他边都是弦的割集, 称Si为 对应生成树T由树枝ei生成的基本割 集。 i=1, 2, …, n1. 称{S1, S2, …, Sn1}为对应T的基 本割集系统.
例9.2.1:
例 求带权为1, 1, 2, 3, 4, 5的最优树. 解题过程由下图给出,W(T)=38
前缀码:
设 =12…n-1n是长度为n的符号串 的前缀: 12…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元前缀码
根树的画法:树根放上方,省去所有有向边上的箭头 如右图所示 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为根的根子树.
树的编码:
一棵2元树产生一个二元前缀码: 对每个分支点, 若关联2条边, 则给左边标0, 右边标1; 若只关联1条边, 则可以给它标0(看作左边), 也可以 标1(看作右边). 将从树根到每一片树叶的通路上标 的数字组成的字符串 记在树叶处, 所得的字符 串构成一个前缀码. 如右图所示: 最优2进制编码:使信息传 递的2进制数最短
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
6 5
6
2
v4
3 v3
or
v2 3 v3
1
5 2
编码: 0---01 1---11 2---001 3---100 4---101 5---0001 6---00000 7---00001
传100个按比例出现的八进制数字所需二进制数字的个数 为 W(T)=285. 传10n(n2)个所用二进制数字的个数为2.8510n, 而用等长 码(长为3)需要用 310n个数字. 课后习题:9.9,9.13
树的遍历:
行遍(周游)根树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元树T有t片树叶v1, v2, …, vt, 树叶的权分别
为w1, w2, …, wt, 称 W ( t ) wi l ( vi ) 为T的权, 记作
t i 1
W(T), 其中l(vi)是vi的层数. 在所有有t片树叶, 带权
w1, w2, …, wt 的 2元树中, 权最小的2元树称为最优
9.1
一、树的概念
无向树及生成树
树:连通而不含回路的无向图称为无向树, 简称树,记作 T。 森林:连通分支数大于等于2,且每个连通
分支均是树的非连通无向图。
平凡树:平凡图为平凡树。 树叶: 树中度数为1的顶点 分支点: 树中度数2的顶点
森林
树的性质: 设G=<V,E>是n阶m条边的无向树, 则下面各命题是等价的: (1) G连通而不含回路;
例9.2.2:
例 在通信中,设八进制数字出现的频率如下:
0:25% 4:10% 1:20% 5:10% 2:15% 6:5% 3:10% 7:5%
采用2元前缀码, 求传输数字最少的2元前缀码 (称作最佳前
缀码), 并求传输10n(n2)个按上述比例出现的八进制数字需 要多少个二进制数字?若用等长的 (长为3) 的码字传输需要 多少个二进制数字? 解 用Huffman算法求以频率(乘以100)为权的最优2元树. 这 里 w1=5, w2=5, w3=10, w4=10, w5=10, w6=15, w7=20, w8=25. 最优2元树如图所示.
例9.1.4:
Sa={a,f,g} Sb={b,g,h}
f c a b d e
Sc={c,f,h} Sd={d,h,i}
Se={e,f,i}
g h i
基本割集系统为:{Sa, Sb, Sc , Sd, Se}
课后例题:9.5,9.6,9.7,9.8 课后作业:9.1,9.3,9.4,9.5,9.6,9.7,9.8
2元树.
Huffman算法
给定实数w1, w2, …, wt, ① 作t片树叶, 分别以w1, w2, …, wt为权.
② 在所有入度为0的顶点(不一定是树叶)中选出两个 权最小的顶点, 添加一个新分支点, 以这2个顶点为 儿子, 其权等于这2个儿子的权之和.
③ 重复②, 直到只有1个入度为0 的顶点为止. W(T)等于所有分支点的权之和
小结与学习要求
1.掌握树的概念及其各种等价定义;
2.熟悉生成树与回路和割集的关系,掌握
最小生成树的构造方法;
3.熟练掌握根树的性质和最优二元树的生
成方法和应用;
4. 了解平面图的概念及其性质。
作业六
课后习题:
9.1-9.9,9.11,9.13
9.2
一、树的概念
根树及其应用
有向树: 基图为无向树的有向图 根树: 有一个顶点入度为0, 其余的入度均为1的 非平凡的有向树 树根: 有向树中入度为0的顶点 树叶: 有向树中入度为1, 出度为0的顶点 内点: 有向树中入度为1, 出度大于0的顶点 分支点: 树根与内点的总称(出度大于等于1) 顶点v的层数: 从树根到v的通路长度,记作l(v) 树高: 有向树中顶点的最大层数,记作h(T)
根树的分类: 有序树: 每一层的结点均有序 r元树:根树的每个分支点至多有r个儿子 r元正则树: 根树的每个分支点恰有r个儿子 r元完全正则树: 所有树叶层数相同都等于树高的r元 正则树 r元有序树: 有序的r元树 r元正则有序树: 有序的r元正则树 r元完全正则有序树: 有序的r元完全正则树
最优二元树:
v4
v5
or
v2 3 v3
1
v5 2
5
5
v4
W(T)=1+2+3+5+5=16
五:基本回路与基本回路系统
定义: 设T是n阶m条边的无向连通图G的一棵 生成树,设e1, e2, … , emn+1为T的弦. 设Cr为T添加弦er产生的G中惟一的圈 (由er和树枝组成), 称Cr为对应弦er的 基本回路 r=1, 2, …, mn+1. 称{C1,C2, …, Cmn+1}为对应T 的基本回路系统.
应用:算术式的波兰符号法与逆波兰符号法 用2元有序正则树表示算式: 最高层次运算放在树 根上, 然后依次将运算符放在根子树的根上, 数放 在树叶上, 规定被除数、被减数放在左子树树叶上.
例如, 右图表示算式 ((b+(c+d))a)((ef)(g+h)(ij))
波兰符号法(前缀符号法): 按前序法遍历算式树, 其 结果不加括号. 例如, 对上页中树的访问结果为 b+cdaef+ghij 逆波兰符号法(后缀符号法): 按后序法遍历, 规定每 个运算符与前面紧邻两数运算. 例如, 对上页中树的访问结果为 课后作业:9.11,9.14 bcd++aefgh+ij
由上式解出x2.
三、生成树及其构造方法
生成树:若图G为无向连通图. T为G的生成子
图,且T为树,称T为G的生成树。 树枝与弦:G在T中的边称为T的树枝,G不
在T中的边称为T的弦。 余树:T的弦的集合的导
A
生成树
D B C
余树
D
B
B
C
C
生 成 树
A
余树
D
D
B
B C
C
无向连通图的生成树不一定唯一
(2) 每对顶点之间具有唯一一条初级通路
(3) n = m+1 (4) 若在G中任意两个不相邻的顶点之间增加一 条边,就形成唯一一条初级回路。 (5) 连通且每条边都是桥 (6) 连通但删除任何一条边后就不连通
性质(7): 任一棵非平凡树 T = < V,E >,至少有 两片叶。 证明:设T有x片树叶,由握手定理及定理9.1知,
生成树的余树不一定是树
四、最小生成树
带权图的最小生成树:设G = < V,E,W >是带权
的连通简单图, T是G的一棵生成树, T中所有枝的权之和称为T的权,记作:
W(T)。
具有权最小的生成树称为最小生成树。