相关笔记: 10.3 图的表示与同构 | 10.5 欧拉路径与哈密顿路径

概览

本节系统介绍了图中路径的分类、无向图和有向图的连通性概念,以及图的连通度度量。核心内容包括:路径的分类(通路/迹/路径/回路);无向图的连通连通分量;有向图的强连通弱连通割点(cut vertex)与割边/桥(bridge);顶点连通度 与边连通度 ;以及利用邻接矩阵的幂 计算长度为 的路径数。

  • 通路(walk):顶点和边的交替序列,允许重复顶点和边
  • 迹(trail):不重复边的通路
  • 路径(path):不重复边的通路(Rosen 定义)
  • 简单路径:不重复顶点(和边)的通路
  • 回路/圈(circuit/cycle):起点和终点相同的路径
  • 连通图:任意两个不同顶点之间都有路径
  • 强连通:有向图中任意两顶点之间都有双向路径
  • 割点/桥:删除后使连通分量增加的顶点/边
  • 元素 = 顶点 的长度为 的路径数

一、知识结构总览

graph TB
    A["10.4 连通性 Connectivity"] --> B["路径的分类"]
    A --> C["无向图连通性"]
    A --> D["有向图连通性"]
    A --> E["连通度的度量"]
    A --> F["路径计数"]

    B --> B1["通路 walk"]
    B --> B2["迹 trail"]
    B --> B3["路径 path"]
    B --> B4["回路 circuit"]
    B --> B5["圈 cycle"]

    C --> C1["连通 connected"]
    C --> C2["连通分量 connected component"]
    C --> C3["连通图中存在简单路径"]

    D --> D1["强连通 strongly connected"]
    D --> D2["弱连通 weakly connected"]
    D --> D3["强连通分量"]

    E --> E1["割点 cut vertex"]
    E --> E2["割边/桥 bridge"]
    E --> E3["顶点连通度 κ(G)"]
    E --> E4["边连通度 λ(G)"]
    E --> E5["不等式 κ ≤ λ ≤ min deg"]

    F --> F1["邻接矩阵 A"]
    F --> F2["A^k 的 (i,j) 元素"]
    F --> F3["路径计数定理"]

二、核心思想

核心思想

本节的核心思想是通过路径的概念来刻画图的"连通程度"。连通性是图论中最基本的全局性质之一,决定了信息、资源等能否在图中从一个顶点传递到另一个顶点。连通度的度量(割点、割边、顶点连通度、边连通度)进一步量化了图的”脆弱性”——需要移除多少元素才能使图断开。邻接矩阵的幂则提供了用代数方法计算路径数的强大工具,与矩阵运算传递闭包密切相关。

1. 路径的分类

路径(Path)与相关概念

是非负整数, 是无向图。从顶点 到顶点 的==长度为 的路径==是 条边的序列 ,使得存在顶点序列 (其中 ),使得对于 ,边 的端点为

是简单图时,路径可以用其顶点序列 唯一确定。

  • 回路(circuit):起点和终点相同的路径(),且长度大于 0
  • 简单(simple):路径或回路不包含同一条边超过一次

术语说明

不同教材对路径相关术语的定义可能不同。在 Rosen 的定义中:

  • “path” = 不重复边的通路(允许重复顶点,只要不重复边)
  • “simple path” = 不重复顶点的路径(在简单图中等价于不重复边)

在其他一些教材中:

  • “walk” = 通路(可重复顶点和边)
  • “trail” = 迹(不重复边)
  • “path” = 路径(不重复顶点)

阅读不同资料时请注意确认术语定义。

路径的判定

在图 中(顶点 ,边 ):

  • 简单路径,长度 4。所有相邻顶点对之间都有边,且不重复顶点
  • 回路,长度 4。起点和终点都是 ,且不重复边
  • 不是简单路径(因为边 出现了两次),长度 5

有向图中的路径

在有向图中,从 的长度为 的路径是 条有向边的序列 ,使得 指向 )。路径的方向必须沿着边的方向。

2. 无向图的连通性

连通图(Connected Graph)

