30离散数学第9章树
第九章 树
无向树与生成树 有向树与根树
§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}