图论导引 - 第三章 第一节:连通性 - 11/09

章节概述

第三章(Paths and cycles)主要讲述了路径和循环相关的图论知识,包括四个部分:连通性、欧拉图、哈密顿图、一些相关算法应用。

连通性 Connectivity

通道 walk

给定一个图 G G G , G G G中的一条通道 (或称为**"链")是形如 v 0 v 1 、 v 1 v 2 、 ⋅ ⋅ ⋅ 、 v m − 1 v m v_{0}v_{1}、v_{1}v_{2}、··· 、v_{m - 1}v_{m} v0v1、v1v2、⋅⋅⋅、vm−1vm 的 有限边序列**,也可记为 v 0 → v 1 → v 2 → ⋯ → v m v_{0} \to v_{1} \to v_{2} \to \cdots \to v_{m} v0→v1→v2→⋯→vm,其中任意两条连续的边是相邻的或相同的

  • 一条通道确定了一个顶点序列 v 0 , v 1 , ⋅ ⋅ ⋅ , v m v_{0},v_{1},···,v_{m} v0,v1,⋅⋅⋅,vm。
  • 我们称 v 0 v_{0} v0 为通道的起始顶点(initial vertex), v m v_{m} vm 为通道的终止顶点(final vertex),并说这是一条从 v 0 v_{0} v0到 v m v_{m} vm 的通道。
  • 通道中的边数称为其长度(length)。

迹 trail 和 路径 path

  • 所有边都互不相同 的通道是一条迹(trail)。

  • 此外,如果所有顶点 v 0 , v 1 , ⋯   , v m v_{0}, v_{1}, \cdots, v_{m} v0,v1,⋯,vm 都互不相同 (除了 v 0 = v m v_{0}=v_{m} v0=vm​),那么这条迹就是一条路径(path)。

    • 如果 v 0 = v m v_{0}=v_{m} v0=vm,则路径或迹是封闭的(closed) ,并且包含至少一条边的封闭路径是一个圈(cycle)
    • 注意,任何环(loop)或一对多重边都是一个圈。

连通图

当且仅当每对顶点之间都存在一条路径 时,图是连通的。

二部图 Bipartite Graph

当且仅当 G G G 的每个圈(cycle)都具有偶数长度 时, G G G 是二分图。

定理5.1:如果 G G G 是一个二分图,那么 G G G 的每个圈都具有偶数长度。

证明:

  • 因为 G G G 是二分图,所以我们可以将其顶点集划分为两个不相交的集合 A A A 和 B B B,使得 G G G 的每条边都连接 A A A 中的一个顶点和 B B B 中的一个顶点。
  • 设 v 0 → v 1 → ⋯ → v m → v 0 v_{0} \to v_{1} \to \cdots \to v_{m} \to v_{0} v0→v1→⋯→vm→v0 是 G G G 中的一个环,并且假设 v 0 v_{0} v0 在 A A A 中。那么 v 1 v_{1} v1 在 B B B 中, v 2 v_{2} v2 在 A A A 中,依此类推。由于 v m v_{m} vm 必定在 B B B 中,所以这个回路的长度肯定是偶数。

简单连通图的边数限制

一个具有 n n n 个顶点的简单连通图,当没有回路时边数最少,为 n − 1 n-1 n−1 条边;当该图是完全图时边数最多,为 n ( n − 1 ) / 2 n(n-1)/2 n(n−1)/2 条边。

定理5.2:设 G G G 是一个具有 n n n 个顶点的简单图。如果 G G G 有 k k k 个连通分量,那么 G G G 的边数 m m m 满足 n − k ≤ m ≤ ( n − k ) ( n − k + 1 ) / 2 n - k \leq m \leq (n - k)(n - k + 1)/2 n−k≤m≤(n−k)(n−k+1)/2。

证明:

  • 证下界:

    • 假设每个连通分量 C i C_i Ci 中有 n i n_i ni 个顶点,图 G G G 的总顶点数为 n = ∑ i = 1 k n i n=\sum_{i=1}^{k} n_{i} n=∑i=1kni
    • 一个连通分量中, n i n_i ni 个顶点至少有 n i − 1 n_i-1 ni−1 条边连接
    • k k k 个连通分量,至少有 ∑ i = 1 k ( n i − 1 ) \sum_{i=1}^{k} (n_{i}-1) ∑i=1k(ni−1) 条边,计算 ∑ i = 1 k ( n i − 1 ) = ∑ i = 1 k n i − k = n − k \sum_{i=1}^{k} (n_{i}-1)=\sum_{i=1}^{k} n_{i}-k=n-k ∑i=1k(ni−1)=∑i=1kni−k=n−k
    • 对于 k k k 个连通分量,至少有 n − k n-k n−k 条边,得证。
  • 证上界:

    • 为了证明上限,假设 G G G 的每个连通分量都是完全图,这样才有可能达到最多的边数。

    • 假设有两个连通分量 C i C_{i} Ci 和 C j C_{j} Cj,分别有 n i n_{i} ni 个和 n j n_{j} nj 个顶点,其中 n i ≥ n j > 1 n_{i}\geq n_{j}>1 ni≥nj>1。如果我们用具有 n i + 1 n_{i}+1 ni+1 个顶点和 n j − 1 n_{j}-1 nj−1 个顶点的完全图分别替换 C i C_{i} Ci 和 C j C_{j} Cj,那么顶点总数保持不变,而边的数量变化为
      { ( n i + 1 ) n i − n i ( n i − 1 ) 2 } − { n j ( n j − 1 ) − ( n j − 1 ) ( n j − 2 ) 2 } = n i − n j + 1 \{\frac{(n_{i}+1)n_{i}-n_{i}(n_{i}-1)}{2}\}-\{\frac{n_{j}(n_{j}-1)-(n_{j}-1)(n_{j}-2)}{2}\}=n_{i}-n_{j}+1 {2(ni+1)ni−ni(ni−1)}−{2nj(nj−1)−(nj−1)(nj−2)}=ni−nj+1

    • 由于 n i − n j + 1 n_i-n_j+1 ni−nj+1 肯定是一个正数,因此边数在增多。为了让边的数量最大,需要不断增加一个连通分量的顶点,减少另外连通分量的顶点。

    • 由此可知,G G G 必须由一个具有 n − k + 1 n - k + 1 n−k+1 个顶点的完全图和 k − 1 k - 1 k−1​​ 个孤立顶点组成

    • 具有 n − k + 1 n - k + 1 n−k+1 个顶点的完全图的边数为 ( n − k ) ( n − k + 1 ) / 2 (n - k)(n - k + 1)/2 (n−k)(n−k+1)/2,得证。