无向图称为连通的,如果其任意两个不同的顶点之间都存在路径。不连通的无向图称为不连通的(disconnected)。

断开(disconnect)一个图是指移除顶点或边(或两者),使得产生的子图是不连通的。

连通图中存在简单路径(Theorem 1)

在连通无向图中,任意两个不同的顶点之间存在一条简单路径。

证明:设 是连通无向图 中两个不同的顶点。因为 连通, 之间至少存在一条路径。设 (其中 )是所有路径中长度最短的一条。

我们证明这条最短路径是简单的。假设不是,则存在 使得 。那么 是一条从 的更短路径(删除了 的部分),与”最短”矛盾。因此,最短路径一定是简单的。

连通分量(Connected Component)

连通分量 的一个连通子图,且不是 的任何其他连通子图的真子图(即极大连通子图)。

  • 不连通的图有两个或更多不相交的连通分量,它们的并集就是整个图
  • 连通图只有一个连通分量(即自身)

连通分量的应用

  • 电话呼叫图的连通分量:两个电话号码在同一个连通分量中,当且仅当存在一系列电话从一个号码开始到另一个号码结束。AT&T 研究的 20 天通话图有超过 5300 万个顶点、超过 1.7 亿条边和超过 370 万个连通分量。其中最大的连通分量有约 4500 万个顶点(超过 80%),且其中任意两个顶点可以通过不超过 20 次通话的链路相连
  • 相识图的连通分量:代表”社交圈”——在一个连通分量中的人可以通过熟人链相互认识

3. 有向图的连通性

强连通(Strongly Connected)

有向图称为强连通的,如果对于图中任意两个顶点 ,都存在从 的路径和从 的路径。

即:沿着边的方向,可以从任何顶点到达任何其他顶点。

弱连通(Weakly Connected)

有向图称为弱连通的,如果在其底图(underlying undirected graph,即忽略所有边的方向后得到的无向图)中,任意两个顶点之间都存在路径。

  • 任何强连通的有向图也是弱连通的
  • 但弱连通的有向图不一定是强连通的

强连通与弱连通的判定

  • (顶点 ,有向边 ):强连通(任意两顶点之间都有双向路径)
  • (顶点 ,有向边 ):不是强连通(没有从 的路径),但是弱连通(底图中任意两顶点之间有路径)

强连通分量(Strongly Connected Components)

有向图的强连通分量(或称强分量)是极大的强连通子图。

  • 两个顶点的强分量要么相同,要么不相交
  • 有向图是其所有强连通分量的并集

Web 图的强连通分量

Web 图的底图不是连通的,但有一个包含约 90% 顶点的巨大连通分量。该连通分量对应的有向子图有一个非常大的强连通分量(GSCC,包含超过 5300 万个顶点),以及三个各约 4400 万顶点的集合:

  • 可以从 GSCC 到达但不能返回的页面
  • 可以链接到 GSCC 但不能从 GSCC 到达的页面
  • 既不能到达 GSCC 也不能从 GSCC 到达的页面

4. 割点与割边

割点(Cut Vertex / Articulation Point)

的一个顶点 称为割点,如果删除 及其所有关联边后,产生的子图比原图有更多的连通分量。

直觉:割点是”关键的”顶点,它的移除会断开图。

割边/桥(Cut Edge / Bridge)

的一条边 称为割边(或),如果删除 后,产生的子图比原图有更多的连通分量。

割点与割边的判定

在图 中(顶点 ,边 ):

  • 割点。删除 后, 与其余顶点断开;删除 后, 被隔离;删除 后, 被隔离
  • 割边

割边端点的性质

割边的一个端点是割点当且仅当该端点不是悬挂点。悬挂点(度为 1 的顶点)是割边的端点,但不是割点(因为删除悬挂点后,与之关联的割边也被删除,剩余图仍然连通)。

5. 顶点连通度与边连通度

顶点连通度(Vertex Connectivity)

是非完全的连通图。顶点连通度 是小写希腊字母 kappa)是使 不连通的顶点子集 的最小大小。对于完全图 ,定义

  • 不连通或
  • 连通但有割点
  • (完全图)
  • 称为==-连通==的,如果

