离散数学 · 图、路径与圈 学习笔记
离散数学 · 图、路径与圈 学习笔记
目录
| 章节 | 标题 | 内容概要 |
|---|---|---|
| 1 | 图的基本概念 | 图的定义与术语、度与握手定理、度数列与 Havel-Hakimi 定理、特殊图类、同构、运算、子图与补图 |
| 2 | 图的矩阵表示 | 邻接矩阵、关联矩阵、邻接矩阵的幂与路径计数、可达矩阵 |
| 3 | 连通性 | 无向/有向连通性、距离与短程线、极大路径法、点/边连通度、Whitney 定理 |
| 4 | 路径与圈的基本概念 | Walk / Trail / Path / Cycle 的严格定义与层级关系;简单回路与圈的辨析;通路长度定理;δ≥2\delta \geq 2δ≥2 则含圈 |
| 5 | Euler 路径与 Euler 回路 | Euler 定理(必要性、充分性)、Hierholzer 算法与 Fleury 算法、Euler 图的圈分解定理 |
| 6 | Hamilton 路径与 Hamilton 圈 | Hamilton 路径/圈/图/半 Hamilton 图的定义;NP-完全性说明;典型正负例 |
| 7 | Hamilton 图的充分条件 | Ore 定理(1960)、Dirac 定理(1952)及其证明思路;闭包与 Bondy-Chvátal 定理简介 |
| 8 | Hamilton 图的必要条件 | 连通度条件;Whitney 定理;度为 2 的顶点约束;二部图必要条件;Petersen 图非 Hamilton 证明 |
| 9 | 应用与拓展 | 马踏棋盘(Knight’s Tour)问题、TSP、中国邮路问题、邻接矩阵幂与路径计数 |
| 10 | 总结 | 核心概念层级图,Walk / Trail / Path / Cycle 的关系梳理,Euler 与 Hamilton 问题对比,注意事项 |
前言:
本章作为图论的第一章,将系统建立图的基本概念体系,并深入探讨图论中最经典的主题——路径与圈。具体安排如下:
- 图的基础概念:从图的定义出发,讨论度、握手定理、度数列与可图化(Havel-Hakimi 定理)、特殊图类(完全图、圈图、二部图等)、图的同构与运算、子图与补图。
- 图的矩阵表示:邻接矩阵、关联矩阵,以及邻接矩阵的幂与路径计数——将图的结构代数化。
- 连通性:无向图与有向图的连通性、距离与短程线、极大路径法、点/边连通度与 Whitney 定理。
- 路径与圈的层级体系:从 walk 到 trail 到 path 到 cycle,逐层施加约束,严格辨析简单回路与圈的区别,建立通路长度定理。
- Euler 问题与 Hamilton 问题:前者遍历每条边恰好一次,有完美的充要判定(TONCAS);后者遍历每个顶点恰好一次,是 NP-完全问题
- 从理论到应用:旅行商问题(TSP)、中国邮路问题、马踏棋盘等经典场景。
1. 图的基本概念
1.1 图的定义
定义(图 / Graph):
一个图是一个二元组 G=⟨V,E⟩G = \langle V, E \rangleG=⟨V,E⟩(或记作 G=(V,E)G = (V, E)G=(V,E)),其中:
- VVV 是顶点集,其元素称为顶点;
- EEE 是边集,其元素称为边。
- ∣V∣=n|V| = n∣V∣=n 称为图的阶,∣E∣=m|E| = m∣E∣=m 称为图的大小。
边的形式取决于图是有向还是无向:
- 无向图:边是无序对,记作 (u,v)(u, v)(u,v) 或 {u,v}\{u, v\}{u,v},表示 uuu 与 vvv 之间有一条无方向的连接;
- 有向图:边是有序对,称为弧,记作 ⟨u,v⟩\langle u, v \rangle⟨u,v⟩,表示从 uuu 指向 vvv 的有方向连接。
定义(基图):
忽略有向图 DDD 中所有边的方向,得到的无向图称为 DDD 的基图。
解读:
- 图论研究的核心不是顶点和边本身,而是它们之间的连接结构;
- 同样的顶点集,不同的边集,可以形成完全不同的图;
- 基图的概念让我们可以把有向问题转化为无向问题来分析。
1.2 关联、环与孤立点
定义(关联):
若边 e=(u,v)e = (u, v)e=(u,v)(或 e=⟨u,v⟩e = \langle u, v \ranglee=⟨u,v⟩),则称 u,vu, vu,v 为 eee 的端点,eee 与 u,vu, vu,v 关联。
定义(环 / Loop):
两端点重合的边称为环,即形如 (v,v)(v, v)(v,v) 的边。
定义(孤立点):
不与任何边关联的顶点称为孤立点,其度数为 0。
定义(相邻):
- 顶点相邻:若两个顶点是同一条边的端点,则称这两个顶点相邻;
- 边相邻:若两条边有公共的顶点,则称这两条边相邻。
关联次数的说明:
- 若 eee 不是环,顶点 vvv 与边 eee 的关联次数为 1(vvv 是 eee 的一个端点);
- 若 eee 是环(e=(v,v)e = (v, v)e=(v,v)),则顶点 vvv 与边 eee 的关联次数为 2。
1.3 邻域与关联集
定义(邻域):
在无向图中,顶点 vvv 的邻域定义为
N(v)={u∈V∣(u,v)∈E}N(v) = \{u \in V \mid (u, v) \in E\}N(v)={u∈V∣(u,v)∈E}
即与 vvv 相邻的所有顶点构成的集合。
定义(闭邻域):
N[v]=N(v)∪{v}N[v] = N(v) \cup \{v\}N[v]=N(v)∪{v}
定义(关联集):
I(v)={e∈E∣e 与 v 关联}I(v) = \{e \in E \mid e \text{ 与 } v \text{ 关联}\}I(v)={e∈E∣e 与 v 关联}
有向图中的特殊概念:
- 后继集:N+(v)={u∈V∣⟨v,u⟩∈E}N^+(v) = \{u \in V \mid \langle v, u \rangle \in E\}N+(v)={u∈V∣⟨v,u⟩∈E},即从 vvv 出发的弧所到达的顶点集;
- 前驱集:N−(v)={u∈V∣⟨u,v⟩∈E}N^-(v) = \{u \in V \mid \langle u, v \rangle \in E\}N−(v)={u∈V∣⟨u,v⟩∈E},即到达 vvv 的弧所来自的顶点集。
1.4 简单图与多重图
定义(平行边):
连接同一对顶点的多于一条边称为平行边。
定义(简单图):
既没有环也没有平行边的图称为简单图。
定义(多重图 ):
含有平行边的图称为多重图。
1.5 顶点的度数
定义(度数):
- 无向图:顶点 vvv 的度数(degree)记为 d(v)d(v)d(v),是与 vvv 关联的边数(环计算两次)。
- 有向图:
- 入度:d−(v)d^-(v)d−(v),以 vvv 为终点的边数;
- 出度:d+(v)d^+(v)d+(v),以 vvv 为起点的边数;
- 度数:d(v)=d−(v)+d+(v)d(v) = d^-(v) + d^+(v)d(v)=d−(v)+d+(v)。
定义(度数为 0 或 1 的顶点):
- 孤立点:度数为 0 的顶点;
- 叶点(leaf):度数为 1 的顶点。
定义(最小度与最大度):
- 最小度:δ(G)=min{d(v)∣v∈V(G)}\delta(G) = \min\{d(v) \mid v \in V(G)\}δ(G)=min{d(v)∣v∈V(G)};
- 最大度:Δ(G)=max{d(v)∣v∈V(G)}\Delta(G) = \max\{d(v) \mid v \in V(G)\}Δ(G)=max{d(v)∣v∈V(G)}。
- 对于有向图,可以定义最小入度,最小出度,这里不详细写出来了
1.6 握手定理(Handshaking Lemma)
定理(握手定理):
- 无向图:所有顶点的度数之和等于边数的两倍,即
∑v∈Vd(v)=2∣E∣\sum_{v \in V} d(v) = 2|E|v∈V∑d(v)=2∣E∣ - 有向图:所有顶点的入度之和等于出度之和,且都等于边数,即
∑v∈Vd−(v)=∑v∈Vd+(v)=∣E∣\sum_{v \in V} d^-(v) = \sum_{v \in V} d^+(v) = |E|v∈V∑d−(v)=v∈V∑d+(v)=∣E∣
证明:每条边有两个端点(无向图)或一个起点一个终点(有向图),对度数总和的贡献恰好是 2(无向图)或分别计入入度和出度(有向图)。对所有边求和即得。
推论:
任何图中,度数为奇数的顶点个数必为偶数。
证明:设 VoddV_{odd}Vodd 为奇度顶点集,VevenV_{even}Veven 为偶度顶点集。由握手定理,∑v∈Voddd(v)+∑v∈Vevend(v)=2∣E∣\sum_{v \in V_{odd}} d(v) + \sum_{v \in V_{even}} d(v) = 2|E|∑v∈Voddd(v)+∑v∈Vevend(v)=2∣E∣。右边为偶数,第二项也为偶数,故第一项必为偶数。而奇数个奇数之和为奇数,所以 ∣Vodd∣|V_{odd}|∣Vodd∣ 必为偶数。
意义:握手定理是图论中最基础、最常用的定理之一。它是 Euler 定理必要性证明的核心依据——奇度顶点的个数只能是 0、2、4、6、…,从而为"0 或 2"的结论埋下伏笔。
例子:设图 GGG 有 10 条边,4 个 3 度顶点,其余顶点的度数均为 2,求 GGG 的顶点数。
解:设顶点数为 nnn。由握手定理:4×3+(n−4)×2=2×104 \times 3 + (n - 4) \times 2 = 2 \times 104×3+(n−4)×2=2×10,即 12+2n−8=2012 + 2n - 8 = 2012+2n−8=20,解得 2n=162n = 162n=16,n=8n = 8n=8。故顶点数为 8。
1.7 度数列与可图化
定义(度数列):
设 G=(V,E)G = (V, E)G=(V,E) 为一个 nnn 阶图,称 d(v1),d(v2),…,d(vn)d(v_1), d(v_2), \ldots, d(v_n)d(v1),d(v2),…,d(vn) 为 GGG 的度数列。
定义(可图化):
给定一个非负整数列 d=(d1,d2,…,dn)d = (d_1, d_2, \ldots, d_n)d=(d1,d2,…,dn),若存在一个图 GGG,使得 GGG 的度数列恰好是 ddd,则称 ddd 是可图化的。
定义(可简单图化):
若存在一个简单图 GGG,使得 GGG 的度数列恰好是 ddd,则称 ddd 是可简单图化的。
可图化的必要条件:
由握手定理,∑i=1ndi\sum_{i=1}^n d_i∑i=1ndi 必须是偶数。这是可图化的必要但非充分条件。
1.8 Havel-Hakimi 定理(度序列可图性判断)
定理(哈维尔-哈基米):
设 d=(d1,d2,…,dn)d = (d_1, d_2, \ldots, d_n)d=(d1,d2,…,dn) 是一个非负整数序列(d1≥d2≥⋯≥dnd_1 \geq d_2 \geq \cdots \geq d_nd1≥d2≥⋯≥dn),ddd 是可简单图化的当且仅当序列
d′=(d2−1,d3−1,…,dd1+1−1,dd1+2,…,dn)d' = (d_2 - 1, d_3 - 1, \ldots, d_{d_1+1} - 1, d_{d_1+2}, \ldots, d_n)d′=(d2−1,d3−1,…,dd1+1−1,dd1+2,…,dn)
(将其后 d1d_1d1 个元素各减 1,再排序为非增序列后)也是可简单图化的。
- 证明略
算法步骤:
- 将序列按降序排列;
- 移除最大元素 d1d_1d1;
- 将其后的 d1d_1d1 个元素各减 1;
- 若出现负数,则不可简单图化;若全为 0,则可简单图化;否则返回步骤 1。
例子:下列度数列中可简单图化的是哪一个?
- A. (4,4,4,4,2)(4, 4, 4, 4, 2)(4,4,4,4,2):移出 4,后 4 个减 1 得 (3,3,3,1)(3, 3, 3, 1)(3,3,3,1),再移出 3 后 3 个减 1 得 (2,2,0)(2, 2, 0)(2,2,0),再移出 2 后 2 个减 1 得 (1,−1)(1, -1)(1,−1),出现负数,不可简单图化。
- B. (4,4,3,3,1)(4, 4, 3, 3, 1)(4,4,3,3,1):度数之和为 15(奇数),由握手定理可知不可图化。
- C. (4,4,3,3,2,1)(4, 4, 3, 3, 2, 1)(4,4,3,3,2,1):度数之和为 17(奇数),不可图化。
- D. (4,4,3,3,2,2)(4, 4, 3, 3, 2, 2)(4,4,3,3,2,2):移出 4,后 4 个减 1 得 (3,2,2,1,2)(3, 2, 2, 1, 2)(3,2,2,1,2),排序为 (3,2,2,2,1)(3, 2, 2, 2, 1)(3,2,2,2,1);移出 3,后 3 个减 1 得 (1,1,1,1)(1, 1, 1, 1)(1,1,1,1);移出 1,后 1 个减 1 得 (0,1,1)(0, 1, 1)(0,1,1),排序为 (1,1,0)(1, 1, 0)(1,1,0);移出 1,后 1 个减 1 得 (0,0)(0, 0)(0,0),全为 0,可简单图化。
解读:Havel-Hakimi 定理提供了一个可操作的判定算法,将"是否存在这样的简单图"这一存在性问题转化为反复进行的代数操作。
1.9 特殊图类
以下介绍图论中几种最常见、最重要的特殊图类。
1.9.1 完全图
定义(完全图):
每对顶点间都有一条边的简单图称为完全图,记为 KnK_nKn(nnn 为顶点数)。
性质:
- KnK_nKn 的边数为 n(n−1)2\frac{n(n-1)}{2}2n(n−1);
- KnK_nKn 中每个顶点的度均为 n−1n - 1n−1。
- KnK_nKn是 (n−1)(n-1)(n−1)-正则图。
1.9.2 圈图
定义(圈图):
由一个圈围成的图称为圈图(或回路图),记为 CnC_nCn(n≥3n \geq 3n≥3)。
性质:
- CnC_nCn 有 nnn 个顶点和 nnn 条边;
- CnC_nCn 中每个顶点的度均为 2,即 CnC_nCn 是 2-正则图。
1.9.3 轮图
定义(轮图):
在 CnC_nCn 的基础上增加一个中心点,并将该中心点与 CnC_nCn 的所有顶点相连,得到的图称为轮图,记为 WnW_nWn。
性质:
- WnW_nWn 有 n+1n + 1n+1 个顶点和 2n2n2n 条边;
- 中心点度为 nnn,外围点度为 3。
1.9.4 正则图
定义(正则图):
每个顶点的度数都相等的图称为正则图。若度数均为 kkk,则称为 kkk-正则图。
- KnK_nKn 是 (n−1)(n-1)(n−1)-正则图;
- CnC_nCn 是 2-正则图;
1.9.5 竞赛图
定义(竞赛图):
基图为完全图 KnK_nKn 的有向图称为竞赛图。
性质:
- 竞赛图中任意两个顶点 u,vu, vu,v 之间恰有一条有向边(⟨u,v⟩\langle u, v \rangle⟨u,v⟩ 或 ⟨v,u⟩\langle v, u \rangle⟨v,u⟩)(竞赛图由完全图得来);
- nnn 阶竞赛图的边数为 n(n−1)2\frac{n(n-1)}{2}2n(n−1);
- 所有顶点的出度之和等于 n(n−1)2\frac{n(n-1)}{2}2n(n−1)。(对于有向图而言,出度之和 = 总边数)
1.9.6 二部图
定义(二部图):
设 G=(V,E)G = (V, E)G=(V,E) 为一个无向图,如果可以将 VVV 划分为两个不相交的子集 V1V_1V1 和 V2V_2V2(V=V1∪V2V = V_1 \cup V_2V=V1∪V2,V1∩V2=∅V_1 \cap V_2 = \varnothingV1∩V2=∅),使得每条边都连接 V1V_1V1 中的一个顶点与 V2V_2V2 中的一个顶点(即 V1V_1V1 内部和 V2V_2V2 内部都没有边),则称 GGG 为二部图(或二分图、偶图)。
定义(完全二部图):
若二部图 GGG 中 V1V_1V1 的每个顶点都与 V2V_2V2 的每个顶点相邻,则称 GGG 为完全二部图,记为 Km,nK_{m,n}Km,n,其中 m=∣V1∣m = |V_1|m=∣V1∣,n=∣V2∣n = |V_2|n=∣V2∣。
性质:
- Km,nK_{m,n}Km,n 的边数为 m⋅nm \cdot nm⋅n;
- Km,nK_{m,n}Km,n 中 V1V_1V1 中每个顶点度为 nnn,V2V_2V2 中每个顶点度为 mmm。
定理(二部图的判定):
一个图是二部图当且仅当它不含奇数长度的圈(即不含奇圈)。
1.10 图的同构
定义(同构):
设 G1=(V1,E1)G_1 = (V_1, E_1)G1=(V1,E1) 和 G2=(V2,E2)G_2 = (V_2, E_2)G2=(V2,E2) 是两个图。若存在双射 f:V1→V2f: V_1 \to V_2f:V1→V2,使得 (u,v)∈E1(u, v) \in E_1(u,v)∈E1 当且仅当 (f(u),f(v))∈E2(f(u), f(v)) \in E_2(f(u),f(v))∈E2,则称 G1G_1G1 与 G2G_2G2 同构,记为 G1≅G2G_1 \cong G_2G1≅G2。
直观理解:
两个图同构,意味着它们"结构相同",只是顶点的标签不同。如果把一个图的顶点重新命名,就可以得到另一个图。
同构的必要条件(用于排除非同构):
- 顶点数相同;
- 边数相同;
- 度数列相同。
注意:以上条件都是必要但不充分的。存在顶点数、边数、度数列都相同但仍不同构的图。(例如K3,3K_{3,3}K3,3)和三角柱图并不同构)
定义(自补图):
若图 GGG 与其补图 G‾\overline{G}G 同构,则称 GGG 为自补图。
性质:nnn 阶自补图的边数为 m=n(n−1)4m = \frac{n(n-1)}{4}m=4n(n−1),故 nnn 必须满足 n≡0n \equiv 0n≡0 或 1(mod4)1 \pmod{4}1(mod4)。
1.11 图的运算
定义(删除点):
从图 GGG 中删除顶点 vvv 及其所有关联的边,记作 G−vG - vG−v。若删除顶点子集 V′⊆VV' \subseteq VV′⊆V,记作 G−V′G - V'G−V′。
定义(删除边):
从图 GGG 中删除边 eee,但保留其端点,记作 G−eG - eG−e。
定义(加新边):
在图 GGG 的不相邻顶点 u,vu, vu,v 之间添加一条新边 e=(u,v)e = (u, v)e=(u,v),记作 G+eG + eG+e。
定义(边的收缩):
删除边 e=(u,v)e = (u, v)e=(u,v),并将 uuu 与 vvv 合并为一个新顶点,使原先与 uuu 或 vvv 关联的所有边都与这个新顶点关联,记作 G⋅eG \cdot eG⋅e。
例子:
- 设 GGG 是 nnn 阶 mmm 条边的图,求 G−vG - vG−v 的顶点数和边数(设 d(v)=kd(v) = kd(v)=k)。解:G−vG - vG−v 有 n−1n - 1n−1 个顶点和 m−km - km−k 条边。
- 设 GGG 是 nnn 阶 mmm 条边的简单图,收缩一条边 eee 后,新图的顶点数是 n−1n - 1n−1 个。
1.12 子图与补图
定义(子图):
设 G=(V,E)G = (V, E)G=(V,E) 和 G′=(V′,E′)G' = (V', E')G′=(V′,E′) 是两个图。若 V′⊆VV' \subseteq VV′⊆V 且 E′⊆EE' \subseteq EE′⊆E,则称 G′G'G′ 是 GGG 的子图。
定义(生成子图):
若 G′G'G′ 是 GGG 的子图且 V′=VV' = VV′=V(即包含 GGG 的所有顶点),则称 G′G'G′ 是 GGG 的生成子图。
定义(导出子图):
设 V′⊆VV' \subseteq VV′⊆V,由 V′V'V′ 及其在 GGG 中所有两端点都在 V′V'V′ 中的边构成的子图,称为 GGG 的导出子图。
定义(补图):
设 G=(V,E)G = (V, E)G=(V,E) 是 nnn 阶简单图,GGG 的补图 G‾\overline{G}G 定义为:顶点集仍为 VVV,边集为 KnK_nKn 中不在 GGG 中的所有边。即
E(G‾)={(u,v)∣u,v∈V,u≠v,(u,v)∉E}E(\overline{G}) = \{(u, v) \mid u, v \in V, u \neq v, (u, v) \notin E\}E(G)={(u,v)∣u,v∈V,u=v,(u,v)∈/E}
定理:若 GGG 是不连通的图,则其补图 G‾\overline{G}G 必连通。(连通见3.)
证明:设 u,vu, vu,v 是 G‾\overline{G}G 中任意两个顶点。
- 若 u,vu, vu,v 在 GGG 中属于不同的连通分支,则 u,vu, vu,v 在 GGG 中不相邻,故在 G‾\overline{G}G 中相邻,连通。
- 若 u,vu, vu,v 在 GGG 中属于同一个连通分支,设 www 是 GGG 中另一个连通分支的顶点。则 u,wu, wu,w 和 v,wv, wv,w 在 GGG 中均不相邻(因属于不同分支),故在 G‾\overline{G}G 中均相邻。从而 u−w−vu - w - vu−w−v 是 G‾\overline{G}G 中的一条通路,连通。
2. 图的矩阵表示
图除了用集合论的顶点-边二元组描述外,还可以用矩阵来描述。矩阵表示将图的结构代数化,使得我们可以借助线性代数的工具来分析图的性质——特别是路径计数、连通性判定等问题。
2.1 邻接矩阵
定义(邻接矩阵):
设 G=(V,E)G = (V, E)G=(V,E) 是一个 nnn 阶图,V={v1,v2,…,vn}V = \{v_1, v_2, \ldots, v_n\}V={v1,v2,…,vn},则 GGG 的邻接矩阵 A=(aij)n×nA = (a_{ij})_{n \times n}A=(aij)n×n 定义为:
aij=从 vi 到 vj 的边数a_{ij} = \text{从 } v_i \text{ 到 } v_j \text{ 的边数}aij=从 vi 到 vj 的边数
对于无向简单图,aij∈{0,1}a_{ij} \in \{0, 1\}aij∈{0,1},且 AAA 是对称矩阵(aij=ajia_{ij} = a_{ji}aij=aji)。
性质:
- AAA 的对角元 aiia_{ii}aii 为顶点 viv_ivi 上环的个数(无环简单图为 0);
- 第 iii 行元素之和等于顶点 viv_ivi 的出度(有向图)或度(无向图);
- 第 jjj 列元素之和等于顶点 vjv_jvj 的入度(有向图)或度(无向图)。
2.2 关联矩阵
定义(关联矩阵):
设 G=(V,E)G = (V, E)G=(V,E) 是一个 nnn 阶 mmm 条边的无向图,V={v1,…,vn}V = \{v_1, \ldots, v_n\}V={v1,…,vn},E={e1,…,em}E = \{e_1, \ldots, e_m\}E={e1,…,em},则 GGG 的关联矩阵 M=(mij)n×mM = (m_{ij})_{n \times m}M=(mij)n×m 定义为:
mij={1,若 vi 与 ej 关联0,否则m_{ij} = \begin{cases} 1, & \text{若 } v_i \text{ 与 } e_j \text{ 关联} \\ 0, & \text{否则} \end{cases}mij={1,0,若 vi 与 ej 关联否则
注:若有环,则对应元素记为 2(因为环与顶点的关联次数为 2)。
与邻接矩阵的对比:
- 邻接矩阵是 n×nn \times nn×n 方阵,行/列对应顶点,元素表示顶点间的连接;
- 关联矩阵是 n×mn \times mn×m 矩阵,行对应顶点,列对应边,元素表示顶点与边的关联关系。
2.3 邻接矩阵的幂与路径计数
定理(邻接矩阵的幂):
设 AAA 是图 GGG 的邻接矩阵,则 AkA^kAk(k≥1k \geq 1k≥1)中第 (i,j)(i, j)(i,j) 个元素 (Ak)ij(A^k)_{ij}(Ak)ij 等于从顶点 viv_ivi 到顶点 vjv_jvj 的长度为 kkk 的通路(walk)数目。
证明思路(数学归纳法):
- 基例 k=1k = 1k=1:A1=AA^1 = AA1=A,aija_{ij}aij 就是从 viv_ivi 到 vjv_jvj 的长度为 1 的通路数(即边数),成立。
- 归纳步骤:设 AkA^kAk 的元素表示长度为 kkk 的通路数。Ak+1=Ak⋅AA^{k+1} = A^k \cdot AAk+1=Ak⋅A,其 (i,j)(i, j)(i,j) 元为
∑l=1n(Ak)il⋅alj\sum_{l=1}^n (A^k)_{il} \cdot a_{lj}l=1∑n(Ak)il⋅alj
这恰好枚举了"从 viv_ivi 出发,用 kkk 步走到某个中间顶点 vlv_lvl,再用 1 步走到 vjv_jvj"的所有路径。
特别地:
- (A2)ii=d(vi)(A^2)_{ii} = d(v_i)(A2)ii=d(vi)(对角元为对应顶点的度);
- 若所有对角元 (An)ii>0(A^n)_{ii} > 0(An)ii>0,则图中存在经过 viv_ivi 的回路。
意义:
这一定理将图的路径问题转化为矩阵运算,是图论与代数结合的经典范例,也是 Warshall 算法求传递闭包的理论基础。
2.4 可达矩阵
定义(可达矩阵):
设 GGG 是一个 nnn 阶图,GGG 的可达矩阵 P=(pij)n×nP = (p_{ij})_{n \times n}P=(pij)n×n 定义为:
pij={1,若 vi 可达 vj(即存在从 vi 到 vj 的通路)0,否则p_{ij} = \begin{cases} 1, & \text{若 } v_i \text{ 可达 } v_j \text{(即存在从 } v_i \text{ 到 } v_j \text{ 的通路)} \\ 0, & \text{否则} \end{cases}pij={1,0,若 vi 可达 vj(即存在从 vi 到 vj 的通路)否则
计算方法:
P=I∨A∨A2∨⋯∨An−1P = I \lor A \lor A^2 \lor \cdots \lor A^{n-1}P=I∨A∨A2∨⋯∨An−1
其中 ∨\lor∨ 为逻辑或运算(将非零元素视为 1),III 为单位矩阵。
解读:
- 可达矩阵的元素只取 0 或 1,不关心通路的具体条数;
- PPP 是全 1 矩阵(除对角线外)当且仅当图是强连通的;
- 计算可达矩阵的过程本质上是在求图的传递闭包(可以用之前关系章节的warshell算法求解)。
3. 连通性
连通性是图论中最核心的概念之一。一个图是否"连在一起",直接决定了其是否具有路径、是否可以遍历、是否含有圈等基本性质。本章从无向图和有向图两个角度讨论连通性,并引入距离、极大路径法、连通度等重要工具。
3.1 无向图的连通性
定义(连通图):
在无向图 GGG 中,若任意两个顶点之间都存在通路(walk)(见后续),则称 GGG 为连通图。
定义(连通分支):
无向图 GGG 的连通分支(或连通分量)是 GGG 的极大连通子图。即一个子图本身是连通的,且不能再添加 GGG 中的其他顶点而保持连通。
- 连通图恰好有 1 个连通分支(即它自身);
- 不连通图有 2 个或更多的连通分支。
定义(连通分支数):
图 GGG 中连通分支的个数记为 p(G)p(G)p(G)。
3.2 有向图的连通性
有向图的连通性比无向图更复杂,需要区分三种不同层次的连通性。
定义(强连通):
有向图 DDD 中,若任意两个顶点 u,vu, vu,v 都互相可达(即存在从 uuu 到 vvv 的有向通路,也存在从 vvv 到 uuu 的有向通路),则称 DDD 为强连通图。
定义(单向连通):
有向图 DDD 中,若任意两个顶点 u,vu, vu,v,uuu 可达 vvv 或 vvv 可达 uuu(至少一个方向可达),则称 DDD 为单向连通图。
定义(弱连通):
若有向图 DDD 的基图(忽略方向后的无向图)是连通的,则称 DDD 为弱连通图。
关系:
强连通⇒单向连通⇒弱连通\text{强连通} \Rightarrow \text{单向连通} \Rightarrow \text{弱连通}强连通⇒单向连通⇒弱连通
定理(有向图连通性判定):
- 强连通判定:有向图 DDD 是强连通的,当且仅当 DDD 中存在一条经过所有顶点的回路(closed walk);
- 单向连通判定:有向图 DDD 是单向连通的,当且仅当 DDD 中存在一条经过所有顶点的通路(walk)。
3.3 距离与短程线
定义(距离):
设 u,vu, vu,v 是图 GGG 的两个顶点,uuu 到 vvv 的距离 d(u,v)d(u, v)d(u,v) 定义为从 uuu 到 vvv 的最短通路的长度。若 uuu 与 vvv 之间不存在通路,则 d(u,v)=∞d(u, v) = \inftyd(u,v)=∞。
定义(短程线):
连接 uuu 与 vvv 的长度最短的通路称为 uuu 到 vvv 的短程线。
定义(图的直径):
图 GGG 的直径定义为
diam(G)=maxu,v∈Vd(u,v)\text{diam}(G) = \max_{u,v \in V} d(u,v)diam(G)=u,v∈Vmaxd(u,v)
即所有顶点对之间距离的最大值。
3.4 极大路径法
定义(极大路径):
在有限图中,一条极大路径是不能再向两端延伸的路径。即若 P=v1→v2→⋯→vkP = v_1 \to v_2 \to \cdots \to v_kP=v1→v2→⋯→vk 是极大路径,则 v1v_1v1 的所有邻接顶点都在 PPP 中(否则可以在 v1v_1v1 端延长),vkv_kvk 的所有邻接顶点也都在 PPP 中。
核心思想:
有限图中顶点数有限,必然存在至少一条极大路径。设 P=v1,v2,…,vkP = v_1, v_2, \ldots, v_kP=v1,v2,…,vk 是极大路径,则 v1v_1v1 的所有邻接点必在 PPP 中(否则可将该邻接点接在 v1v_1v1 前面,延长路径,与"极大"矛盾)。
应用:极大路径法是图论证明中极其常用的技巧,常用于证明图中圈的存在性、估算圈的长度,以及研究图的连通性质。(后续会给出一个应用)
3.5 点连通度与边连通度
连通性可以"量化"——我们不仅关心图是否连通,还关心"有多连通",连通性之间进行比较。
定义(点连通度):
图 GGG 的点连通度记为 κ(G)\kappa(G)κ(G),是为了使图 GGG 变为不连通图或平凡图所需移除的最少顶点数目。
定义(边连通度):
图 GGG 的边连通度记为 λ(G)\lambda(G)λ(G),是为了使图 GGG 变为不连通图所需移除的最少边数目。
- 对于完全图 KnK_nKn,κ(Kn)=n−1\kappa(K_n) = n - 1κ(Kn)=n−1;
- 对于不连通图,κ(G)=λ(G)=0\kappa(G) = \lambda(G) = 0κ(G)=λ(G)=0。
- 定义破坏连通性,即删掉点或边后,连通分支增加。
3.6 Whitney 定理(惠特尼定理)
定理(Whitney’s Theorem):
对于任何图 GGG,有
κ(G)≤λ(G)≤δ(G)\kappa(G) \leq \lambda(G) \leq \delta(G)κ(G)≤λ(G)≤δ(G)
即:点连通度 ≤\leq≤ 边连通度 ≤\leq≤ 最小度。
证明思路:
(不妨设我们研究的图是三阶以上连通非完全简单图,否则结论易得)
- λ(G)≤δ(G)\lambda(G) \leq \delta(G)λ(G)≤δ(G):移除与最小度顶点关联的所有 δ(G)\delta(G)δ(G) 条边,该顶点即成为孤立点,图不连通。故只需移除至多 δ(G)\delta(G)δ(G) 条边即可使图不连通。
- κ(G)≤λ(G)\kappa(G) \leq \lambda(G)κ(G)≤λ(G):设 E′E'E′ 是使 GGG 不连通的最少边集(∣E′∣=λ(G)|E'| = \lambda(G)∣E′∣=λ(G))。移除 E′E'E′ 后图分裂为两个连通分支 G1G_1G1 和 G2G_2G2。E′E'E′ 中的每条边都有一个端点在 G1G_1G1 中、一个端点在 G2G_2G2 中。选择 G1G_1G1 中与 E′E'E′ 关联的顶点集 SSS,则 ∣S∣≤∣E′∣|S| \leq |E'|∣S∣≤∣E′∣(因为每条边至少贡献一个端点),移除 SSS 即可使图不连通。故 κ(G)≤∣S∣≤λ(G)\kappa(G) \leq |S| \leq \lambda(G)κ(G)≤∣S∣≤λ(G)。
解读:
- 移除一个顶点可能"切断"多条关联边,所以点连通度通常不超过边连通度;
4. 路径与圈的基本概念
在图 G=(V,E)G = (V, E)G=(V,E) 中,路径与圈的研究是图论最基础也最重要的内容之一。本节从最基本的 “walk” 开始,逐步通过施加约束条件,引出 trail、path 和 cycle 的层级结构。
4.1 Walk(道路)
定义(Walk / 道路):
给定图 G=(V,E)G = (V, E)G=(V,E),图 GGG 中的一条有限 walk 是形如
v0,e1,v1,e2,v2,…,em,vmv_0, e_1, v_1, e_2, v_2, \ldots, e_m, v_mv0,e1,v1,e2,v2,…,em,vm
的顶点与边的交替序列,其中每条边 ei=(vi−1,vi)∈Ee_i = (v_{i-1}, v_i) \in Eei=(vi−1,vi)∈E。等价地,可表示为顶点的交替序列:
v0→v1→v2→⋯→vmv_0 \to v_1 \to v_2 \to \cdots \to v_mv0→v1→v2→⋯→vm
称这条 walk 是从初始顶点 v0v_0v0 到终止顶点 vmv_mvm 的 walk。整数 mmm 称为该 walk 的长度(length,即经过的边数)。
解读:
- Walk 是图中最"宽松"的行进方式——允许重复经过顶点和边;
- Walk 的长度是指边的重复计数,而非不同边的数目;
- 单个顶点 vvv 本身可视为长度为 0 的平凡 walk。
例子:在下图中
D --- E --- B --- C
|
F
序列 D→E→B→C→B→E→FD \to E \to B \to C \to B \to E \to FD→E→B→C→B→E→F 是一条从 DDD 到 FFF 的 walk,长度为 6。注意顶点 BBB 和 EEE 均被重复访问,边 {B,E}\{B,E\}{B,E} 也被重复使用——这是 walk 允许的行为。
4.2 Trail(迹)
定义(Trail / 迹):
一条 trail 是所有边互不相同的 walk。
解读:
- Trail 在 walk 的基础上增加了约束:不允许重复经过同一条边;
- 但 trail 允许重复经过顶点(只要不是通过同一条边到达);
- "迹"这个中文译名形象地表达了"留下痕迹而不重复"的含义。
例子:延续上图:
- D→E→B→CD \to E \to B \to CD→E→B→C 是一条 trail(边 {D,E},{E,B},{B,C}\{D,E\}, \{E,B\}, \{B,C\}{D,E},{E,B},{B,C} 互不相同);
- D→E→FD \to E \to FD→E→F 也是一条 trail;
- 但 D→E→B→C→B→E→FD \to E \to B \to C \to B \to E \to FD→E→B→C→B→E→F 不是 trail,因为边 {B,C}\{B,C\}{B,C} 和 {B,E}\{B,E\}{B,E} 均被重复使用。
4.3 Path(路径)
定义(Path / 路径):
一条 path 是所有顶点互不相同的 trail。
解读:
- Path 在 trail 的基础上进一步约束:不允许重复经过任何顶点(因此自然也不会重复经过任何边);
- 顶点互不相同 ⇒\Rightarrow⇒ 边互不相同,所以 path ⊆\subseteq⊆ trail ⊆\subseteq⊆ walk;
- Path 是图论中最重要的概念之一,很多图论问题最终都归结为寻找满足某种性质的 path。
例子:D→E→B→CD \to E \to B \to CD→E→B→C 是一条 path(顶点 D,E,B,CD, E, B, CD,E,B,C 互不相同)。而 D→E→B→C→BD \to E \to B \to C \to BD→E→B→C→B 不是 path,因为顶点 BBB 重复出现。
4.4 层级关系总结
三种概念形成严格的包含关系:
Path (顶点互异)⊊Trail (边互异)⊊Walk (无约束)\boxed{\text{Path (顶点互异)} \subsetneq \text{Trail (边互异)} \subsetneq \text{Walk (无约束)}}Path (顶点互异)⊊Trail (边互异)⊊Walk (无约束)
| 概念 | 中文 | 边可重复? | 顶点可重复? | 严格程度 |
|---|---|---|---|---|
| Walk | 道路 / 行走 | 是 | 是 | 最宽松 |
| Trail | 迹 | 否 | 是 | 中等 |
| Path | 路径 | 否 | 否 | 最严格 |
4.5 闭 Walk / Trail / Path 与 Cycle(圈)
定义(闭 Walk):
一条 walk(或 trail,或 path)称为闭的(closed),如果其初始顶点与终止顶点相同,即 v0=vmv_0 = v_mv0=vm。
定义(Cycle / 圈):
一个 cycle 是至少含有一条边的闭 path。即满足 v0=vmv_0 = v_mv0=vm 且 v0,v1,…,vm−1v_0, v_1, \ldots, v_{m-1}v0,v1,…,vm−1 互不相同的 path。
解读:
- Cycle 要求:除起点=终点外,其余顶点互不相同;
- "至少含有一条边"排除了单个顶点构成的平凡情形;
- 长度为 kkk 的 cycle 称为 kkk-cycle,记为 CkC_kCk;
- 三角形(triangle)即 C3C_3C3,是最小的 cycle。
4.6 简单回路与圈的辨析
对"回路"做进一步细分:
| 中文术语 | 英文对应 | 核心约束 | 例子 |
|---|---|---|---|
| 通路 | walk | 无约束 | v1→v2→v1→v3v_1 \to v_2 \to v_1 \to v_3v1→v2→v1→v3 |
| 简单通路 | trail | 边不重复 | v1→v2→v3→v1→v4v_1 \to v_2 \to v_3 \to v_1 \to v_4v1→v2→v3→v1→v4 |
| 初级通路 / 路径 | path | 顶点不重复 | v1→v2→v3→v4v_1 \to v_2 \to v_3 \to v_4v1→v2→v3→v4 |
| 回路 | closed walk | 起点 = 终点 | v1→v2→v3→v1→v2→v1v_1 \to v_2 \to v_3 \to v_1 \to v_2 \to v_1v1→v2→v3→v1→v2→v1 |
| 简单回路 | closed trail | 边不重复,起点 = 终点 | v1→v2→v3→v4→v2→v1v_1 \to v_2 \to v_3 \to v_4 \to v_2 \to v_1v1→v2→v3→v4→v2→v1 |
| 初级回路 / 圈 | cycle | 顶点不重复(除起点 = 终点外) | v1→v2→v3→v1v_1 \to v_2 \to v_3 \to v_1v1→v2→v3→v1 |
4.7 通路长度定理
定理(通路长度定理):
- 在 nnn 阶图 GGG 中,若从顶点 viv_ivi 到 vjv_jvj(vi≠vjv_i \neq v_jvi=vj)存在通路,则 viv_ivi 到 vjv_jvj 一定存在长度小于或等于 n−1n - 1n−1 的初级通路(路径);
- 在 nnn 阶图 GGG 中,若存在 viv_ivi 到自身的回路,则一定存在 viv_ivi 到自身长度小于或等于 nnn 的回路。
证明思路:
若通路中存在重复顶点 vkv_kvk,即 vi→⋯→vk→⋯→vk→⋯→vjv_i \to \cdots \to v_k \to \cdots \to v_k \to \cdots \to v_jvi→⋯→vk→⋯→vk→⋯→vj,则删除从 vkv_kvk 到 vkv_kvk 之间的那段回路,得到一条更短的通路。反复删除重复顶点,最终可得所有顶点互不相同的路径。由于最多有 nnn 个顶点,非回路路径长度 ≤n−1\leq n - 1≤n−1;回路最多经过 nnn 个不同顶点后回到起点,长度 ≤n\leq n≤n。
推论:
在 nnn 阶图 GGG 中,若存在 viv_ivi 到自身的简单回路,则一定存在 viv_ivi 到自身长度小于或等于 nnn 的初级回路(圈)。
4.8 δ≥2\delta \geq 2δ≥2 则含圈(极大路径法应用)
在第 3.4 节中我们已经介绍了极大路径法,这里给出一个经典应用。
引理:
设 GGG 为 nnn(n≥3n \geq 3n≥3)阶无向简单图,若 δ(G)≥2\delta(G) \geq 2δ(G)≥2(每个顶点度至少为 2),则 GGG 中一定含有圈。
证明(极大路径法):
- 取 GGG 中的一条极大路径 P=v1→v2→⋯→vkP = v_1 \to v_2 \to \cdots \to v_kP=v1→v2→⋯→vk;
- 由于 PPP 是极大路径,v1v_1v1 的所有邻接点都在 PPP 中(否则 PPP 可延长,矛盾);
- 由 δ(G)≥2\delta(G) \geq 2δ(G)≥2,v1v_1v1 至少有两个邻接点;
- 设 viv_ivi 是 v1v_1v1 在 PPP 上最远的邻接点(i≥3i \geq 3i≥3,因 v2v_2v2 是 PPP 上 v1v_1v1 的邻接点之一,而 v1v_1v1 至少有两个邻接点),则 v1→v2→⋯→vi→v1v_1 \to v_2 \to \cdots \to v_i \to v_1v1→v2→⋯→vi→v1 构成一个长度至少为 3 的圈。
推广:若 δ(G)≥3\delta(G) \geq 3δ(G)≥3,则可进一步证明 GGG 中存在长度大于或等于 4 的圈(证明思路类似:v1v_1v1 至少有 3 个邻接点在 PPP 上,取最远的两个邻接点 va,vbv_a, v_bva,vb,则 v1→v2→⋯→vb→v1v_1 \to v_2 \to \cdots \to v_b \to v_1v1→v2→⋯→vb→v1 的长度至少为 4)。
5. Euler 路径与 Euler 回路
Euler 问题起源于七桥问题,本节给出完整的判定定理。
5.1 Euler Trail 与 Euler Tour 的定义
定义(Euler Trail / 欧拉迹):
经过图中每条边恰好一次的 trail 称为 Euler trail(欧拉迹 / Euler 路径)。
定义(Euler Tour / 欧拉回路):
经过图中每条边恰好一次的闭 trail 称为 Euler tour(欧拉回路)或 Euler circuit。含有 Euler tour 的图称为 Eulerian graph(欧拉图)。
直观区别:
- Euler trail:可以有不同的起点和终点,走遍所有边恰好一次;
- Euler tour:起点=终点,走遍所有边恰好一次后回到出发点(即闭合的 Euler trail)。
5.2 必要条件
引理(Euler Trail 的必要条件):
若图 GGG 存在 Euler trail,则 GGG 中度为奇数的顶点个数为 0 或 2。
证明思路:
考虑一条 Euler trail v0→v1→⋯→vmv_0 \to v_1 \to \cdots \to v_mv0→v1→⋯→vm。对于 trail 的中间顶点 viv_ivi(0<i<m0 < i < m0<i<m),每次进入 viv_ivi 必然随后离开,因此每次经过 viv_ivi 贡献度 2。故中间顶点的度必为偶数。
对于端点 v0v_0v0 和 vmv_mvm:
- 若 v0=vmv_0 = v_mv0=vm(Euler tour),则两端点贡献也是偶数,所有顶点度为偶数(0 个奇度顶点);
- 若 v0≠vmv_0 \neq v_mv0=vm(Euler trail 非闭),则 v0v_0v0 和 vmv_mvm 各多贡献 1,恰有 2 个奇度顶点。
推论:柯尼斯堡七桥问题对应的图有 4 个奇度顶点,因此不存在 Euler trail。
5.3 Euler 定理(充分性)
定理(Euler’s Theorem/ Hierholz):
一个连通图 GGG 存在 Euler trail 当且仅当 GGG 中度为奇数的顶点个数为 0 或 2。
- 若奇度顶点个数为 0,则存在 Euler tour(欧拉回路);
- 若奇度顶点个数为 2,则存在 Euler trail(非闭),且这两个奇度顶点恰为 trail 的端点。
历史回顾:
- Euler 于 1736 年证明了必要性("仅当"方向),但没有证明充分性("当"方向);
- Carl Hierholzer(1840–1871)于 1873 年给出了第一个完整的充分性证明;
- Pierre-Henry Fleury 于 1883 年给出了另一个著名的证明
证明思路(Hierholzer 法,归纳法):
对边数 mmm 进行归纳。
基例:m=0m = 0m=0(单点图),显然成立。
归纳步骤:设每个顶点度均为偶数(0 个奇度顶点情形)。
- 找圈:由第 4.8 节引理(δ≥2\delta \geq 2δ≥2 则含圈),可从任意顶点出发沿未访问的边行走,由于每个顶点度为偶数(≥2\geq 2≥2),最终必回到起点,形成一个 cycle CCC;
- 删除圈:令 G′=G−CG' = G - CG′=G−C(删除 CCC 中的所有边),G′G'G′ 的每个连通分支仍满足偶度条件;
- 归纳假设:由归纳假设,G′G'G′ 的每个连通分支都有 Euler tour;
- 拼接:将 CCC 与各连通分支的 Euler tour 在公共顶点处拼接,得到 GGG 的 Euler tour。

TONCAS 性质:Euler 定理是图论中最经典的 TONCAS(“The Obvious Necessary Conditions are Also Sufficient”——显然的必要条件也是充分的)范例之一。
5.4 Euler 图的圈分解
定理(Euler 图的圈分解):
每个 Euler 图(连通且所有顶点度为偶数)都可以分解为若干边不相交的 cycle 的并。
解读:
- "分解"意味着图的边集可以被划分为若干个 cycle 的边集之并;
- 这是 Hierholzer 证明的自然推论——每次找到的 cycle CCC 与剩余部分的分解拼接起来;
- 直观理解:欧拉图可以看作若干个 cycle "叠加"而成。

5.5 找 Euler Tour 的算法
5.5.1 Hierholzer 算法
基本思想:从起点出发,沿未访问的边随便走,直到形成一个回路;然后在该回路上寻找还有未访问边的顶点,从该顶点出发继续构造新回路,将新回路拼入旧回路。
步骤:
- 从任意顶点 vvv 开始,沿未访问的边随意行走,直到回到 vvv,得到 cycle CCC;
- 若 CCC 包含所有边,结束;
- 否则,在 CCC 上找到一个还有未访问关联边的顶点 uuu;
- 从 uuu 出发继续步骤 1,得到新 cycle C′C'C′;
- 将 C′C'C′ 拼接到 CCC 中(在 uuu 处"插入"),更新 CCC;
- 重复步骤 2–5。
时间复杂度:O(m)O(m)O(m),每条边仅被访问一次。
5.5.2 Fleury 算法
基本思想:除非别无选择,否则不走"桥"(删除会使图不连通的边)。
步骤:
- 选择正确的起始顶点(奇度顶点之一,或任意顶点若全为偶度);
- 在当前顶点处,优先选择非桥边(即删除该边后图仍保持连通的边);
- 若所有关联边都是桥,则选择其中一条;
- 走过该边后删除之,移动到邻接顶点;
- 重复直到所有边被遍历。
时间复杂度:O(m⋅(n+m))O(m \cdot (n + m))O(m⋅(n+m))(需用 DFS 判断桥),较 Hierholzer 慢,但直观易懂。
6. Hamilton 路径与 Hamilton 圈
与 Euler 问题的"遍历每条边"不同,Hamilton 问题关注的是"遍历每个顶点恰好一次"。
6.1 历史背景
1859 年,爱尔兰数学家 William Rowan Hamilton发明了一种名为"Icosian 游戏"的智力玩具,基于正十二面体(Dodecahedron)的图结构:
- 正十二面体有 20 个顶点、30 条边、12 个面;
- 游戏的问题是:是否存在一条路径,经过每个顶点恰好一次并回到起点?
这引出了 Hamilton 路径与 Hamilton 圈的概念。
6.2 基本定义
定义(Hamiltonian Path / Hamilton 路径):
经过图中每个顶点恰好一次的 path 称为 Hamiltonian path。
定义(Hamiltonian Cycle / Hamilton 圈):
经过图中每个顶点恰好一次的 cycle 称为 Hamiltonian cycle。等价地说,是一个 Hamiltonian path 再加上连接其两端点的那条边,从而形成一个 cycle。
定义(Hamiltonian Graph / Hamilton 图):
含有 Hamiltonian cycle 的图称为 Hamiltonian graph。
定义(Semi-Hamiltonian Graph / 半 Hamilton 图):
不含有 Hamiltonian cycle,但含有 Hamiltonian path 的图称为 semi-Hamiltonian graph。
对比总结:
| Euler 问题 | Hamilton 问题 | |
|---|---|---|
| 遍历对象 | 每条边恰好一次 | 每个顶点恰好一次 |
| 判定复杂度 | 线性时间 O(n+m)O(n+m)O(n+m) | NP-完全 |
| 充要条件 | 有(Euler 定理) | 无已知简洁充要条件 |
| 充分条件 | 也必要 | 有多种(Ore, Dirac 等) |
| 必要条件 | 也充分 | 不充分 |
6.3 NP-完全性
定理:
Hamiltonian Path 问题和 Hamiltonian Cycle 问题都是 NP-完全的。
- 这意味着(在 P≠NP\text{P} \neq \text{NP}P=NP 的假设下)不存在多项式时间的判定算法;
- 与 Euler 问题形成鲜明对比——Euler 问题有线性时间算法,可以通过比较检查比较简单的性质就判定。
- “是否存在判定 Hamiltonian cycle 的简洁定理?”——目前没有人知道,很可能永远不会知道(若 P≠NP\text{P} \neq \text{NP}P=NP)。
由于 NP-完全性,图论研究 Hamilton 问题时采取以下策略:
- 充分条件:证明"若图满足某性质,则图是 Hamiltonian 的";
- 必要条件:证明"若图是 Hamiltonian 的,则图必满足某性质";
- 特殊图类:对某些特殊图类(如完全图、二部图等)给出判定方法。
6.4 典型例子介绍
6.4.1 Hamiltonian 图的正例
| 图类 | Hamiltonian 性 | 说明 |
|---|---|---|
| 完全图 KnK_nKn (n≥3n \geq 3n≥3) | 是 | 任意排列顶点即得 Hamiltonian cycle |
| 圈图 CnC_nCn (n≥3n \geq 3n≥3) | 是 | 自身就是 Hamiltonian cycle |
| 所有正多面体图 | 是 | Tetrahedron、Cube、Octahedron、Dodecahedron、Icosahedron |
| 完全二部图 Km,nK_{m,n}Km,n | 当且仅当 m=n≥2m = n \geq 2m=n≥2 | 见第 8.3 节 |

6.4.2 非 Hamiltonian 图的经典反例
Petersen 图:
- 10 个顶点、15 条边;
- 3-正则图(每个顶点度均为 3);
- 围长(girth,最短 cycle 长度)为 5;
- 不是 Hamiltonian 图(有路径没有圈)。

证明思路(反证法):
假设 Petersen 图有 Hamiltonian cycle CCC。考虑顶点 v0v_0v0,其在 Petersen 图中有 3 个邻接顶点。由于皮特森图中不存在长度小于五的圈(穷举可知),v0v_0v0 在 CCC 上的两个邻接顶点不能相隔太近。通过分析 v0v_0v0 的邻接顶点在 CCC 上的各种配置情况(case analysis),可以导出矛盾——要么产生长度为 4 的 cycle(与围长为 5 矛盾),要么归结为已排除的情形。
7. Hamilton 图的充分条件
本节介绍两个最著名的充分条件:Ore 定理和Dirac 定理。
7.1 Ore 定理(1960)
定理(Ore’s Theorem):
设 G=(V,E)G = (V, E)G=(V,E) 是 n≥3n \geq 3n≥3 个顶点的简单图。如果对每一对不相邻的顶点 u,v∈Vu, v \in Vu,v∈V,都有
deg(u)+deg(v)≥n\deg(u) + \deg(v) \geq ndeg(u)+deg(v)≥n
则 GGG 是 Hamiltonian 图。
条件解读:
- 条件只要求对不相邻的顶点对验证;
- 直观含义:“如果图有足够多的边(用度和来衡量),则图是 Hamiltonian 的”;
- 这是一个充分但非必要条件。
证明思路(反证法 + 极值性论证):
- 反设:假设 GGG 满足 Ore 条件但不是 Hamiltonian 图;
- 加边保持条件:向 GGG 中添加边不会破坏 Ore 条件(因为加边只会增加度,使不等式更容易满足);
- 极值图:不断加边直到得到一个极大非 Hamiltonian 图 G′G'G′(再加任意一条边就变成 Hamiltonian 图);
- 半 Hamilton 性:由极大性,G′G'G′ 必含有一条 Hamiltonian path v1→v2→⋯→vnv_1 \to v_2 \to \cdots \to v_nv1→v2→⋯→vn(因为加任意一条边就会产生 Hamiltonian cycle);
- 非邻接端点:v1v_1v1 与 vnv_nvn 不相邻(否则已有 Hamiltonian cycle);
- Ore 条件应用:deg(v1)+deg(vn)≥n\deg(v_1) + \deg(v_n) \geq ndeg(v1)+deg(vn)≥n;
- 构造矛盾:考察 v1v_1v1 的邻接顶点集 SSS 与 vnv_nvn 的"前驱邻接集" TTT。由鸽巢原理,存在某个 viv_ivi 使得 viv_ivi 邻接于 v1v_1v1 且 vi−1v_{i-1}vi−1 邻接于 vnv_nvn。于是可以构造 Hamiltonian cycle:v1→vi→vi+1→⋯→vn→vi−1→vi−2→⋯→v1v_1 \to v_i \to v_{i+1} \to \cdots \to v_n \to v_{i-1} \to v_{i-2} \to \cdots \to v_1v1→vi→vi+1→⋯→vn→vi−1→vi−2→⋯→v1,矛盾。

7.2 Dirac 定理
定理(Dirac’s Theorem,1952):
设 G=(V,E)G = (V, E)G=(V,E) 是 n≥3n \geq 3n≥3 个顶点的简单图。如果
δ(G)≥n2\delta(G) \geq \frac{n}{2}δ(G)≥2n
(即每个顶点的度至少为 n/2n/2n/2),则 GGG 是 Hamiltonian 图。
与 Ore 定理的关系:
- Dirac 定理是 Ore 定理的直接推论;
- 若 δ(G)≥n/2\delta(G) \geq n/2δ(G)≥n/2,则对任意不相邻顶点 u,vu, vu,v:deg(u)+deg(v)≥n/2+n/2=n\deg(u) + \deg(v) \geq n/2 + n/2 = ndeg(u)+deg(v)≥n/2+n/2=n,满足 Ore 条件;
- Dirac 条件更强(要求更严格),因此适用范围更窄,但验证更简单。
紧性说明:
- Dirac 定理中的 n/2n/2n/2 是最优的(不能降低);
- 反例:取 K⌊(n+1)/2⌋K_{\lfloor(n+1)/2\rfloor}K⌊(n+1)/2⌋ 和 K⌈(n+1)/2⌉K_{\lceil(n+1)/2\rceil}K⌈(n+1)/2⌉ 共享一个顶点。此图的 δ(G)=⌊(n−1)/2⌋\delta(G) = \lfloor(n-1)/2\rfloorδ(G)=⌊(n−1)/2⌋,但不是 Hamiltonian 图。
7.3 闭包与 Bondy-Chvátal 定理(拓展)
定义(闭包):
图 GGG 的闭包 C(G)C(G)C(G) 是通过反复执行以下操作得到的图:若存在不相邻顶点 u,vu, vu,v 满足 deg(u)+deg(v)≥n\deg(u) + \deg(v) \geq ndeg(u)+deg(v)≥n,则添加边 {u,v}\{u, v\}{u,v},直到不存在这样的顶点对为止。
定理(Bondy-Chvátal,1972):
图 GGG 是 Hamiltonian 图当且仅当其闭包 C(G)C(G)C(G) 是 Hamiltonian 图。
意义:
- 这是 Ore 定理的推广;
- 提供了一种系统性地"加边"来判定 Hamiltonian 性的方法;
- 若闭包最终变成完全图 KnK_nKn,则原图必为 Hamiltonian 图。
8. Hamilton 图的必要条件
本节介绍若干 Hamilton 图的必要条件。需注意:这些条件都不充分。
8.1 连通度条件
定理(Chvátal-Erdős 型必要条件):
若 G=(V,E)G = (V, E)G=(V,E) 是 Hamiltonian 图,则对任意非空真子集 S⊂VS \subset VS⊂V,有
c(G−S)≤∣S∣c(G - S) \leq |S|c(G−S)≤∣S∣
其中 G−SG - SG−S 表示从 GGG 中删除 SSS 中的所有顶点及其关联边后得到的图,c(G−S)c(G - S)c(G−S) 表示 G−SG - SG−S 的连通分支数。
直观理解:
想象 Hamiltonian cycle CCC 是一条穿过所有顶点的"环状项链"。当删除集合 SSS 中的顶点后,项链在每个被删除的顶点处断裂。断裂后的每一段(连通分支)必须"挂在" SSS 的不同顶点上——因此连通分支数不可能超过 ∣S∣|S|∣S∣。
证明思路:
Hamiltonian cycle 删除 SSS 后最多变成 ∣S∣|S|∣S∣ 条 path(每个被删顶点最多"切断" cycle 一次),故 c(G−S)≤c(C−S)≤∣S∣c(G - S) \leq c(C - S) \leq |S|c(G−S)≤c(C−S)≤∣S∣。
注意:该条件是必要但不充分的。例如 Petersen 图满足此条件但不是 Hamiltonian 图。
8.2 Whitney 定理与 Hamilton 图的关系
在第 3.6 节我们已经介绍了 Whitney 定理 κ(G)≤λ(G)≤δ(G)\kappa(G) \leq \lambda(G) \leq \delta(G)κ(G)≤λ(G)≤δ(G)。这里讨论它与 Hamilton 图的关系。
推论:
Hamilton 图必是 2-连通图(κ(G)≥2\kappa(G) \geq 2κ(G)≥2)。
证明:
Hamiltonian cycle 本身就是一个 2-连通结构:删除任意一个顶点后,cycle 变成一条 path,图仍然连通。因此非 2-连通的图一定不是 Hamiltonian 图。
注意:2-连通是不充分的——Petersen 图是 3-连通的(κ=3\kappa = 3κ=3),但仍非 Hamiltonian。
8.3 度为 2 的顶点约束
必要条件:
若 GGG 是 Hamiltonian 图,则所有与度为 2 的顶点关联的边必须都在 Hamiltonian cycle 上。
解读:
- 度为 2 的顶点只有两条关联边;
- Hamiltonian cycle 经过该顶点时恰好使用两条边;
- 因此这两条边"别无选择",必须全部使用。
8.4 二部图的特殊必要条件
定理:
完全二部图 Km,nK_{m,n}Km,n 是 Hamiltonian 图 当且仅当 m=n≥2m = n \geq 2m=n≥2。
证明:
- 充分性(m=n≥2m = n \geq 2m=n≥2):在 V1V_1V1 和 V2V_2V2 之间交替访问即可构造 Hamiltonian cycle。
- 必要性:设 Km,nK_{m,n}Km,n 有 Hamiltonian cycle。在 cycle 上,顶点必须在 V1V_1V1 和 V2V_2V2 之间严格交替(因为是二部图,无内部边),所以 ∣V1∣=∣V2∣|V_1| = |V_2|∣V1∣=∣V2∣。又 K1,1K_{1,1}K1,1 只有一条边,不构成 cycle,故需 m=n≥2m = n \geq 2m=n≥2。
推论(非 Hamiltonian 二部图例子):
K12,13K_{12,13}K12,13(∣V1∣=12,∣V2∣=13|V_1| = 12, |V_2| = 13∣V1∣=12,∣V2∣=13)不是 Hamiltonian 图。
8.5 Petersen 图非 Hamilton 性再述
Petersen 图满足上述所有必要条件(连通度条件 c(G−S)≤∣S∣c(G-S) \leq |S|c(G−S)≤∣S∣、度约束、2-连通等),但仍不是 Hamiltonian 图——这说明必要条件真的只是"必要"而非"充分"。
关键性质:
- 10 个顶点,15 条边,3-正则;
- 围长为 5(无 3-cycle 或 4-cycle);
- 自同构群高度对称;
- 是亚哈密顿图(hypohamiltonian:本身非 Hamiltonian,但删除任意一个顶点后变成 Hamiltonian)。
9. 应用与拓展
9.1 马踏棋盘问题(Knight’s Tour)
问题描述:
在国际象棋棋盘上,骑士(也即马)按照"日"字形移动(横向走 2 格纵向走 1 格,或横向走 1 格纵向走 2 格)。问:
骑士能否恰好访问棋盘的每个方格一次,并最终回到出发点?
图论建模:
- 将棋盘的每个方格看作一个顶点;
- 若骑士可以一步从一个方格移动到另一个方格,则在对应顶点间连一条边;
- 问题转化为:在这个"骑士图"中寻找 Hamiltonian cycle。
二部图分析:
棋盘天然构成二部图——将棋盘按黑白染色,骑士每步必从黑格跳到白格(或反之)。因此骑士图是二部图。
定理:
- 5×55 \times 55×5 棋盘:∣U∣=12,∣V∣=13|U| = 12, |V| = 13∣U∣=12,∣V∣=13(黑白格数不等),骑士图同构于 K12,13K_{12,13}K12,13 的子图,故不存在 Hamiltonian cycle;
- 4×44 \times 44×4 棋盘:删除中间的 4 个方格后,剩余图有 6 个连通分支。由必要条件 c(G−S)≤∣S∣c(G - S) \leq |S|c(G−S)≤∣S∣(取 ∣S∣=4|S| = 4∣S∣=4),6>46 > 46>4,故不存在 Hamiltonian cycle;
- 4×n4 \times n4×n 棋盘(n≥4n \geq 4n≥4):类似分析,删除中间两行的棕色方格后产生 ≥n+1\geq n + 1≥n+1 个连通分支,而 ∣S∣=n|S| = n∣S∣=n,故不存在 Hamiltonian cycle。
9.2 旅行商问题(Travelling Salesman Problem, TSP)
问题描述:
给定一组城市和每对城市之间的距离,求一条最短的路线,使得:
- 从某城市出发;
- 恰好访问每个城市一次;
- 最终回到出发城市。
图论建模:
- 将城市看作顶点;
- 将城市间的道路看作边,距离作为边的权重;
- 问题转化为:在带权完全图中寻找权重最小的 Hamiltonian cycle。
与 Hamilton 问题的关系:
- TSP 是 Hamiltonian cycle 问题的加权优化版本;
- 决策版本(“是否存在长度 ≤L\leq L≤L 的 tour?”)是 NP-完全的;
- 是组合优化中最著名、研究最深入的 NP-难问题之一;
- 实际应用中常用近似算法、启发式算法(如模拟退火、遗传算法、蚁群算法等)求解。
9.3 中国邮路问题(Chinese Postman Problem)
问题描述:
邮递员从邮局出发,要经过每条街道至少一次,最后回到邮局。求最短的投递路线。
与 Euler 问题的关系:
- 若街道图是 Eulerian 图,则 Euler tour 即最优解(每条街恰好走一次);
- 若不是 Eulerian 图,则需要重复走某些街道(相当于在图中添加重复的边使其 Eulerian),使得重复的边总长度最小。
解决方法:
- 找出图中所有奇度顶点(必为偶数个);
- 将这些奇度顶点两两配对;
- 在每对之间找最短路径,沿该路径复制边;
- 使所有顶点度变为偶数,然后找 Euler tour。
- 最优配对可用blossom 算法在多项式时间内求解。
9.4 邻接矩阵幂与路径计数的再讨论
在第 2.3 节我们已经介绍了邻接矩阵的幂与路径计数的基本定理。这里从路径与圈的角度进一步讨论其意义。
回顾定理:
设 AAA 是图 GGG 的邻接矩阵,则 (Ak)ij(A^k)_{ij}(Ak)ij 等于从 viv_ivi 到 vjv_jvj 的长度为 kkk 的通路(walk)数目。
应用:
- 判断连通性:若 P=I∨A∨A2∨⋯∨An−1P = I \lor A \lor A^2 \lor \cdots \lor A^{n-1}P=I∨A∨A2∨⋯∨An−1 是全 1 矩阵,则图是连通的;
- 计数路径:无需枚举,直接用矩阵乘法即可统计固定长度的通路数目;
- 判断 cycle 存在性:tr(Ak)=∑i=1n(Ak)ii\text{tr}(A^k) = \sum_{i=1}^n (A^k)_{ii}tr(Ak)=∑i=1n(Ak)ii 表示图中长度为 kkk 的闭 walk 数目(含重复计数)。
10. 总结
10.1 核心概念层级图
图论基础概念层级
图 G = (V, E)
├── 有向图 / 无向图
├── 简单图 / 多重图(平行边、环)
├── 度:d(v), δ(G), Δ(G)
├── 握手定理:Σd(v) = 2|E|
├── 特殊图类:K_n, C_n, W_n, K_{m,n}, 正则图, 竞赛图
├── 运算:删除点/边、加边、收缩
├── 子图、生成子图、导出子图、补图
├── 同构 ≅
├── 矩阵表示:A(邻接), M(关联), P(可达)
└── 连通性
├── 无向图:连通 / 不连通(连通分支)
├── 有向图:强连通 → 单向连通 → 弱连通
├── 距离 d(u,v) 与短程线
├── 极大路径法
└── 连通度:κ(G) ≤ λ(G) ≤ δ(G) (Whitney)
路径与圈概念层级
Walk (道路)
/ | \
/ | \
(边互异) (闭) (顶点互异)
/ | \
Trail Closed Path
(迹) Walk (路径)
\ | /
\ | /
\ | /
Closed Trail
|
| (顶点互异)
|
Cycle (圈)
包含关系:
Cycle⊊Closed Path⊊Closed Trail⊊Closed Walk\text{Cycle} \subsetneq \text{Closed Path} \subsetneq \text{Closed Trail} \subsetneq \text{Closed Walk}Cycle⊊Closed Path⊊Closed Trail⊊Closed Walk
Path⊊Trail⊊Walk\text{Path} \subsetneq \text{Trail} \subsetneq \text{Walk}Path⊊Trail⊊Walk
10.2 Euler 问题 vs Hamilton 问题
| 对比维度 | Euler Trail / Tour | Hamilton Path / Cycle |
|---|---|---|
| 遍历目标 | 每条边恰好一次 | 每个顶点恰好一次 |
| 判定难度 | 线性时间 O(n+m)O(n+m)O(n+m) | NP-完全 |
| 充要条件 | 有(奇度顶点数为 0 或 2) | 无已知简洁条件 |
| 充分条件 | 也是必要条件 | Ore、Dirac 等 |
| 必要条件 | 也是充分条件 | 连通度条件等(不充分) |
| 算法 | Hierholzer O(m)O(m)O(m)、Fleury | 无多项式算法(一般情形) |
| 应用 | 中国邮路问题 | TSP、骑士巡游 |
| 典型正例 | 所有偶度连通图 | 完全图 Kn(n≥3)K_n (n \geq 3)Kn(n≥3) |
| 典型反例 | 柯尼斯堡七桥图 | Petersen 图 |
10.3 充分条件对比(Hamilton 图)
| 定理 | 年份 | 条件 | 强度 |
|---|---|---|---|
| Dirac | 1952 | δ(G)≥n/2\delta(G) \geq n/2δ(G)≥n/2 | 强(易验证) |
| Ore | 1960 | ∀\forall∀ 非邻接 u,vu,vu,v: deg(u)+deg(v)≥n\deg(u) + \deg(v) \geq ndeg(u)+deg(v)≥n | 中等 |
| Bondy-Chvátal | 1972 | 闭包 C(G)C(G)C(G) 是完全图 | 最弱(最精确) |
关系:Dirac⇒Ore⇒Bondy-Chvaˊtal(逆不成立)\text{Dirac} \Rightarrow \text{Ore} \Rightarrow \text{Bondy-Chvátal(逆不成立)}Dirac⇒Ore⇒Bondy-Chvaˊtal(逆不成立)
10.4 注意事项
-
Walk ≠\neq= Trail ≠\neq= Path:这三者的区分是图论容易混淆的地方。核心区别在于:walk 无任何限制;trail 要求边不重复;path 要求顶点不重复。许多定理只对 path 成立,不能随意推广到 walk 或 trail。
-
简单回路 ≠\neq= 圈:简单回路只要求边不重复,允许顶点重复;圈要求除起点=终点外所有顶点互不相同。"8"字形的回路是简单回路但不是圈。
-
Euler 与 Hamilton 的本质区别:前者遍历边,后者遍历顶点。一个是"线性可解",一个是"NP-完全"。不要混淆二者的条件和结论。
-
闭 path 与 cycle 的区别:闭 path 只要求 v0=vmv_0 = v_mv0=vm,中间顶点可能重复;cycle 要求 v0,v1,…,vm−1v_0, v_1, \ldots, v_{m-1}v0,v1,…,vm−1 全不相同。因此闭 path ⊋\supsetneq⊋ cycle。
-
"至少有一条边"的约束:cycle 定义中要求至少一条边,这排除了单个顶点(长度为 0 的"自环"情况)。C3C_3C3(三角形)是最小的 cycle。
-
Ore 条件的验证范围:Ore 定理只要求对不相邻的顶点对验证度和条件。若两个顶点已经相邻,则无需检验。
-
Hamilton 必要条件的局限:连通度条件 c(G−S)≤∣S∣c(G-S) \leq |S|c(G−S)≤∣S∣、度为 2 顶点约束等都是"必要不充分"的。Petersen 图满足所有常见必要条件但仍非 Hamiltonian。
-
二部图 Hamiltonian 性的特殊处理:二部图的 Hamiltonian cycle 必须在两个部分集之间严格交替,因此 ∣U∣=∣V∣|U| = |V|∣U∣=∣V∣ 是必要条件。对于完全二部图 Km,nK_{m,n}Km,n,这个条件也是充分的(当 m=n≥2m = n \geq 2m=n≥2 时)。
-
握手定理的适用范围:握手定理适用于所有图(包括有环、有平行边的图),只需注意环对度的贡献为 2。
-
TONCAS 原则:Euler 定理是图论中 TONCAS(“The Obvious Necessary Conditions are Also Sufficient”)原则的经典体现。Hamilton 问题则是反例——必要条件并不充分。
更多推荐



所有评论(0)