推论5.3:任何具有 n n n 个顶点且边数多于 ( n − 1 ) ( n − 2 ) / 2 (n - 1)(n - 2)/2 (n−1)(n−2)/2​ 的简单图都是连通的。

证明:

  • 把任意一个图 G G G 分成包含 n − 1 n-1 n−1 个顶点的子图和一个顶点 n 0 n_0 n0

  • 只需要保证包含 n − 1 n-1 n−1 个顶点的子图是完全图,再用其余的边连接最后一个顶点 n 0 n_0 n0。

  • 顶点个数为 n − 1 n-1 n−1 的完全图的边数为 ( n − 1 ) ( n − 2 ) / 2 (n-1)(n-2)/2 (n−1)(n−2)/2,那么只要边数多余 ( n − 1 ) ( n − 2 ) / 2 (n-1)(n-2)/2 (n−1)(n−2)/2 则整个图 G G G 必定是完全图。

断集、割集和桥

  • 如何衡量一个连通图的连通性有多强?

    • 看看移除多少条边或顶点才能使连通图不连通
    • 点连通度、边连通度
  • 断集 disconnecting set

    • 在连通图 G G G 中,一个断集是一组边的集合,移除集合中的这些边会使 G G G 不连通。断集是使得图失去连通性的边集。

  • 割集 cutset

    • 一个断集的任何真子集都不是断集 ,则称该断集为割集
    • 移除割集中的边总是会留下一个恰好有两个连通分量的图
    • 在上图 5.3 中, { e 3 , e 6 , e 7 , e 8 } \{e_3,e_6,e_7,e_8\} {e3,e6,e7,e8} 是割集。
  • 桥 bridge

    • 如果一个割集只有一条边 e e e,我们称 e e e​ 为

  • 边连通度 λ ( G ) \lambda(G) λ(G)

    • 如果 G G G 是连通的,它的边连通度 λ ( G ) \lambda(G) λ(G) 是 G G G 中最小割集的大小 。因此, λ ( G ) \lambda(G) λ(G) 是为使 G G G 不连通而需要删除的最少边数
    • 如果 λ ( G ) ≥ k \lambda(G)\geq k λ(G)≥k,那么 G G G 是 k k k​ 边连通的。

分离集和割点

  • 分离集 separating set

    • 在连通图 G G G 中,一个分离集是一组顶点,删除这些顶点会使 G G G 不连通;当删除一个顶点时,也会移除与顶点关联的边。

  • 割点 cut-vertex

    • 如果一个分离集只包含一个顶点 v v v,我们称 v v v 为割点

  • 点连通度 κ ( G ) \kappa(G) κ(G)

    • 如果 G G G 是连通的且不是完全图,它的顶点连通度 κ ( G ) \kappa(G) κ(G) 是 G G G 中最小分离集的大小 。 κ ( G ) \kappa(G) κ(G) 是为使 G G G 不连通而需要删除的最少顶点数
    • 如果 κ ( G ) ≥ k \kappa(G)\geq k κ(G)≥k,那么 G G G 是 k k k 连通的。
    • 可以证明,如果 G G G 是任何连通图,那么 κ ( G ) ≤ λ ( G ) \kappa(G)\leq\lambda(G) κ(G)≤λ(G)​。
      • 直观理解,一个顶点可能与多条边相关联,删除一个顶点可能会导致与该顶点相连的所有边都失去作用,从而更容易使图变得不连通;而删除一条边只会影响与该边直接相关的两个顶点之间的连接。
      • 所以,为了使图不连通,需要删除的顶点数量通常不会超过需要删除的边的数量,即点连通度一般小于等于边连通度
相关推荐
是糖不是唐21 小时前
代码随想录算法训练营第五十三天|Day53 图论
c语言·数据结构·算法·图论
vir022 天前
好奇怪的游戏(BFS)
数据结构·c++·算法·游戏·深度优先·图论·宽度优先
一个不喜欢and不会代码的码农2 天前
李春葆《数据结构》——图相关代码
数据结构·算法·图论
是糖不是唐2 天前
代码随想录算法训练营第五十二天|Day52 图论
c语言·算法·深度优先·动态规划·图论
南宫生2 天前
力扣-Hot100-图论【算法学习day.38】
java·学习·算法·leetcode·链表·图论
张焚雪2 天前
关于图论建模的一份介绍
python·数学建模·图论
是糖不是唐3 天前
代码随想录算法训练营第五十一天|Day51 图论
c语言·数据结构·算法·深度优先·图论
汉克老师4 天前
GESP4级考试语法知识(贪心算法(六))
开发语言·数据结构·c++·算法·贪心算法·图论
是糖不是唐4 天前
代码随想录算法训练营第五十天|Day50 图论
c语言·数据结构·算法·图论
Romanticroom4 天前
图论之最小生成树计数(最小生成树的应用)
算法·图论