边连通度(Edge Connectivity)

边连通度 是小写希腊字母 lambda)是使 不连通的边子集 的最小大小。

  • 不连通或 是单顶点图
  • 有割边
  • (当 个顶点时)

连通度不等式

对于任何图 (有 个顶点),

直觉

  • :删除一个最小度顶点的所有关联边就足以断开该顶点
  • :断开图所需的顶点数不超过所需的边数(每条边最多”保护”一个顶点)

连通度的计算

(有割点和割边)112
(有割点,无割边)123
(无割点,有大小为 2 的顶点割)223
(无割点,有大小为 2 的顶点割)233
(最小顶点割大小为 3)334

6. 路径计数:邻接矩阵的幂

路径计数定理(Theorem 2)

是一个图(有向或无向,允许多重边和环),其邻接矩阵为 (顶点按 排序)。则从 的==长度为 的不同路径数==等于 的第 个元素。

证明:对 用数学归纳法。

基础步): 的第 个元素 等于从 的边数,即长度为 1 的路径数。✅

归纳假设:设 的第 个元素等于从 的长度为 的路径数。

归纳步 的第 个元素为:

其中 的第 个元素。由归纳假设, 是从 的长度为 的路径数。 是从 的边数。

一条从 的长度为 的路径由一条从 到某个中间顶点 的长度为 的路径,加上一条从 的边组成。由乘法规则,经过 的路径数为 。对所有可能的中间顶点 求和(加法规则),得到从 的所有长度为 的路径数。

邻接矩阵的幂与路径计数

设简单图 的顶点为 ,边为 。邻接矩阵为(按 排序):

计算

的第 个元素为 8,因此从 有 8 条长度为 4 的路径。通过枚举验证:

路径计数定理的应用

  • 判断连通性 连通当且仅当对于某个 的所有非对角线元素都为正
  • 最短路径长度 的第 个元素首次变为正数时的最小 就是从 的最短路径长度
  • 与传递闭包的关系(其中 为顶点数)的非零元素位置指示了传递闭包中的关系

三、补充理解与易混淆点

补充理解

补充1:连通性与实际网络

连通性在现实网络中有重要的实际意义:

  • 计算机网络:连通性决定了任意两台计算机之间是否可以通信。割点和割边代表关键路由器和关键链路——它们的故障会导致网络部分断开
  • 公路网络:顶点连通度表示需要关闭多少个路口才能使某些路口之间无法通行;边连通度表示需要关闭多少条道路
  • 社交网络:连通分量代表”社交圈”——在一个连通分量中的人可以通过熟人链相互认识。六度分隔理论指出,全球相识图的最大连通分量中,任意两个人之间大约相隔不超过 6 步 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 10.4. 来源:Bondy, J. A. & Murty, U. S. R. (2008). Graph Theory. Springer, Chapter 3.

补充2:路径术语对照表

Rosen 术语其他常见术语是否可重复边是否可重复顶点
pathwalk / 通路
(无对应)trail / 迹不可
simple pathpath / 路径不可不可
circuitclosed walk / 闭通路
simple circuitcycle / 圈不可不可(起终点除外)
来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 10.4.
来源:Diestel, R. (2017). Graph Theory (5th ed.). Springer, Chapter 1.

补充3:连通度与网络可靠性

连通度的三个层次提供了网络可靠性的量化度量:

  • :网络中需要同时故障多少个路由器才会导致部分断开
  • :网络中需要同时故障多少条通信链路才会导致部分断开
  • :网络中最少连接的路由器的连接数(连通度的上界)

不等式 表明:网络的最薄弱环节要么是某个路由器(顶点连通度),要么是某组链路(边连通度),且两者都不超过最小度。 来源:Menger, K. (1927). “Zur allgemeinen Kurventheorie.” Fundamenta Mathematicae, 10, 96–115. 来源:Bondy, J. A. & Murty, U. S. R. (2008). Graph Theory. Springer, Theorem 3.3 (Menger’s Theorem).

易混淆点

