图论讲义第2章-连通性
- 格式:pdf
- 大小:223.73 KB
- 文档页数:17
图论知识点摘要:图论是数学的一个分支,它研究图的性质和应用。
图由节点(或顶点)和连接这些节点的边组成。
本文将概述图论的基本概念、类型、算法以及在各种领域的应用。
1. 基本概念1.1 节点和边图由一组节点(V)和一组边(E)组成,每条边连接两个节点。
边可以是有向的(指向一个方向)或无向的(双向连接)。
1.2 路径和环路径是节点的序列,其中每对连续节点由边连接。
环是一条起点和终点相同的路径。
1.3 度数节点的度数是与该节点相连的边的数量。
对于有向图,分为入度和出度。
1.4 子图子图是原图的一部分,包含原图的一些节点和连接这些节点的边。
2. 图的类型2.1 无向图和有向图无向图的边没有方向,有向图的每条边都有一个方向。
2.2 简单图和多重图简单图是没有多重边或自环的图。
多重图中,可以有多条边连接同一对节点。
2.3 连通图和非连通图在无向图中,如果从任意节点都可以到达其他所有节点,则称该图为连通的。
有向图的连通性称为强连通性。
2.4 树树是一种特殊的连通图,其中任意两个节点之间有且仅有一条路径。
3. 图的算法3.1 最短路径算法如Dijkstra算法和Bellman-Ford算法,用于在加权图中找到从单个源点到所有其他节点的最短路径。
3.2 最大流最小割定理Ford-Fulkerson算法用于解决网络流中的最大流问题。
3.3 匹配问题如匈牙利算法,用于解决二分图中的匹配问题。
4. 应用4.1 网络科学图论在网络科学中有广泛应用,如社交网络分析、互联网结构研究等。
4.2 运筹学在运筹学中,图论用于解决物流、交通网络优化等问题。
4.3 生物信息学在生物信息学中,图论用于分析蛋白质相互作用网络、基因调控网络等。
5. 结论图论是数学中一个非常重要和广泛应用的领域。
它不仅在理论上有着深刻的内涵,而且在实际应用中也发挥着关键作用。
随着科技的发展,图论在新的领域中的应用将会不断涌现。
本文提供了图论的基础知识点,包括概念、图的类型、算法和应用。
图论_连通_连通分量 强连通图 : 强连通分量就是本⾝ 有向图 ---> ⾮强连通图 : 多个强连通分量图---> 连通图 : 连通分量就是本⾝ ⽆向图 ---> ⾮连通图 : 多个连通分量路径 : 顾名思义.路径长度 : 路径上边的数量.路径 : 顾名思义.路径长度 : 路径上边的数量.连通 : ⽆向图顶点A可以到顶点B,则称A,B连通.强连通 : 有向图中,两个顶点间⾄少存在⼀条互相可达路径,则两个顶点强连通连通图 : 图中任意两点都连通的图.强连通图 : 有向图的任意两点都强连通.连通分量 : ⽆向图的极⼤连通⼦图称为连通分量.连通图只有⼀个连通分量,即⾃⾝强连通分量: 强连通图有向图的极⼤强连通⼦图.强连通图的强连通分量只有⼀个,即强连通图本⾝.基图 : 将有向图的所有边替换成⽆向边形成的图.弱连通图 : 基图是连通图的有向图.(即,连通的有向图)求图的连通分量的⽬的,是为了确定从图中的⼀个顶点是否能到达图中的另⼀个顶点,也就是说,图中任意两个顶点之间是否有路径可达。
求强连通分量有多种算法.我⽤的Tarjan算法. 复杂度O(V+E)这两个博客写得不错:https:///reddest/p/5932153.htmlhttps:///shadowland/p/5872257.htmlint dfn[16]; // 时间戳int dfn_num = 0; // 时间int low[16]; // 节点u所能访问到的最⼩时间戳int inSt[16]; // 节点u是否在栈中.int st[16];int top = 0;// 我们维护的信息.int col[16]; // 给节点染⾊, 同⼀个连通块的节点应该是同⼀个颜⾊的.int col_num = 0; // 颜⾊值.int size[16]; // 每个颜⾊值所拥有的块数./*第⼀步: 访问当前节点的所有⼦节点: ⼦节点有三种第⼀种: 未访问过的, 我们对它进⾏访问, 同时设置它的时间戳dfn[u]和low[u]为++ndfn_num,以及进栈.第⼆种: 访问过的,并且在栈中,我们直接更新我们当前节点的low[] --> 注意应该⽤low[u] 和 dfn[v]⽐较.第三种: 访问过的,并且不在栈中的, 我们直接跳过.因为这个时候,所以它已经染⾊了,属于⼀个连通块了.第⼆步: 如果dfn[u] == low[u] 说明已经找到⼀个连通块了.这时候我们要将栈顶元素弹出,直到当前节点. 记得也要修改inSt, 同时维护我们需要的信息.*/void Tarjan(int u) {int v, i;dfn[u] = low[u] = ++dfn_num; //添加时间戳.st[++top] = u; // 进栈inSt[u] = true; // 标⽰在栈for (i=head[u]; i; i=edge[i].lst) {v = edge[i].to;if (!dfn[v]) {Tarjan(v);low[u] = min(low[u], low[v]);} else if (inSt[v]) {low[u] = min(low[u], dfn[v]);}}if (dfn[u] == low[u]) {col_num++;do {inSt[st[top]] = false;col[st[top]] = col_num;size[col_num]++;} while (st[top--] != u);}}View Code加上2个板⼦题./problem/1332/题⽬很简单: 要你求出最⼤的强连通块,如果有多个则输出字典序最⼩的⼀个.#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 5e4+500;struct Edge {int lst;int to;}edge[maxn<<1];int head[maxn];int qsz = 1;inline void add(int u, int v) {edge[qsz].lst = head[u];edge[qsz].to = v;head[u] = qsz++;}int dfn[maxn]; // 时间戳int dfn_num = 0; // 时间int low[maxn]; // 节点u所能访问到的最⼩时间戳int inSt[maxn]; // 节点u是否在栈中.int st[maxn];int top = 0;// 我们维护的信息.int col[maxn]; // 给节点染⾊, 同⼀个连通块的节点应该是同⼀个颜⾊的.int col_num = 0; // 颜⾊值.int size[maxn]; // 每个颜⾊值所拥有的块数.int id[maxn];void Tarjan(int u) {int v, i;dfn[u] = low[u] = ++dfn_num; //添加时间戳.st[++top] = u; // 进栈inSt[u] = true; // 标⽰在栈for (i=head[u]; i; i=edge[i].lst) {v = edge[i].to;if (!dfn[v]) {Tarjan(v);low[u] = min(low[u], low[v]);} else if (inSt[v]) {low[u] = min(low[u], dfn[v]);}}if (dfn[u] == low[u]) {col_num++;id[col_num] = u;do {inSt[st[top]] = false;col[st[top]] = col_num;size[col_num]++;id[col_num] = min(id[col_num], st[top]);} while (st[top--] != u);}}int main(){memset(id, 0x3f, sizeof(id));int n, i, u, v, m, t;scanf("%d%d", &n, &m);for (i=1; i<=m; ++i) {scanf("%d%d%d", &u, &v, &t);add(u, v);if (t==2) add(v, u);}for (i=1; i<=n; ++i)if (!dfn[i]) Tarjan(i);int mm = 0, tcol = -1;for (i=1; i<=col_num; ++i)if (mm < size[i]) {mm = size[i];tcol = i;} else if (m == size[i]) {if (id[tcol] > id[i])tcol = i;}// printf("%d \n", tcol);printf("%d\n", mm);for (i=1; i<=n; ++i)if (col[i] == tcol) printf("%d ", i);printf("\n");return0;}View Codehttps:///problem/HYSBZ-1051题⽬: 求出所有⽜都欢迎的⽜的个数. 我们可以把所有连通块求出,然后把⼀个连通块看成⼀个点,即缩点. 然后找到出度为零的点(连通块), 如果有且只有⼀个,那么连通块的点数就是答案,否则答案为零.#include <cstdio>#include <algorithm>using namespace std;struct Edge {int lst;int to;}edge[50500];int head[10100];int qsz = 1;inline void add(int u, int v) {edge[qsz].lst = head[u];edge[qsz].to = v;head[u] = qsz++;}int dfn[10100]; // 时间戳int dfn_num = 0; // 时间int low[10100]; // 节点u所能访问到的最⼩时间戳int inSt[10100]; // 节点u是否在栈中.int st[10100];int top = 0;// 我们维护的信息.int col[10100]; // 给节点染⾊, 同⼀个连通块的节点应该是同⼀个颜⾊的.int col_num = 0; // 颜⾊值.int size[10100]; // 每个颜⾊值所拥有的块数./*第⼀步: 访问当前节点的所有⼦节点: ⼦节点有三种第⼀种: 未访问过的, 我们对它进⾏访问, 同时设置它的时间戳dfn[u]和low[u]为++ndfn_num,以及进栈.第⼆种: 访问过的,并且在栈中,我们直接更新我们当前节点的low[] --> 注意应该⽤low[u] 和 dfn[v]⽐较. 第三种: 访问过的,并且不在栈中的, 我们直接跳过.因为这个时候,所以它已经染⾊了,属于⼀个连通块了. 第⼆步: 如果dfn[u] == low[u] 说明已经找到⼀个连通块了.这时候我们要将栈顶元素弹出,直到当前节点. 记得也要修改inSt, 同时维护我们需要的信息.*/void Tarjan(int u) {int v, i;dfn[u] = low[u] = ++dfn_num; //添加时间戳.st[++top] = u; // 进栈inSt[u] = true; // 标⽰在栈for (i=head[u]; i; i=edge[i].lst) {v = edge[i].to;if (!dfn[v]) {Tarjan(v);low[u] = min(low[u], low[v]);} else if (inSt[v]) {low[u] = min(low[u], dfn[v]);}}if (dfn[u] == low[u]) {col_num++;do {inSt[st[top]] = false;col[st[top]] = col_num;size[col_num]++;} while (st[top--] != u);}}bool ou[10010];int main(){// freopen("E:\\input.txt", "r", stdin);int n, i, j, u, v, m;scanf("%d%d", &n, &m);for (i=1; i<=m; ++i) {scanf("%d%d", &u, &v);add(u, v);}for (i=1; i<=n; ++i)if (!dfn[i])Tarjan(i);// 缩点操作int cnt = 0, res = 0;for (i=1; i<=n; ++i) {if (ou[col[i]]) continue;for (j=head[i]; j; j=edge[j].lst) {v = edge[j].to;if (col[i] != col[v]) {ou[col[i]] = true;break;}}}for (i=1; i<=col_num; ++i) {if (!ou[i]) {res = size[i];cnt++;}if (cnt > 1) {res = 0;break;}}printf("%d\n", res);return0;}View Code。
二部图定义:图),(E V G =称为二部图(bipartite graph),如果V 是两个互不相交的集合21,V V 的开集,且1V 和2V 中的顶点互不相邻. 这样的二部图也常称为),(21V V -二部图.定义:图G 的匹配是由G 中没有公共顶点构成的集合,与匹配M 中的边关联的顶点称为是被M -浸润的(saturated by M),其余的顶点称为未被M -浸润的(M-unsaturated). 图G 的一个完美匹配(perfect matching)是浸润的所有顶点的匹配. 图G 的边数最多的匹配称为一个最大匹配(maximum matching).例如在上图中,粗边给出了一个匹配1M ,显然两条细边给出了一个最大匹配2M . 定义:设M 是图G 的一个匹配. 如果路径P 的边交替出现在M 和不出现在M 中,则称P 是一条M -交错路径(M-alternating path). 两个顶点都未被M -浸润的交错路径称为M -增广路径(M-augmenting path).在上例中存在1M -增广路径,2M 是最大匹配,而不存在2M -增广路径,这不是偶然的. 因为可以让(留作习题):图G 的一个匹配M 是最大匹配⇔G 中无M -增广路径. 定义:图G 的一个顶点覆盖(covering)是一些顶点构成的集合)(G V ⊆κ,使得G 的任何一边都有一个顶点含于κ. 一个顶点覆盖κ称为最小顶点覆盖,是指不存在覆盖'κ,使得κκ<'.设κ是G 的一个顶点覆盖,M 是G 的一个匹配,显然M ≥κ. 我们关心对于最大匹配的最小顶点覆盖来说,等式是否成立. 在图1(a)中,等式成立,而图1(b)中最小顶点覆盖大小为3,而最大匹配大小为2. 注意图1(a)为二部图,图1(b)为有5条边的圈,从而不是二部图(可以一个图G 是二部图⇔G 中不含奇数边的图,证明留作习题).对于二部图,我们有下面一般的结论:定理:设G 是),(Y X -二部图,则G 的最大匹配的大小等于G 的最小顶点覆盖的大小(könig 1931).证明:设M 是G 的最大匹配,而Q 是M 的最小顶点覆盖,要证Q M =. 显然M Q ≥,故只需证明存在G 的M 个顶点的覆盖(则Q M ≥),对于M 中每一条边,如果存在未被M -浸润的X 中顶点出发的交错路径可达这条边,则选择此边在Y 中的顶点;否则选择此边在X 中的顶点,这样就选了M 个顶点,记为U .设E xy ⊂,Y y X x ∈∈,,只需证明x 或U y ∈,或M xy ∈,则由U 的定义得证.下证之:设M xy ∉. 又由M 是最大匹配,故M y x ∈∃11(其中Y y X x ∈∈11,)且1x x =或1y y =. 若1y y =(此时M x ∉),由于xy 是M -交错路径,故U y ∈.下设1x x =,如果U x ∉,则U y ∈1,由U 的定义:某条交错路径可达1y . 则存在交错路径'P 可达y ;或Py (若P x ∈1);或y x Py 11. 这样就出现了M -增广路径,与M 是最大匹配矛盾,故U x ∈.对于),(Y X -二部图,若存在一个浸润X 的匹配,则显然X ⊆∀κ,至少在Y 中存在κ个顶点与κ中的顶点相邻. 我们用)(κN 表示与κ中顶点相邻的顶点构成的集合,下面的定理说明“κκκ≥⊆∀)(,N X ”这个显然的必要条件也是充分的定理(1935):),(Y X -二部图中存在浸润X 的匹配⇔κκκ≥⊆∀)(,N X .证明:“⇐”由könig 定理,只需证明对每个顶点覆盖z ,有X z ≥. 令X z X s ⋂-=,则s 的点都不在X 中,因此)(s N 中的点都在z 中(由顶点覆盖定义),故X s X z s N X z z =+⋂≥+⋂≥)(,证毕.图的连通性因为连通与否与图是否含环无关,故本小节假定所有图都不含环,且1)(>G n .定义1:图G 的一个点割(vertex cut)是一个集合)(G V S ⊆,使得S G -的连通分量多于一个G 的连通度(connectivity),)(G κ是使得S G -不连通或只有一个顶点的顶点集合S 大小的最小值. 如果G 的连通度最少是κ,则称G 是κ-连通的(κ-connected).由定义,显然可知:①连通图都是1-连通的;②G 是不连通的⇔G 的连通度为0;③顶点数大于2的图的连通度为1⇔它是连通的且有一个割点.若图G 的连通度为κ,则κδ≥)(G ,故G 中至少有⎥⎥⎤⎢⎢⎡2n κ条边(见习题1). 我们关心是否可以给出n 个顶点的κ-连通图且有⎥⎥⎤⎢⎢⎡2n κ条边(即下界是否可以取到).习题1给出了肯定的回答.定义2:图G 中的边割(edge cut)是一顶点在S 中,一顶点在S G V -)(中的G 中所有边构成的集合,记为],[S S ()(G V S ⊆). 若使得],[S S G -不连通的],[S S 边数最小值为κ,则称G 是κ-边连通的,κ称为G 的边连通度,记为)('G κ.在下图G 中粗线标出的边割是G 的最小边割,因此2)('=G κ,G 是2-边连通的. 图G 中还标出了一个只含一个顶点的点割,故G 是1-连通的.定理3(Whitney 1932):设G 是简单图,则)()(')(G G G δκκ≤≤.证明:设)}(:)(min{)(G V x x d v d ∈=,即)()(G v d δ=,则与v 关联的所有边构成一个边割,故)()('G G δκ≤,下证)(')(G G κκ≤.显然1)()(-≤G n G κ,设],[S S 为G 的最小边割,若S 中的顶点与S 中的顶点都邻接,则)(1)(],[G G n S S S S κ≥-≥=,命题得证. 下设存在S y S x ∈∈,.则y x ,不相邻,构造集合T :T 包含S 中x 的相邻顶点;T 包含{x}-S 中的所有与S 中顶点有相邻顶点的顶点(或}{{)}(:{x S v E V xv S v T -∈⋃∈∈=:存在S u ∈使得)}(E vu ∀∈). 因为每条y x ,路径都通过T ,因此T 是一个点割,故)(G T κ≥. 在],[S S 中选T 条边:T v ∈∀,若S v ∈,则选边xv ;若}{x S v -∈,则任意选取一条边],[S S vu ∈,这样选取的T 条边都是不同的,因此[])(,)('G T S S G κκ≥≥=下面给出2-连通图的特征.定理4(Whitney 1932):图)3)((≥G n G 是2-连通的⇔)(,G V v u ∈∀,在G 中存在内部不相交的(internally-disjoint)v u ,-路径(即两条路径没有公共的内顶点).证明:“⇐”删除一个顶点不能使一对任意顶点不可达,故G 是2-连通的.“⇒”对),(v u d 用数学归纳法证明.1),(=v u d ,uv G -是连通的(因为2)()('=≥G G κκ).uv G -中的v u ,-路径与边uv 构成了内部不相交的两条v u ,-路径.假设-),(κ≤v u d .令w 是某条最短u ,-路径上的前一顶点,则1. 由归纳假设,G 有内部不相交w u ,路径Q P ,. 若)()(Q V P V v ⋃∈,则在圈Q P ⋃上可以找两条内部不相交路径. 若)()(Q V P V v ⋃∉,由于G 是2-连通的,故w G -连通,所以w G -中含有一条v u ,-路径R . 若R 不含P 或Q 的内部顶点,则完成了证明. 如若不然,不妨设R 与P 的内部顶点相交,设z 是这些交点中在P 上与v 最近的一个顶点,则P 上的z u ,-路径合并R 上的v z .-路径就得到一条与wv Q ⋃内部不相交路径练习中给出2-连通图的其它特征. 定理4可以推广到一般的κ-连通图.证明较繁,我们这里略去,有兴趣的读者可参见D.B. West,Introduction to Graph Theory,2nd 2001.或J.A. Bondy,U.S.R. Murty,Graph Theory with Applications,1976.习题.1.图G 的连通度为κ且n G =,则G 至少有⎥⎥⎤⎢⎢⎡2n κ条边. 2.证明下图中4)(=G κ,从而满足⎥⎥⎤⎢⎢⎡=2)(n G E κ3.设3)(≥G V ,则G 是2-连通的⇔G 是连通的且G 无割点 ⇔)(,G V y x ∈∀,存在经过y x ,的环 ⇔1)(>G δ且G 的每一对边均位于一个公共环上。
第二章 图的连通性在第一章中已经定义连通图是任二顶点间都有路相连的图。
对于连通图,其连通的程度也有高有低。
例如,下列三个图都是连通图。
对于图G 1,删除一条边或一个顶点便可使其变得不连通;而对于图G 2,至少需要删除两条边才能使其不连通,也可以删除一个顶点使其不连通;对于图G 3,要破坏其连通性,则至少需要删除三条边或三个顶点。
本章主要讨论如何通过图的顶点集、边集和不交的路集合的结构性质来获知图的连通性程度。
通过研究割边和割点来刻画1连通图的特性;定义连通度和边连通度来度量连通图连通程度的高低;通过不交路结构和元素的共圈性质来反映图的2连通和k 连通性。
§2.1 割点和割边定义2.1.1 设)(G V v ∈,如果)()(G w v G w >−,则称v 为G 的一个割点。
(注:该定义与某些著作中的定义有所不同,主要是在环边的顶点是否算作割点上有区别)。
例如,下图中u , v 两点是其割点。
定理2.1.1 如果点v 是简单图G 的一个割点,则边集E (G)可划分为两个非空子集1E 和2E ,使得][1E G 和][2E G 恰好有一个公共顶点v 。
证明留作习题。
推论2.1.1 对连通图G ,顶点v 是G 的割点当且仅当v G −不连通。
定理2.1.2 设v 是树T 的顶点,则v 是T 的割点当且仅当1)(>v d 。
证明:必要性:设v 是T 的割点,下面用反证法证明1)(>v d 。
若0)(=v d ,则1K T ≅,显然v 不是割点。
若1)(=v d ,则v T −是有1)(−−v T ν条边的无圈图,故是树。
从而)(1)(T w v T w ==−。
因此v 不是割点。
以上均与条件矛盾。
充分性:设1)(>v d ,则v 至少有两个邻点u ,w 。
路uvw 是T 中一条),(w u 路。
因T 是树,uvw 是T 中唯一的),(w u 路,从而)(1)(T w v T w =>−。
第二章 图的连通性在第一章中已经定义连通图是任二顶点间都有路相连的图。
对于连通图,其连通的程度也有高有低。
例如,下列三个图都是连通图。
对于图G 1,删除一条边或一个顶点便可使其变得不连通;而对于图G 2,至少需要删除两条边才能使其不连通,也可以删除一个顶点使其不连通;对于图G 3,要破坏其连通性,则至少需要删除三条边或三个顶点。
本章主要讨论如何通过图的顶点集、边集和不交的路集合的结构性质来获知图的连通性程度。
通过研究割边和割点来刻画1连通图的特性;定义连通度和边连通度来度量连通图连通程度的高低;通过不交路结构和元素的共圈性质来反映图的2连通和k 连通性。
§2.1 割点和割边定义2.1.1 设)(G V v ∈,如果)()(G w v G w >−,则称v 为G 的一个割点。
(注:该定义与某些著作中的定义有所不同,主要是在环边的顶点是否算作割点上有区别)。
例如,下图中u , v 两点是其割点。
定理2.1.1 如果点v 是简单图G 的一个割点,则边集E (G)可划分为两个非空子集1E 和2E ,使得][1E G 和][2E G 恰好有一个公共顶点v 。
证明留作习题。
推论2.1.1 对连通图G ,顶点v 是G 的割点当且仅当v G −不连通。
定理2.1.2 设v 是树T 的顶点,则v 是T 的割点当且仅当1)(>v d 。
证明:必要性:设v 是T 的割点,下面用反证法证明1)(>v d 。
若0)(=v d ,则1K T ≅,显然v 不是割点。
若1)(=v d ,则v T −是有1)(−−v T ν条边的无圈图,故是树。
从而)(1)(T w v T w ==−。
因此v 不是割点。
以上均与条件矛盾。
充分性:设1)(>v d ,则v 至少有两个邻点u ,w 。
路uvw 是T 中一条),(w u 路。
因T 是树,uvw 是T 中唯一的),(w u 路,从而)(1)(T w v T w =>−。
故v 是割点。
证毕。
推论2.1.2 每个非平凡无环连通图至少有两个顶点不是割点。
证明:设T 是G 的生成树,则T 至少有两个叶子u ,v ,由上一定理知,u ,v 都不是T 的割点,即1)()(==−T w u T w 。
由于u T −是图u G −的生成树,故)(1)()()(G w T w u T w u G w ===−=−,因此u 不是G 的割点。
同理v 也不是G 的割点。
证毕。
定理2.1.3 设v 是连通图G 的一个顶点,则下列命题等价: (1) v 是G 的割点;(2) 存在)(,G V w u ∈,使得v w u ≠,且v 在每条),(w u 路上;(3) 存在}{\)(v G V 的一个划分:}{\)(v G V W U ∪=,φ=W U ∩,使得对Uu ∈∀和W w ∈∀,v 在每条),(w u 路上。
证明:(1)⇒(3)因v 是割点,故v G −至少有两个连通分支1G 、2G 。
令)(1G V U =而}){)((\)(1v G V G V W ∪=,则对U u ∈∀和W w ∈∀,u 、w 分别属于v G −的不同的连通分支。
可见G 中所有的),(w u 路必经过v (否则v G −中仍有),(w u 路,这与u 、w 分别属于v G −的不同的连通分支矛盾)。
(3)⇒(2)显然。
(2)⇒(1)若v 在每条),(w u 路上,则v G −中不存在),(w u 路,即v G −不连通,故v 是G 的割点。
证毕。
定义2.1.2 设)(G E e ∈,如果)()(G w e G w >−,则称e 为G 的一条割边。
例如下图中,边uv ,边wu 都是其割边。
定理2.1.4 边e 是G 的割边当且仅当e 不在G 的任何圈中。
证明:证其逆否命题:e 不是割边当且仅当e 含在G 的某个圈中。
必要性:设e = xy 不是割边。
假定e 位于G 的某个连通分支1G 中,则e G −1仍连通。
故在e G −1中有),(y x 路P ,P + e 便构成1G 中一个含有e 的圈。
充分性:设e 含在G 的某个圈C 中,而C 含于某连通分支1G 中,则e G −1仍连通。
故)()(G w e G w =−,这说明e 不是割边。
证毕。
定理2.1.5 一个连通图是树当且仅当它的每条边都是割边。
证明:连通图G 是树⇔G 无圈⇔任何边e 不含在圈中⇔任何边e 是G 的割边。
证毕。
定理2.1.6 设e 是连通图G 的一条边,则下列命题等价: (1) e 是G 的割边; (2) e 不在G 的任何圈上;(3) 存在)(,G V v u ∈,使得e 在每条),(v u 路上;(4) 存在)(G V 的一个划分:)(G V W U ∪=,φ=W U ∩,使得对U u ∈∀和W w ∈∀,e 在每条),(w u 路上。
证明:(1)⇔(2)定理2.1.4已证。
(1)⇒(4)⇒(3)⇒(1)的证明与定理2.1.3的证明类似。
§2.2连通度和边连通度定义2.2.1 对图G ,若V(G)的子集V ′使得)()(G w V G w >′−,则称V ′为图G 的一个顶点割集。
含有k 个顶点的顶点割集称为k -顶点割集。
注:(1)割点是1-顶点割集。
(2)完全图没有顶点割集。
定义2.2.2图G 的连通度定义为()min{|||G V V κ′′=是连通图G 的顶点割集}。
特别地,完全图的连通度定义为1)(−=νκνK , 空图的连通度定义为0, 不连通图的连通度定义为0。
注:(1) 若G 是平凡图,则0)(=G κ。
(2) 使得)(||G V κ=′的顶点割集V ′称为G 的最小顶点割集。
(3) 若k G ≥)(κ,则称G 为k 连通的。
(4) 按上述定义,图G 是k 连通的,当且仅当G 的最小点割集至少含k 个顶点,当且仅当G 中没有k −1点割集,当且仅当从G 中任意去掉k −1个顶点后,所剩图仍连通。
(5) 按照k 连通的定义,若图G 是k 连通的,则它也是k −1连通、k −2连通、 (1)通的。
因此,所有非平凡连通图都是1连通的。
定义2.2.3对图G ,若E(G)的子集E ′使得)()(G w E G w >′−,则称E ′为图G 的一个边割集。
含有k 条边的边割集称为k -边割集。
注:(1) 对非平凡图G ,若E ′是一个边割集,则E G ′\不连通。
(2) 一条割边构成一个1-边割集。
(3) 设)(G V S ⊂,)(G V S ⊂′,φ≠′S S ,,记号],[S S ′表示一端在S 中另一端在S ′中的所有边的集合。
对图G 的每个边割集E ′,必存在非空的)(G V S ⊂,使得],[S S 是G 的一个边割集,其中S V S \=。
定义2.2.4图G 的边连通度定义为()min{|||G E E κ′′′=是连通图G 的边割集}。
完全图的边连通度定义为1)(−=′νκνK ,空图的边连通度定义为0,不连通图的边连通度定义为0。
注:(1) 对平凡图G ,0)(=′G κ。
(2) 是含有割边的连通图,则1)(=′G κ。
(3) 使得)(||G E κ′=′的边割集E ′称为G 的最小边割集。
(4) 若k G ≥′)(κ,则称G 为k 边连通的。
(5) 按上述定义,图G 是k 边连通的,当且仅当G 的最小边割集至少含k 条边,当且仅当G 中没有k −1边割集,当且仅当从G 中任意去掉k −1条边后,所剩图仍连通。
(6) 按照k 边连通的定义,若图G 是k 边连通的,则它也是k −1边连通、k −2边连通、…、1边连通的。
因此,所有非平凡连通图都是1边连通的。
例如,下列图中,G 1是连通的且有割点和割边,因此是1连通的和1边连通的;G 2的最小点割集含1个点,最小边割集含2条边,故它是1连通的和2边连通的;G 3的最小点割集和最小边割集分别含2个点和2条边,因此是2连通的和2边连通的;G 4的最小点割集和最小边割集分别含3个点和3条边,因此是3连通的和3边连通的。
定理2.2.1)()()(G G G δκκ≤′≤。
证明:先证)()(G G κκ′≤。
对图的边连通度()G κ′作数学归纳法。
对()G κ′=1的图G ,若2G K =,则显然()11G κυ′=−=;若2G K ≠,则G 至少含三个点。
设e = uv 是G 的一条割边,则u 或v 必是割点,故()G κ=1。
总之,此时()G κ=()G κ′=1。
假设对所有k κ′=的图,都有κκ′≤,则对()1G k κ′=+的图G ,设E 是它的一个1k +边割集。
任取边()e uv E G =∈,则E e −是G e −的最小边割集,故()G e k κ′−=。
由归纳假设,()()G e G e κκ′−≤−。
取G e −的最小点割集T ,则||()()T G e G e k κκ′=−≤−=,且{}T u ∪构成G 的最小点割集。
故()|{}|||11()G T u T k G κκ′=≤+≤+=∪。
归纳完成。
再证)()(G G δκ≤′。
设δ=)(v d 。
删去与v 关联的δ条边后,G 变成不连通图,故这δ条边构成G 的一个边割集。
因此)()(G G δκ≤′。
证毕。
下图G 1是一个2,3κκ′==和4δ=的图,G 2是一个1,2κκ′==和3δ=的图。
G 2G3G 1G 2定理2.2.2 对具有υ个顶点ε条边的连通图G ,有2()G εκν⎢⎥≤⎢⎥⎣⎦。
证明:因()2()v V G d v εδυ∈=≥∑,故2εδυ≤,由定理2.2.1,2εκδυ≤≤。
由于κ是整数,因此2εκν⎢⎥≤⎢⎥⎣⎦。
证毕。
定理2.2.3 设G 是一个简单图,k 是一个自然数,若2()2k G υδ+−≥,则G 是k 连通的。
证明:用反证法。
假如G 不是k 连通的,则G 的连通度k κ<,即存在G 的点割集S ,使得||S k <,且G −S 不连通。
因G −S 有|S |υ−个顶点,且至少有两个连通分支,故必有G −S 的某个连通分支G ′含有不超过|S |2υ−个顶点。
注意到G ′中任一个顶点只可能与G ′内的点及S 中的点相邻,因而其在G 中的顶点度|||S |21||22S S υυ−+−≤−+=。
结合||S k <,这意味着(G)δ≤||2222S k υυ+−+−<,与定理条件矛盾。
证毕。
推论2.2.1设G 是一个简单图,若1()2G υδ−≥,则G 是连通的。
定理2.2.4 设G 是一个直径为2的简单图,则(G)(G)κδ′=。
证明:设S 是G 的一个最小边割集,则G −S 有多于一个连通分支,取其中顶点数最少的一个记为G 1,G −S 的其余部分记为G 2。