1
图论与网络流理论
( Graph Theory and Network Flow Theory)
讲授:高随祥
中科院研究生院专业基础课
学时/学分:60/3
本课程适合基础数学、应用数学、计算数学、运筹学与控制论、概率论与数
理统计各专业的硕士学位研究生作为专业基础课,也可供物理学、化学、天文学、
地学、生物科学、计算机科学与技术、计算机软件、管理科学与工程以及通信、
信号等学科专业的硕士研究生选修。主要讲授图论与网络流理论的基本概念、方
法和定理,介绍该领域重要的问题以及典型的算法,展示图论与网络流模型及方
法的广泛应用。为学习者将来从事有关方面的理论研究打下基础,也为进行应用
性研究提供一种有力的工具。
2
内容提要
第一章 图的基本概念
图的基本概念;二部图及其性质;图的同构;关联矩阵与邻接矩阵。
路、圈与连通图;最短路问题。
树及其基本性质;生成树;最小生成树。
第二章 图的连通性
割点、割边和块;边连通与点连通;连通度; Whitney 定理;可靠通信网络的设计。
第三章 匹配问题
匹配与最大匹配;完美匹配;二部图的最大匹配;指派问题与最大权匹配。
第四章 欧拉图与哈密尔顿图
欧拉图;中国邮递员问题;哈密尔顿图;旅行商问题。
第五章 支配集、独立集、覆盖集与团
支配集、点独立集、点覆盖集、边覆盖集与团的概念及其求法。
第六章 图的着色问题
点着色;边着色;平面图;四色猜想;色多项式;色数的应用。
第七章 网络流理论
有向图;网络与网络流的基本概念;最大流最小割定理;求最大流的标号算法;最小费
用流问题;最小费用最大流;网络流理论的应用。
主要参考书
[1] J.A. Bondy and U.S. Murty, Graph theory with applications, 1976, 有中译本(吴望名等译) 。
[2] B.Bollobas, Modern graph theory (现代图论 ),科学出版社, 2001。
[3] 蒋长浩,图论与网络流,中国林业出版社, 2001。
[4] 田丰,马仲蕃,图与网络流理论,科学出版社, 1987。
[5] 徐俊明,图论及其应用,中国科技大学出版社, 1998。
[6] 王树禾,图论及其算法,中国科技大学出版社, 1994。
[7] 殷剑宏,吴开亚,图论及其算法,中国科技大学出版社, 2003。
考核方式 :平时成绩+期末闭卷笔试
3
第一章 图的基本概念
§ 1.1 图的基本概念
1. 图 (graph):一集元素及它们之间的某种关系。具体地说,图是一个二元组 ),( EV ,其中
集合 V 称为 顶点集 ,集合 E 是 VV × 的一个子集(无序对,元素可重复) ,称为 边集 。
例 1.1.1 ),( EVG = ,其中
},,,,{
54321
vvvvvV = , )},(),,(),,(),,(),,(),,(),,{(
55515153433221
vvvvvvvvvvvvvvE = 。
这便定义出一个图。
2. 图的图示
通常, 图的顶点可用平面上的一个点来表示, 边可用平面上的线段来表示 (直的或曲的) 。
这样画出的平面图形称为图的图示。
例如,例 1.1.1 中图的一个图示为
注 : ( 1)由于表示顶点的平面点的位置的任意性,同一个图可以画出形状迥异的很多图示。
比如下图是例 1.1 中图的另一个图示:
( 2)图的图示直观易懂,因此以后一般说到一个图,我们总是画出它的一个图示来表示。
3. 一些概念和术语
( 1) 点与边的关联 (incident)
( 2) 点与点的相邻( adjacent)
( 3) 边与边的相邻
( 4) 边的端点( end vertices)
( 5) 环边 (loop)
( 6) 重边 (multiedge)
( 7) 简单图 (simple graph)
v
5
e
1
e
2
e
3
e
4
e
5
e
6
e
7
v
1
v
2v3
v
4
v
4
e
1
e
2
e
3
e
4
e
5
e
6
e
7
v
1
v
2
v
3
v
5
4
( 8) 完全图 (complete graph)
( 9) 图的顶点数(图的阶) ν 、边数 ε
( 10) 顶点 v 的度 (degree): d(v) = 顶点 v 所关联的边的数目(环边计两次) 。
( 11) 图 G 的最大度: )}(|)(max{)( GVvvdG
G
∈=?
图 G 的最小度: )}(|)(min{)( GVvvdG
G
∈=δ
( 12)正则图 (regular graph):每个顶点的度都相等的图。
( 13) 图的补图 (complement): 设 G 是一个图, 以 )(GV 为顶点集, 以 )}(),(|),{( GEyxyx ?
为边集的图称为 G 的补图,记为 G 。
定理 1.1.1 ε2)(
)(
=
∑
∈ GVv
vd
证明:按每个顶点的度来计数边,每条边恰数了两次。
推论 1.1.1 任何图中,奇度顶点的个数总是偶数(包括 0) 。
4. 子图
子图 (subgraph):如果 )()( GVHV ? 且 )()( GEHE ? ,则称图 H 是 G 的子图,记为
GH ? 。
生成子图 (spanning subgraph): 若 H 是 G 的子图且 () ()VH VG= ,则称 H 是 G 的生成子图。
点导出子图 (induced subgraph):设 )(GVV ?′ ,以 V′为顶点集,以两端点均在 V′中的边
的全体为边集所组成的子图,称为 G 的由顶点集 V′导出的子图,简称为 G 的点导出子图,
记为 ][VG ′ .
边导出子图 (edge-induced subgraph):设 )(GEE ?′ ,以 E′为顶点集,以两端点均在 E′中
的边的全体为边集所组成的子图, 称为 G 的由边集 E′导出的子图, 简称为 G 的边导出子图,
记为 ][EG ′ .
5. 路和圈
途径 (walk):图 G 中一个点边交替出现的序列
kk
iiiiii
veevevw L
2110
= 。
迹 (trail):边不重的途径。
路 (path): 顶点不重复的迹。
(注:简单图中的路可以完全用顶点来表示,
k
iii
vvvP L
10
= )
闭途径 ( closed walk) :起点和终点相同的途径。
闭迹 (closed trail):起点和终点相同的迹,也称为回路( circuit) .
圈 (cycle): 起点和终点相同的路。
5
注:
( 1)途径(闭途径) 、迹(闭迹) 、路(圈)上所含的边的个数称为它的 长度 。
( 2)简单图 G 中长度为奇数和偶数的圈分别称为 奇圈 (odd cycle)和 偶圈 (even cycle)。
( 3) 对任意 )(, GVyx ∈ , 从 x 到 y 的具有最小长度的路称为 x 到 y 的 最短路 ( shortest path) ,
其长度称为 x 到 y 的 距离 (distance),记为 ),( yxd
G
。
( 4)图 G 的直径 (diameter): )}(,|),(max{ GVyxyxdD
G
∈?= .
( 5)简单图 G 中最短圈的长度称为图 G 的 围长 (girth),最长圈的长度称为图 G 的 周长
(circumference)。
例 1.1.2 设 G 是一个简单图,若 2)( ≥Gδ ,则 G 中必含有圈。
证明:设 G 中的最长路为
k
vvvP L
10
= 。因 2)(
0
≥vd ,故存在与
1
v 相异的顶点 v 与
0
v 相
邻。若 Pv? ,则得到比 P 更长的路,这与 P 的取法矛盾。因此必定 Pv∈ ,从而 G 中有
圈。证毕。
例 1.1.3 设 G 是简单图,若 3)( ≥Gδ ,则 G 必有偶圈。
证明:设
k
vvvP L
10
= 是 G 的最长路。
因为 3)(
0
≥vd , 所以存在两个与
1
v 相异的顶点 vv ′′′, 与
0
v 相邻。 vv ′′′, 必都在路 P 上,
否则会得到比 P 更长的路。无妨设 )(,, jivvvv
ji
<=′′=′ 。
若 ji, 中有奇数,比如 i 是奇数,则路 P 上
0
v 到
i
v 的一段与边
i
vv
0
构成一个偶圈;
若 ji, 都是偶数,则路 P 上
i
v 到
j
v 的一段与边
i
vv
0
及
j
vv
0
构成一个偶圈。证毕。
例 1.1.4 设 G 是简单图,若 3)( ≥Gδ ,则 G 中各个圈长的最大公因数是 1 或 2。
证明:由上例知, G 中有长分别为 1,1 ++ ji 和 2+?ij 的圈。若 1,1 ++ ji , 2+?ij 三
数有公因数 2>m ,则 )(| jim ? ,于是 2|m ,这是不可能的。因此 1,1 ++ ji , 2+?ij
三数的公因数必不超过 2。从而各个圈长的最大公因数是 1 或 2。证毕。
6. 二部图
二部图 (bipartite graph):若图 G 的顶点集可划分为两个非空子集 X 和 Y,使得任一条边都
有一个端点在 X 中, 另一个端点在 Y 中, 则称 G 为二部图 (或偶图) , 记为 G= ),( EYX U ,
),( YX 称为 G 的一个划分。
完全二部图 (complete bipartite graph):在二部图 ),( EYXG U= 中,若 X 的每个顶点与 Y
的每个顶点有边连接,则称 G 为完全二部图;若 mX =|| , nY =|| ,则记此完全二部图为
nm
K
,
。
6
定理 1.1.2 一个图是二部图当且仅当它不含奇圈。
证明: 必要性 :设
010
vvvvC
k
L= 是二部图 ),( EYXG U= 的一个圈。无妨设 Xv ∈
0
,
由二部图的定义知, Yv ∈
1
, Xv ∈
2
, L ,一般地, Xv
i
∈
2
, Yv
i
∈
+12
, ( L,1,0=i ) 。
又因 Xv ∈
0
,故 Yv
k
∈ ,因而 k 是奇数。注意到圈 C 上共有 1+k 条边,因此是偶圈。
充分性 :设 G 不含奇圈。取 )(GVu∈ ,令
}),(|)({ oddvudGVvX =∈= , }),(|)({ evenvudGVvY =∈= 。
任取一条边
21
vve = ,欲证
21
, vv 分属于 X 和 Y。设 P, Q 分别是 u 到
21
, vv 的最短路。
( 1)如果
12
vvQP += 或
21
vvPQ += ,则
21
, vv 到 u 的距离奇偶性相反,
21
, vv 分属于 X
和 Y。
( 2)否则,设 u′是 P 与 Q 的最后一个公共顶点,因 P 的 ),( uu ′ 段和 Q 的 ),( uu ′ 段都是 u
到 u′的最短路,故这两段长度相等。
假如 P, Q 的奇偶性相同,则 P 的 ),(
1
vu′ 段和 Q 的 ),(
2
vu′ 段奇偶性相同,这两段与边
e 构成一个奇圈,与定理条件矛盾。可见 P, Q 的奇偶性不同,从而
21
, vv 分属于 X 和 Y。
这便证明了 G 是一个二部图。 证毕。
7. 连通性
图中两点的连通 :如果在图 G 中 u, v 两点有路相通,则称顶点 u, v 在图 G 中连通。
连通图 ( connected graph) :图 G 中任二顶点都连通。
图的连通分支 ( connected branch, component) :若图 G 的顶点集 V(G)可划分为若干非空子集
ω
VVV ,,,
21
L ,使得两顶点属于同一子集当且仅当它们在 G 中连通,则称每个子图 ][
i
VG 为
图 G 的一个连通分支( ω,,2,1 L=i ) 。
注 : ( 1)图 G 的连通分支是 G 的一个极大连通子图。
( 2)图 G 连通当且仅当 1=ω 。
例 1.1.5 设有 2n 个电话交换台,每个台与至少 n 个台有直通线路,则该交换系统中任二台均
可实现通话。
证明: 构造图 G 如下:以交换台作为顶点,两顶点间连边当且仅当对应的两台间有直通线
路。问题化为:已知图 G 有 2n 个顶点,且 nG ≥)(δ ,求证 G 连通。
事实上,假如 G 不连通,则至少有一个连通分支的顶点数不超过 n。在此连通分支中,
顶点的度至多是 1?n 。这与 nG ≥)(δ 矛盾。证毕。
例 1.1.6 若图中只有两个奇度顶点,则它们必连通。
证明: 用反证法。假如 u 与 v 不连通,则它们必分属于不同的连通分支。将每个分支看成一
个图时,其中只有一个奇度顶点。这与推论 1.1.1 矛盾。证毕。
7
8. 图的同构
由前已知,同一个图有不同形状的图示。反过来,两个不同的图也可以有形状相同的图
示。比如:
可见
1
G 和
2
G 的顶点及边之间都一一对应,且连接关系完全相同,只是顶点和边的名称
不同而已。这样的两个图称为是 同构的 (isomorphic)。
从数学上看,同构的两个图,其顶点间可建立一一对应,边之间也能建立一一对应,且
若一图的两点间有边,则在另一图中对应的两点间有对应的边。严格的数学定义如下。
定义 1.1.1 两个图 ))(),(( GEGVG = 与 ))(),(( HEHVH = ,如果存在两个一一映射:
)()(: HVGV →α , )()(: HEGE →β ,
使得对任意 )(),( GEvue ∈= ,都有 )())(),(( HEvu ∈αα 且 =)(eβ ))(),(( vu αα ,则称图
G 与 H 同构。记为 HG ? .
9. 图的矩阵表示
( 1)关联矩阵
=)(GM
?
?
?
?
?
?
?
?
?
?
?
?
?
?
νενν
ε
ε
ε
ν
mmm
mmm
mmm
eee
v
v
v
L
LLLL
L
L
L
M
21
22221
11211
21
2
1
,
其中
ij
m 表示顶点
i
v 与边
j
e 关联的次数。
( 2)邻接矩阵
=)(GA
?
?
?
?
?
?
?
?
?
?
?
?
?
?
v
v
v
aaa
aaa
aaa
vvv
v
v
v
ννν
ν
ν
L
LLLL
L
L
L
M
21
22221
11211
21
2
1
,
其中
ij
a 表示顶点
i
v 与
j
v 相邻的次数。
v
1
v
2
v
3
v
4
e
1
e
3
e
2
e
4
e
5
e
6
a
4
u
1
a
1
a
2
a
3
u
2
u
3
u
4
a
6
a
5
u
1
u
2
u
3
u
4
a
1
a
3
a
2
a
4
a
5
a
6
G
1
G
2
8
例 1.1.7
?
?
?
?
?
?
?
?
?
?
?
?
?
?
=
0211000
1001100
0000111
1010011
)(GM ,
?
?
?
?
?
?
?
?
?
?
?
?
?
?
=
1101
1011
0102
1120
)(GA 。
可见: ( 1) M(G)和 A(G)的元素是 0, 1 或 2。若 G 是简单图,则只有 0 和 1;
( 2) A(G)是对称矩阵;
( 3) M(G)中每列之和= 2; M(G)中第 i 行之和= v
i
的度;
若 G 中无环边,则 A(G)中第 i 行(列)之和= M(G)中第 i 行之和= v
i
的度。
图在计算机上处理时,可以以关联矩阵或邻接矩阵的形式存于计算机中。因邻接矩阵比
关联矩阵小又是对称矩阵,故通常使用邻接矩阵的上三角部分。
§ 1.2 最短路问题
一、赋权图
对图 G 的每条边 e,赋以一个实数 w(e),称为边 e 的权。每个边都赋有权的图称为赋权
图。
权在不同的问题中会有不同的含义。例如交通网络中,权可能表示运费、里程或道路的
造价等。
设 H 是赋权图 G 的一个子图, H 的权定义为 )(HW =
∑
∈ )(
)(
HEe
ew ,特别地,对 G 中一
条路 P, P 的权为 )(PW =
∑
∈ )(
)(
PEe
ew
。
二、 最短路问题
给定赋权图 G 及 G 中两点 u,v,求 u 到 v 的具有最小权的路(称为 u 到 v 的最短路) 。
注 :赋权图中路的权也称为路的长,最短 (u,v)路的长也称为 u,v 间的距离,记为 d(u,v)。
最短路问题是一个优化问题,属于网络优化和组合优化的范畴。对这种优化问题的解答
一般是一个算法。最短路问题有很多算法,其中最基本的一个是 Dijkstra 算法。
e
1
e
2
e
3
e
4
e
5
e
6
e
7
v
1
v
2
v
4
v
3
9
三、 Dijkstra 算法
1. 算法思想
若路
kk
uuuuP
110 ?
= L 是从
0
u 到
k
u 的最短路,则
110 ?
=′
k
uuuP L 必是
0
u 到
1?k
u 的最
短路。基于这一原理,算法由近及远地逐次求出
0
u 到 其它各点 的最短路。
下面通过例子说明具体做法。
( 1)令
00
uS = ,
00
\ SVS = ,求
0
u 到
0
S 中最近点的最短路,结果找到
1
u 。
( 2)令 }{:
100
uSS U= ,
00
\ SVS = ,求
0
u 到
0
S 中最近点的最短路。此时除了考虑
0
u 到
0
S 的直接连边外,还要考虑
0
u 通过
1
u 向
0
S 的连边,即选取
0
S 中一点 u′使得
)},(),({min),(
0
,
0
00
vuwuuduud
SvSu
+=′
∈∈
。 (*)
结果找到
2
u 。
一般地,若 },,,{
10 kk
uuuS L= 以及相应的最短路已找到。则可应用 (*)式来选取新的
u′,获得
0
u 到 u′的最短路。
2.算法实现-标号法
标号方法:
初始时, 0:)(
0
=ul , ∞=:)(vl , (
0
uv ≠ ) 。然后算法逐步修改 S 中顶点的标号。
第 i 步时, )()},()(),(min{:)(
iii
Svvuwulvlvl ∈?+= 。
Dijkstra 算法:
Step1. Let 0:)(
0
=ul , ∞=:)(vl , (
0
uv ≠ ) , }{:
00
uS = and 0:=i 。
Step2. for every
i
Sv∈ , )}()(),(min{:)( vuwulvlvl
ii
+= 。 Take
i
Sv ∈
0
such that
)}({min)(
0
vlvl
i
Sv∈
= 。 Denote the vertex
0
v by
1+i
u , let }{
11 ++
=
iii
uSS U 。
Step3. if 1?=νi , then stop, else, 1: += ii , go to step 2.
3. 算法有效性
一个图论算法称为是有效算法(或好算法) ,如果在任何图上施行这个算法所需要的计
算量(时间复杂性)都可由 ν 和 ε 的一个多项式为其上界。 Dijkstra 算法是好算法。它的计
算量为 )(
2
νO 。全部迭代过程需要做
2
)1( ?νν
次加法和 )1( ?νν 次比较。
u
0
u
1 u
2
u
3
u
4
u
5
u
6
u
7
1
2
2
2
3
3
1
3
4
4
4
5
6
6
7
7
8
10
( step2 中第 1 式需要 1??iν 次加法, 1??iν 次比较。第 2 式需要 1??iν 次比较。
而 =++?+?=??
∑
?
=
1)2()1()1(
1
0
Lννν
ν
i
i
2
)1( ?νν
) 。
§ 1.3 树及其性质
不含圈的图称为森林 , 不含圈的连通图称为 树 ( tree) 。
定理 1.3.1 下列命题等价:
( 1) G 是树;
( 2) G 中无环边且任二顶点之间有且仅有一条路;
( 3) G 中无圈且 1?=νε ;
( 4) G 连通且 1?=νε
;
( 5) G 连通且对任何 )(GEe∈ , eG ? 不连通;
( 6) G 无圈且对任何 )(GEe∈ , eG + 恰有一个圈。
证明: ( 1) ?( 2)
G 是树 ?G 连通 ? )(, GVvu ∈? ,存在路 ),( vuP 。
若还存在一条路 ≠′ ),( vuP ),( vuP ,则必存在 w, w 是路 P 与 P′除了 v 之外最后一个
公共顶点。 P 的 ),( vw 段与 P′的 ),( vw 段构成圈,这与 G 是树矛盾。故只存在唯一的 ),( vu
路。
( 2) ?( 3)
若 G 有圈,则此圈上任二顶点间有两条不同的路,与前提条件矛盾。
下面用归纳法证明 1?=νε 。
1=ν 时, 0=ε ,结论真。
假设 k≤ν 时结论真,我们来证明当 1+= kν 时,也有 1?=νε 成立。
当 1+= kν 时,任取 )(, GVvu ∈ 。考虑图 uvGG ?=′ ,因 G 中 u、 v 间只有一条路,
即边 uv,故 G′不连通且只有两个连通分支,设为
21
,GG 。注意到
21
,GG 分别都连通且任二
顶点间只有一条路,由归纳法假设, 1)()(
11
?= GG νε , 1)()(
22
?= GG νε 。因此
1)(1)1)(()1)((1)()()(
2121
?=+?+?=++= GGGGGG νννεεε 。
归纳法完成。
( 3) ?( 4)
用反证法。若 G 不连通,设
w
GGG ,,,
21
L 是其连通分支( 2≥w ) ,则 1?=
ii
νε (因
i
G 是连通无圈图,由已证明的 (1) 和 (2) 知,对每个
i
G , ( 3 )成立) 。这样,
ww
w
i
i
w
i
i
?=?==
∑∑
==
ννεε
11
,这与 1?=νε 矛盾。
11
( 4) ?( 5)
21)()( ?=?=? νεε GeG ,但每个连通图必满足 1?≥νε (见下列命题) ,故图
eG ? 不连通。
命题 若图 H 连通,则 1)()( ?≥ HH νε 。
证明:对 ν 做数学归纳法。
2,1=ν 时, 1?≥νε 显然成立。
假设 k≤ν 的连通图都 1?≥νε 。
对于 1+= kν 的连通图 H,任取 )(HVv∈ ,考虑 vH ? 。
若 vH ? 连通,则由归纳假设, 11)()( ?=??≥? kvHvH νε ,而
1)(1)1(1)1(1)()( ?=?+=+?≥+?≥ HkkvHH νεε 。
若 vH ? 不连通,设
w
HHH ,,,
21
L 是其连通分支( 2≥w ) 。由归纳假设,
1)()( ?≥
ii
HH νε , ( wi ,,2,1 L= ) 。故
wkwvHwHHvH
w
i
i
w
i
i
?=??=?≥=?
∑∑
==
)()()()(
11
ννεε ,
而 1)(1)1()()()( ?=?+=+?≥+?≥ HkwwkwvHH νεε 。
归纳法完成。
( 5) ?( 6)
先证 G 中无圈:若 G 中有圈,删去圈上任一边仍连通,矛盾。
再证 eG + 恰含一个圈:因 G 连通且已证 G 无圈,故 G 是树。由( 2) ,任二顶点间仅
有一条路相连,故 eG + 中必有一个含有 e 的圈;另一方面,若 eG + 中有两个圈含有 e,
则 eG + Ge =? 中仍含有一个圈,矛盾。
( 6) ?( 1)
只需证 G 连通。任取 )(, GVvu ∈ ,若 u、 v 相邻,则 u 与 v 连通。否则, uvG + 恰含
一个圈,故 u 与 v 在 G 中连通。由 u、 v 的任意性,图 G 连通。
定理证毕。
推论 1.3.1 非平凡树至少含两个 1 度顶点(叶子) 。
证明:设 T 是一个非平凡树。因 T 连通,故对每个顶点
i
v ,都有 1)( ≥
i
vd 。若对所有
i
v 都有 2)( ≥
i
vd ,则 ν
ν
2)(
1
≥
∑
=i
i
vd 。另一方面, 22)1(22)(
1
?=?==
∑
=
ννε
ν
i
i
vd 。这
两方面矛盾。故 T 至少有一个 1 度顶点,设为 u。除此之外,其余 1?ν 个顶点的度数之和
为 32 ?ν 。若这些点的度都大于或等于 2,则其度数之和 22)1(2 ?=?≥ νν 。这与 32 ?ν
矛盾。故除 u 之外 T 还至少有一个度为 1 的顶点。证毕。
12
§ 1.4 生成树与最小生成树
一、生成树( spanning tree)
定义 1.4.1 设 T 是图 G 的一个子图,如果 T 是一棵树,且 )()( GT νν = ,则称 T 是 G 的一
个生成树。
定理 1.4.1 每个连通图都有生成树。
证明:设 G 是一个连通图。令 GGA ′′= |{ 是 G 的连通子图且 )}()( GG νν =′ 。易见 A 非
空。从 A 中取边数最少的一个,记为 T。下证 T 是 G 的生成树。显然只需证明 T 是树即可。
事实上,已知 T 连通,下证 T 无圈。
若 T 有圈 C,则去掉 C 上任一条边 e, eT ? 仍连通。从而 AeT ?? 。但 eT ? 比 T
少一条边,这与 T 的取法矛盾。证毕。
推论 1.4.1 若 G 连通,则 1?≥νε 。
证明:取 G 的生成树 T,则 1)(1)()()( ?=?≥≥ GTTG ννεε 。证毕。
二、最小生成树问题
问题描述: 在赋权图 G 中,求权最小的生成树。即:求 G 的一棵生成树 T,使得
∑
∈
=
Te
T
ewTw )(min)( 。
算法:
1. Kruskal 算法
step1. take )(
1
GEe ∈ such that 1:)},({min)( ==
∈
iewew
Ge
.
Step2. find },,,{\)(
211 ii
eeeGEe L∈
+
such that
(1) G[{
121
,,,,
+ii
eeee L }] does not contain any cycle, and
(2)
1+i
e is the one with minimum weight that meet (1).
Step3. if i+1 = 1)( ?Gν , stop; else, 1: += ii , go to step2.
定理 1.4.2 设
1)(21
,,,
?G
eee
ν
L 是 Kruskal算法获得的边, 则边导出子图 G[{
1)(21
,,,
?G
eee
ν
L }]
是 G 的最小生成树。
证明:记 =
*
T G[{
1)(21
,,,
?G
eee
ν
L }]。显然
*
T 无圈,因此
*
T 是森林。设它有 w 个连通分
支, 则
** *
() () ()1(()1)1 ()TTwT G Gν =ε + ≥ε +=ν ? +=ν 。 但
*
T 是 G 的子图, 故 )()(
*
GT νν = ,
于是
13
1)(1)()(
**
?=?= TGT ννε 。
由定理 1.3.1 的( 3) ,
*
T 是一棵树,从而是 G 的一棵生成树。
下证其最优性,用反证法。
假设
*
T 不是最小权生成树(下称最优树) 。
对 G 的任一棵生成树 T,记 },,,{|min{)(
121 ?
∈=
ν
eeeeiTf
i
L 且 }Te
i
? 。选取一棵
使 )(Tf 最大的最优树,记为 T
~
。 ( T
~
不会是
*
T ) 。设 kTf =)
~
( 。由 )
~
(Tf 的定义,
121
,,,
?k
eee L 既在
*
T 上也在 T
~
上,但
k
e 不在 T
~
上。因此
k
eT +
~
含有一个圈 C。 C 上必有一
条边
*
Te
k
?′ 。 显然
kk
eeTT ′?+=′ )
~
( 也是一棵生成树, 且 )()()
~
()(
kk
ewewTwTw ′?+=′ 。
按照算法,
k
e 是使 G[{
k
eee ,,,
21
L }] 中无圈的边中权最小的。注意
G[{
kk
eeee ′
?
,,,,
121
L }] 是 T
~
的子图,也无圈。故由算法规则知:
)()(
kk
ewew ≥′
。由前式,
)
~
()( TwTw ≤′
这说明
T′
也是最优树,但
)
~
()( TfkTf =>′
,这与
T
~
的取法矛盾。证毕。
例 1.4.1 欲建设一个连接 5 个城市的光纤通信网络。各城市间线路的造价如图所示,求一个
使总造价最少的线路建设方案。
2. Prim 算法
step1. 任取 )(
0
GVv ∈ ,令 }{
00
vS = ,
00
\)( SGVS = , 0:=i 。
step2. 求
i
S 到
i
S 间权最小的边
i
e ,设
i
e 的属于
i
S 的端点为
i
v ,令 }{:
1 iii
vSS U=
+
,
11
\)(
++
=
ii
SGVS 。
Step3. 若 1?=νi ,停止;否则,令 1: += ii ,继续 step2。
14
12
11
10
8
6
5
3 8.5
6.4
v
1
v
2
v
3
v
4
v
5
14
习题一
1. 证明: ?≤≤
ν
ε
δ
2
。
2. 如果 νεν <≥ ,2 ,则连通图 G 至少有两个 1 度顶点。
3. 如果 1+=νε ,则存在 )(GVv∈ 使得 3)( ≥vd 。
4. 在 k 度正则图 G 中, )2(mod0≡νk 。
5. 晚会上大家握手言欢。证明:握过奇数次手的人必有偶数个。
6. n 个运动队进行一项竞赛。已赛完 1+n 局。试证一定存在一个队至少参加过 3 局比赛。
习题二
1. 证明:若 G 是完全二部图,则
4
2
ν
ε ≤ 。
2. 证明:若 ),( EYXG U= 是一个 k 度正则二部图,则 |||| YX = 。
3. 若 G 是简单图且 kG ≥)(δ ,则 G 有长为 k 的路。
4. 证明连通图中两条最长路必有公共顶点。
5. 设 G 是直径为 2 的简单图,且 2)( ?=? νG ,则 42 ?≥ νε 。
6. 2≥δ 的简单图必含有长至少为 1+δ 的圈。
7. 若 νε ≥ ,则 G 中必有圈。
习题三
1. 不含圈的图称为森林( forest) ,证明:
( 1) G 是森林当且仅当 w?=νε ; ( 2)无孤立点的森林至少有 2w 个 1 度顶点。
这里 w 表示 G 的连通分支数,孤立点指零度顶点。
2. 证明非平凡树中最长路的起点和终点都是叶子( 1 度点) 。
3. 恰有两个叶子的树必是路。
4. 若 G 是树且 k≥? ,则 G 至少有 k 个 1 度顶点。
5. 证明每个树都是二部图。
6. 修改 Kruskal 算法用以:
( 1)求赋权连通图中的最大权生成树; ( 2)求不连通赋权图中的最小权生成林。
15
课外阅读:
[1] 阅读参考书上有关内容。
[2] D. Jungnickel, Graphs, Networks and Algorithms, (Algorithms and Computation in
Mathematics, Vol.5), Springer, 1998, 第 3 章、第 4 章。
[3] N.Deo and N.Kumar, Computation of Constrained Spanning Trees: A Unified Approach, in
Network Optimization (P.M. Pardalos, D.W. Hearn and W.W. Hager editors.), Lecture Notes in
Economics and Mathematical Systems 450, Springer-Verlag, 1997.
[4] M.R. Henzinger and V. King, Maintaining minimum spanning forests in dynamic graphs,
SIAM J. Computing, 31:2(2001), pp364-374.
[5] Guoliang Xue and Shangzhi Sun, Optimal multicast tree in communication systems with
channel capacities and channel reliabilities, IEEE Transactions on Communications, 47:5(1999),
pp662-663.