误区:连通 vs 弱连通 vs 强连通

  • ❌ 认为有向图只要”看起来连在一起”就是强连通
  • ✅ 强连通要求沿着边的方向可以从任何顶点到达任何其他顶点。弱连通只要求忽略方向后连通
  • ❌ 认为弱连通的有向图一定是强连通的
  • ✅ 强连通 弱连通,但弱连通 强连通

误区:割点与悬挂点

  • ❌ 认为割边的端点一定是割点
  • ✅ 割边的一个端点是割点当且仅当该端点不是悬挂点。悬挂点(度为 1)虽然是割边的端点,但删除悬挂点不会增加连通分量(因为与之关联的唯一边也被删除了)
  • 例如:在一条路径 中, 都是割边, 是割点,但 不是割点(它们是悬挂点)

误区:路径长度 vs 路径中的顶点数

  • ❌ 认为路径长度等于路径中的顶点数
  • ✅ 路径长度 = 路径中的边数 = 顶点数 - 1。例如,路径 的长度为 3(3 条边),而非 4

误区:邻接矩阵的幂与图的连通性

  • ❌ 认为 的所有元素都为正就说明图连通
  • ✅ 需要检查 为顶点数)的所有非对角线元素是否都为正。单独的 只计算长度恰好为 的路径

四、习题精选

习题概览

题号范围核心考点难度
1-2路径的判定(是否为路径/回路/简单)
3-6连通性判定与连通分量⭐⭐
7-10连通分量的实际含义⭐⭐
11-12强连通与弱连通的判定⭐⭐
13-15强连通分量的求解⭐⭐⭐
19-24利用路径判断同构⭐⭐⭐
26-27路径计数(邻接矩阵的幂)⭐⭐⭐
31-34割点与割边的求解⭐⭐
35-38割点与割边的性质证明⭐⭐⭐⭐
50-55连通度 的计算与性质⭐⭐⭐⭐

题1:路径的判定

题目

在图 中(顶点 ,边 ),判断以下顶点序列是否构成路径,是否是简单路径,是否是回路,以及路径长度:

a) b)

题2:连通分量

题目

求以下图的连通分量:

顶点: 边:

题3:强连通分量的求解

题目

求以下有向图的强连通分量:

顶点: 有向边:

题4:路径计数

题目

求完全图 中任意两个不同顶点之间的长度为 2 的路径数和长度为 3 的路径数。

题5:割点与割边的判定

题目

求以下图的割点和割边:

顶点: 边:

解题思路提示

  1. 路径判定:逐一检查相邻顶点对之间是否有边;检查是否有重复边(判断是否简单);检查起终点是否相同(判断是否为回路)
  2. 连通分量:从任意顶点出发,通过 BFS/DFS 找到所有可达顶点,构成一个连通分量;对剩余顶点重复此过程
  3. 强连通分量:在有向图中,找到可以通过双向路径相互到达的最大顶点集
  4. 割点判定:尝试删除每个顶点,检查连通分量数是否增加。更高效的算法有 Tarjan 算法
  5. 割边判定:尝试删除每条边,检查连通分量数是否增加。割边等价于”不属于任何简单回路的边”
  6. 路径计数:计算邻接矩阵的幂 ,第 个元素即为路径数

五、视频学习指南

视频资源

资源链接对应内容备注
Rosen 8e Section 10.4教材原文完整定义、定理与例题英文教材
MIT 6.042J Lecture 5链接连通性与路径英文,MIT开放课程
TrevTutor - Connectivity链接连通性、割点与割边英文,适合入门

六、教材原文

教材原文

“A path of length from to in is a sequence of edges of such that there exists a sequence of vertices with and , and for , has endpoints and .”

“An undirected graph is called connected if there is a path between every pair of distinct vertices of the graph.”

“A directed graph is strongly connected if there is a path from to and from to whenever and are vertices in the graph.”

“Let be a graph with adjacency matrix with respect to the ordering . The number of different paths of length from to equals the th entry of .”


参见 Wiki

  • 矩阵 — 邻接矩阵的定义与运算(路径计数的基础)
  • 传递闭包 — 传递闭包与路径计数的关系(第9章)
  • 有向图 — 有向图的强连通与弱连通

图论