【管理运筹学】第 7 章 | 图与网络分析(2,最小支撑树问题)


引言

承接前文,了解了图论相关的基本知识后,我们来看看几个图论中经典的问题。


二、最小支撑树问题

2.1 树的定义及其基本性质

无圈的连通图称为树。

在这里插入图片描述

其有几个相互关联的基本性质。

树的性质 1 —— 若 T T T 是树,且树中点的个数 n T ≥ 2 n_T \geq 2 nT2 ,则 T T T 中至少有两个悬挂点。

树的性质 2 —— 图 T T T 是树,则 T T T 中的边数 m m m 等于点数 n n n 减去 1 ,即 m = n − 1. m=n-1. m=n1.

树的性质 3 —— 图 T T T 是树的充分必要条件是任意两个顶点之间恰有一条链。

由性质 3 可得如下推论:

  1. 从一个树中去掉任意一边,则余下的图是不连通的。由此可知,在点集合相同的所有图中,树是含边树最少的连通图。
  2. 在树中不相邻的两个点之间填上一条边,则恰好得到一个圈。

综上,可以归纳出树 T T T 的六个基本性质,即:

  1. 无圈图;
  2. 连通图;
  3. m T = n T − 1 ; m_T=n_T-1; mT=nT1;
  4. 减去一条边不连通;
  5. 加一条边恰有一个圈;
  6. 至少两个悬挂点。

2.2 图的支撑树

设图 T = ( V , E ′ ) T=(V,E') T=(V,E) 是图 G = ( V , E ) G=(V,E) G=(V,E) 的支撑子图,如果图 T T T 是一个树,称其为 G G G 的一个支撑树。

定理 —— 图 G G G 有支撑树的充要条件是图 G G G 是连通的。

证明: 必要性显然成立。

充分性。设图 G G G 是连通图,如果本身不含圈,其本身是一个树,从而 G G G 是它本身的一个支撑树。如果 G G G 含圈,从圈中任意地去掉一条边,可得到 G G G 的一个支撑子图 G 1 G_1 G1 。如果 G 1 G_1 G1 不含圈,那么 G 1 G_1 G1 G G G 的一个支撑树;如果 G 1 G_1 G1 含圈,那么从 G 1 G_1 G1 中任取一个圈,从圈中再去掉一条边,得到 G 2 G_2 G2 ,如此重复,最终可以得到一个不含圈的支撑子图 G k G_k Gk,即支撑树。

此定理充分性的证明也启发我们一个寻找连通图的支撑树的办法。就是任取一个圈,从圈中去掉一边,对余下的圈重复这个步骤,直到不含圈为止,即可得到一个支撑树,这种方法称为“破圈法” 。

也可以反过来想,从图中任取一条边 e 1 e_1 e1 ,找一条不与 e 1 e_1 e1 构成圈的边 e 2 e_2 e2 ,再找一条不与 ( e 1 , e 2 ) (e_1,e_2) (e1,e2) 构成圈的边 e 3 e_3 e3 ,直到不能进行为止。此时,由所有取出的边所构成的图是一个支撑树,称此种方法为“避圈法” 。

2.3 最小支撑树的定义及有关定理

给定无向网络 G = ( V , E , W ) G=(V,E,W) G=(V,E,W) ,对于 G G G 中的每条边 e ∈ E e \in E eE ,设权 w ( e ) ≥ 0 w(e) \geq0 w(e)0 ,对于 G G G 的每一个支撑树 T T T ,我们定义 T T T 的权为 W ( T ) = ∑ e ∈ E w ( e ) W(T)=\sum_{e\in E}w(e) W(T)=eEw(e) 如果支撑树 T ∗ T^* T 是所有支撑树中权最小者,则称 T ∗ T^* T G G G 的最小支撑树。

定理 —— 设 T T T 是网络 G = ( V , E , W ) G=(V,E,W) G=(V,E,W) 的支撑树,任意一个树外的边 e ∈ E e \in E eE ,唯一决定一个圈 C ( e ) C(e) C(e) 。除 e e e 外, C ( e ) C(e) C(e) 的其他边都属于 T T T ,如果 T T T G G G 的一个最小支撑树,则 e e e C ( e ) C(e) C(e) 中的最大权重边。

证明: 在圈 C ( e ) C(e) C(e) 中任取另一条边 e ′ e' e ,则 T ∪ { e } − { e ′ } T \cup\{e\}-\{e'\} T{ e}{ e} 仍然连通不含圈,即是一个树,记为 T ′ T' T ,有 W ( T ′ ) = W ( T ) + w ( e ) − w ( e ′ ) W(T')=W(T)+w(e)-w(e') W(T)=W(T)+w(e)w(e) 。由于 T T T 为最小支撑树,有 W ( T ) ≤ W ( T ′ ) W(T) \leq W(T') W(T)W(T) ,即 w ( e ) ≤ w ( e ′ ) w(e) \leq w(e') w(e)w(e) ,由于 e ′ e' e 的任意性,故原命题得证。

定理 —— 设 T T T 是网络 G = ( V , E , W ) G=(V,E,W) G=(V,E,W) 的支撑树,则对于任意一条树上的边 e ∈ E e \in E eE ,唯一地决定 G G G 的一个割集 Φ ( e ) \varPhi(e) Φ(e) ,除了 e e e 外, Φ ( e ) \varPhi(e) Φ(e) 上的其他边都不属于 T T T ,如果 T T T G G G 的最小支撑树,则 e e e Φ ( e ) \varPhi(e) Φ(e) 中的最小权重边。

2.4 最小支撑树算法

主要有三个算法,分别是避圈法、反圈法和破圈法。

2.4.1 避圈法(KRUSKAL算法)

首先将网络 G G G 中的边按权大小排序,从最小边开始选起,每次选出一个新的边后要判断是否与所选的边构成一个圈,如果是则放弃该边,否则入选该边知道所选的边的数量等于点的数量减去 1 为止。每次选择边,优先选择权最小的边,所以又叫作最小边优选法。

2.4.2 反圈法(PRIM算法)

从图 G = ( V , E ) G=(V,E) G=(V,E) 中任取一个顶点放入树 T T T 的点集 V T V_T VT 中,对于将图 G G G 分成 V T , V ‾ T V_T,\overline{V}_T VT,VT 的割集 Φ ( V T ) \varPhi(V_T) Φ(VT) 来说,选取一个权最小的边放入树 T T T 的边集中,并将该边所关联的顶点放入 V T V_T VT 中,重复上述步骤,直到所有顶点均选入 V T V_T VT 为止。

2.4.3 破圈法

G ( k ) G^{(k)} G(k) G G G 的连通生成子图(开始 G ( 0 ) = G G^{(0)}=G G(0)=G),若 G ( k ) G^{(k)} G(k) 中不包含圈,则其为最小支撑树;若其中包含圈,选圈中权重最大的一条边去掉,重复上述过程,直到找不到圈为止。


写在最后

下一个问题,我们来看看最短路问题!

猜你喜欢

转载自blog.csdn.net/Douglassssssss/article/details/132672433
今日推荐