离散数学 · 图、路径与圈 学习笔记

目录

章节 标题 内容概要
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| = nV=n 称为图的∣E∣=m|E| = mE=m 称为图的大小

边的形式取决于图是有向还是无向:

  • 无向图:边是无序对,记作 (u,v)(u, v)(u,v){u,v}\{u, v\}{u,v},表示 uuuvvv 之间有一条无方向的连接;
  • 有向图:边是有序对,称为,记作 ⟨u,v⟩\langle u, v \rangleu,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,veee端点eeeu,vu, vu,v 关联

定义(环 / Loop)
两端点重合的边称为,即形如 (v,v)(v, v)(v,v) 的边。

定义(孤立点)
不与任何边关联的顶点称为孤立点,其度数为 0。

定义(相邻)

  • 顶点相邻:若两个顶点是同一条边的端点,则称这两个顶点相邻
  • 边相邻:若两条边有公共的顶点,则称这两条边相邻

关联次数的说明

  • eee 不是环,顶点 vvv 与边 eee 的关联次数为 1(vvveee 的一个端点);
  • 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)={uV(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)={eEe  v 关联}

有向图中的特殊概念

  • 后继集N+(v)={u∈V∣⟨v,u⟩∈E}N^+(v) = \{u \in V \mid \langle v, u \rangle \in E\}N+(v)={uVv,uE},即从 vvv 出发的弧所到达的顶点集;
  • 前驱集N−(v)={u∈V∣⟨u,v⟩∈E}N^-(v) = \{u \in V \mid \langle u, v \rangle \in E\}N(v)={uVu,vE},即到达 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)vV(G)}
  • 最大度Δ(G)=max⁡{d(v)∣v∈V(G)}\Delta(G) = \max\{d(v) \mid v \in V(G)\}Δ(G)=max{d(v)vV(G)}
  • 对于有向图,可以定义最小入度,最小出度,这里不详细写出来了

1.6 握手定理(Handshaking Lemma)

定理(握手定理)

  1. 无向图:所有顶点的度数之和等于边数的两倍,即
    ∑v∈Vd(v)=2∣E∣\sum_{v \in V} d(v) = 2|E|vVd(v)=2∣E
  2. 有向图:所有顶点的入度之和等于出度之和,且都等于边数,即
    ∑v∈Vd−(v)=∑v∈Vd+(v)=∣E∣\sum_{v \in V} d^-(v) = \sum_{v \in V} d^+(v) = |E|vVd(v)=vVd+(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|vVoddd(v)+vVevend(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+(n4)×2=2×10,即 12+2n−8=2012 + 2n - 8 = 2012+2n8=20,解得 2n=162n = 162n=16n=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_ii=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_nd1d2dn),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=(d21,d31,,dd1+11,dd1+2,,dn)
(将其后 d1d_1d1 个元素各减 1,再排序为非增序列后)也是可简单图化的。

  • 证明略

算法步骤

  1. 将序列按降序排列;
  2. 移除最大元素 d1d_1d1
  3. 将其后的 d1d_1d1 个元素各减 1;
  4. 若出现负数,则不可简单图化;若全为 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_nKnnnn 为顶点数)。

性质

  • KnK_nKn 的边数为 n(n−1)2\frac{n(n-1)}{2}2n(n1)
  • KnK_nKn 中每个顶点的度均为 n−1n - 1n1
  • KnK_nKn(n−1)(n-1)(n1)-正则图。
1.9.2 圈图

定义(圈图)
由一个圈围成的图称为圈图(或回路图),记为 CnC_nCnn≥3n \geq 3n3)。

性质

  • CnC_nCnnnn 个顶点和 nnn 条边;
  • CnC_nCn 中每个顶点的度均为 2,即 CnC_nCn 是 2-正则图。
1.9.3 轮图

定义(轮图)
CnC_nCn 的基础上增加一个中心点,并将该中心点与 CnC_nCn 的所有顶点相连,得到的图称为轮图,记为 WnW_nWn

性质

  • WnW_nWnn+1n + 1n+1 个顶点和 2n2n2n 条边;
  • 中心点度为 nnn,外围点度为 3。
1.9.4 正则图

定义(正则图)
每个顶点的度数都相等的图称为正则图。若度数均为 kkk,则称为 kkk-正则图

  • KnK_nKn(n−1)(n-1)(n1)-正则图;
  • CnC_nCn 是 2-正则图;
1.9.5 竞赛图

定义(竞赛图)
基图为完全图 KnK_nKn有向图称为竞赛图

性质

  • 竞赛图中任意两个顶点 u,vu, vu,v 之间恰有一条有向边(⟨u,v⟩\langle u, v \rangleu,v⟨v,u⟩\langle v, u \ranglev,u)(竞赛图由完全图得来);
  • nnn 阶竞赛图的边数为 n(n−1)2\frac{n(n-1)}{2}2n(n1)
  • 所有顶点的出度之和等于 n(n−1)2\frac{n(n-1)}{2}2n(n1)。(对于有向图而言,出度之和 = 总边数)
1.9.6 二部图

定义(二部图)
G=(V,E)G = (V, E)G=(V,E) 为一个无向图,如果可以将 VVV 划分为两个不相交的子集 V1V_1V1V2V_2V2V=V1∪V2V = V_1 \cup V_2V=V1V2V1∩V2=∅V_1 \cap V_2 = \varnothingV1V2=),使得每条边都连接 V1V_1V1 中的一个顶点与 V2V_2V2 中的一个顶点(即 V1V_1V1 内部和 V2V_2V2 内部都没有边),则称 GGG二部图(或二分图偶图)。

定义(完全二部图)
若二部图 GGGV1V_1V1 的每个顶点都与 V2V_2V2 的每个顶点相邻,则称 GGG完全二部图,记为 Km,nK_{m,n}Km,n,其中 m=∣V1∣m = |V_1|m=V1n=∣V2∣n = |V_2|n=V2

性质

  • Km,nK_{m,n}Km,n 的边数为 m⋅nm \cdot nmn
  • Km,nK_{m,n}Km,nV1V_1V1 中每个顶点度为 nnnV2V_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:V1V2,使得 (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_1G1G2G_2G2 同构,记为 G1≅G2G_1 \cong G_2G1G2

直观理解
两个图同构,意味着它们"结构相同",只是顶点的标签不同。如果把一个图的顶点重新命名,就可以得到另一个图。

同构的必要条件(用于排除非同构):

  • 顶点数相同;
  • 边数相同;
  • 度数列相同。

注意:以上条件都是必要但不充分的。存在顶点数、边数、度数列都相同但仍不同构的图。(例如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(n1),故 nnn 必须满足 n≡0n \equiv 0n01(mod4)1 \pmod{4}1(mod4)


1.11 图的运算

定义(删除点)
从图 GGG 中删除顶点 vvv 及其所有关联的边,记作 G−vG - vGv。若删除顶点子集 V′⊆VV' \subseteq VVV,记作 G−V′G - V'GV

定义(删除边)
从图 GGG 中删除边 eee,但保留其端点,记作 G−eG - eGe

定义(加新边)
在图 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),并将 uuuvvv 合并为一个新顶点,使原先与 uuuvvv 关联的所有边都与这个新顶点关联,记作 G⋅eG \cdot eGe

例子

  • GGGnnnmmm 条边的图,求 G−vG - vGv 的顶点数和边数(设 d(v)=kd(v) = kd(v)=k)。解:G−vG - vGvn−1n - 1n1 个顶点和 m−km - kmk 条边。
  • GGGnnnmmm 条边的简单图,收缩一条边 eee 后,新图的顶点数是 n−1n - 1n1 个。

1.12 子图与补图

定义(子图)
G=(V,E)G = (V, E)G=(V,E)G′=(V′,E′)G' = (V', E')G=(V,E) 是两个图。若 V′⊆VV' \subseteq VVVE′⊆EE' \subseteq EEE,则称 G′G'GGGG子图

定义(生成子图)
G′G'GGGG 的子图且 V′=VV' = VV=V(即包含 GGG 的所有顶点),则称 G′G'GGGG生成子图

定义(导出子图)
V′⊆VV' \subseteq VVV,由 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,vV,u=v,(u,v)/E}

定理:若 GGG 是不连通的图,则其补图 G‾\overline{G}G 必连通。(连通见3.)

证明:设 u,vu, vu,vG‾\overline{G}G 中任意两个顶点。

  • u,vu, vu,vGGG 中属于不同的连通分支,则 u,vu, vu,vGGG 中不相邻,故在 G‾\overline{G}G 中相邻,连通。
  • u,vu, vu,vGGG 中属于同一个连通分支,设 wwwGGG 中另一个连通分支的顶点。则 u,wu, wu,wv,wv, wv,wGGG 中均不相邻(因属于不同分支),故在 G‾\overline{G}G 中均相邻。从而 u−w−vu - w - vuwvG‾\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) 是一个 nnnmmm 条边的无向图,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^kAkk≥1k \geq 1k1)中第 (i,j)(i, j)(i,j) 个元素 (Ak)ij(A^k)_{ij}(Ak)ij 等于从顶点 viv_ivi 到顶点 vjv_jvj长度为 kkk 的通路(walk)数目。

证明思路(数学归纳法):

  • 基例 k=1k = 1k=1A1=AA^1 = AA1=Aaija_{ij}aij 就是从 viv_ivivjv_jvj 的长度为 1 的通路数(即边数),成立。
  • 归纳步骤:设 AkA^kAk 的元素表示长度为 kkk 的通路数。Ak+1=Ak⋅AA^{k+1} = A^k \cdot AAk+1=AkA,其 (i,j)(i, j)(i,j) 元为
    ∑l=1n(Ak)il⋅alj\sum_{l=1}^n (A^k)_{il} \cdot a_{lj}l=1n(Ak)ilalj
    这恰好枚举了"从 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=IAA2An1
其中 ∨\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互相可达(即存在从 uuuvvv 的有向通路,也存在从 vvvuuu 的有向通路),则称 DDD强连通图

定义(单向连通)
有向图 DDD 中,若任意两个顶点 u,vu, vu,vuuu 可达 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 的两个顶点,uuuvvv距离 d(u,v)d(u, v)d(u,v) 定义为从 uuuvvv最短通路的长度。若 uuuvvv 之间不存在通路,则 d(u,v)=∞d(u, v) = \inftyd(u,v)=

定义(短程线)
连接 uuuvvv 的长度最短的通路称为 uuuvvv短程线

定义(图的直径)
GGG直径定义为
diam(G)=max⁡u,v∈Vd(u,v)\text{diam}(G) = \max_{u,v \in V} d(u,v)diam(G)=u,vVmaxd(u,v)
即所有顶点对之间距离的最大值。

3.4 极大路径法

定义(极大路径)
在有限图中,一条极大路径是不能再向两端延伸的路径。即若 P=v1→v2→⋯→vkP = v_1 \to v_2 \to \cdots \to v_kP=v1v2vk 是极大路径,则 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)=n1
  • 对于不连通图,κ(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_1G1G2G_2G2E′E'E 中的每条边都有一个端点在 G1G_1G1 中、一个端点在 G2G_2G2 中。选择 G1G_1G1 中与 E′E'E 关联的顶点集 SSS,则 ∣S∣≤∣E′∣|S| \leq |E'|SE(因为每条边至少贡献一个端点),移除 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=(vi1,vi)E。等价地,可表示为顶点的交替序列:
v0→v1→v2→⋯→vmv_0 \to v_1 \to v_2 \to \cdots \to v_mv0v1v2vm
称这条 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 FDEBCBEF 是一条从 DDDFFF 的 walk,长度为 6。注意顶点 BBBEEE 均被重复访问,边 {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 CDEBC 是一条 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 FDEF 也是一条 trail;
  • D→E→B→C→B→E→FD \to E \to B \to C \to B \to E \to FDEBCBEF 不是 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 CDEBC 是一条 path(顶点 D,E,B,CD, E, B, CD,E,B,C 互不相同)。而 D→E→B→C→BD \to E \to B \to C \to BDEBCB 不是 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=vmv0,v1,…,vm−1v_0, v_1, \ldots, v_{m-1}v0,v1,,vm1 互不相同的 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_3v1v2v1v3
简单通路 trail 边不重复 v1→v2→v3→v1→v4v_1 \to v_2 \to v_3 \to v_1 \to v_4v1v2v3v1v4
初级通路 / 路径 path 顶点不重复 v1→v2→v3→v4v_1 \to v_2 \to v_3 \to v_4v1v2v3v4
回路 closed walk 起点 = 终点 v1→v2→v3→v1→v2→v1v_1 \to v_2 \to v_3 \to v_1 \to v_2 \to v_1v1v2v3v1v2v1
简单回路 closed trail 边不重复,起点 = 终点 v1→v2→v3→v4→v2→v1v_1 \to v_2 \to v_3 \to v_4 \to v_2 \to v_1v1v2v3v4v2v1
初级回路 / 圈 cycle 顶点不重复(除起点 = 终点外) v1→v2→v3→v1v_1 \to v_2 \to v_3 \to v_1v1v2v3v1

4.7 通路长度定理

定理(通路长度定理)

  1. nnn 阶图 GGG 中,若从顶点 viv_ivivjv_jvjvi≠vjv_i \neq v_jvi=vj)存在通路,则 viv_ivivjv_jvj 一定存在长度小于或等于 n−1n - 1n1 的初级通路(路径);
  2. 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_jvivkvkvj,则删除从 vkv_kvkvkv_kvk 之间的那段回路,得到一条更短的通路。反复删除重复顶点,最终可得所有顶点互不相同的路径。由于最多有 nnn 个顶点,非回路路径长度 ≤n−1\leq n - 1n1;回路最多经过 nnn 个不同顶点后回到起点,长度 ≤n\leq nn

推论
nnn 阶图 GGG 中,若存在 viv_ivi 到自身的简单回路,则一定存在 viv_ivi 到自身长度小于或等于 nnn 的初级回路(圈)。


4.8 δ≥2\delta \geq 2δ2 则含圈(极大路径法应用)

在第 3.4 节中我们已经介绍了极大路径法,这里给出一个经典应用。

引理
GGGnnnn≥3n \geq 3n3)阶无向简单图,若 δ(G)≥2\delta(G) \geq 2δ(G)2(每个顶点度至少为 2),则 GGG一定含有圈

证明(极大路径法)

  1. GGG 中的一条极大路径 P=v1→v2→⋯→vkP = v_1 \to v_2 \to \cdots \to v_kP=v1v2vk
  2. 由于 PPP 是极大路径,v1v_1v1 的所有邻接点都在 PPP 中(否则 PPP 可延长,矛盾);
  3. δ(G)≥2\delta(G) \geq 2δ(G)2v1v_1v1 至少有两个邻接点;
  4. viv_iviv1v_1v1PPP 上最远的邻接点(i≥3i \geq 3i3,因 v2v_2v2PPPv1v_1v1 的邻接点之一,而 v1v_1v1 至少有两个邻接点),则 v1→v2→⋯→vi→v1v_1 \to v_2 \to \cdots \to v_i \to v_1v1v2viv1 构成一个长度至少为 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_1v1v2vbv1 的长度至少为 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_mv0v1vm。对于 trail 的中间顶点 viv_ivi0<i<m0 < i < m0<i<m),每次进入 viv_ivi 必然随后离开,因此每次经过 viv_ivi 贡献度 2。故中间顶点的度必为偶数。

对于端点 v0v_0v0vmv_mvm

  • v0=vmv_0 = v_mv0=vm(Euler tour),则两端点贡献也是偶数,所有顶点度为偶数(0 个奇度顶点);
  • v0≠vmv_0 \neq v_mv0=vm(Euler trail 非闭),则 v0v_0v0vmv_mvm 各多贡献 1,恰有 2 个奇度顶点。

推论:柯尼斯堡七桥问题对应的图有 4 个奇度顶点,因此不存在 Euler trail。


5.3 Euler 定理(充分性)

定理(Euler’s Theorem/ Hierholz)
一个连通图 GGG 存在 Euler trail 当且仅当 GGG 中度为奇数的顶点个数为 02

  • 若奇度顶点个数为 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 个奇度顶点情形)。

  1. 找圈:由第 4.8 节引理(δ≥2\delta \geq 2δ2 则含圈),可从任意顶点出发沿未访问的边行走,由于每个顶点度为偶数(≥2\geq 22),最终必回到起点,形成一个 cycle CCC
  2. 删除圈:令 G′=G−CG' = G - CG=GC(删除 CCC 中的所有边),G′G'G 的每个连通分支仍满足偶度条件;
  3. 归纳假设:由归纳假设,G′G'G 的每个连通分支都有 Euler tour;
  4. 拼接:将 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 算法

基本思想:从起点出发,沿未访问的边随便走,直到形成一个回路;然后在该回路上寻找还有未访问边的顶点,从该顶点出发继续构造新回路,将新回路拼入旧回路。

步骤

  1. 从任意顶点 vvv 开始,沿未访问的边随意行走,直到回到 vvv,得到 cycle CCC
  2. CCC 包含所有边,结束;
  3. 否则,在 CCC 上找到一个还有未访问关联边的顶点 uuu
  4. uuu 出发继续步骤 1,得到新 cycle C′C'C
  5. C′C'C 拼接到 CCC 中(在 uuu 处"插入"),更新 CCC
  6. 重复步骤 2–5。

时间复杂度O(m)O(m)O(m),每条边仅被访问一次。

5.5.2 Fleury 算法

基本思想:除非别无选择,否则不走"桥"(删除会使图不连通的边)。

步骤

  1. 选择正确的起始顶点(奇度顶点之一,或任意顶点若全为偶度);
  2. 在当前顶点处,优先选择非桥边(即删除该边后图仍保持连通的边);
  3. 若所有关联边都是桥,则选择其中一条;
  4. 走过该边后删除之,移动到邻接顶点;
  5. 重复直到所有边被遍历。

时间复杂度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 问题时采取以下策略:

  1. 充分条件:证明"若图满足某性质,则图是 Hamiltonian 的";
  2. 必要条件:证明"若图是 Hamiltonian 的,则图必满足某性质";
  3. 特殊图类:对某些特殊图类(如完全图、二部图等)给出判定方法。

6.4 典型例子介绍

6.4.1 Hamiltonian 图的正例
图类 Hamiltonian 性 说明
完全图 KnK_nKn (n≥3n \geq 3n3) 任意排列顶点即得 Hamiltonian cycle
圈图 CnC_nCn (n≥3n \geq 3n3) 自身就是 Hamiltonian cycle
所有正多面体图 Tetrahedron、Cube、Octahedron、Dodecahedron、Icosahedron
完全二部图 Km,nK_{m,n}Km,n 当且仅当 m=n≥2m = n \geq 2m=n2 见第 8.3 节

在这里插入图片描述

6.4.2 非 Hamiltonian 图的经典反例

Petersen 图

  • 10 个顶点、15 条边;
  • 3-正则图(每个顶点度均为 3);
  • 围长(girth,最短 cycle 长度)为 5;
  • 不是 Hamiltonian 图(有路径没有圈)。
    在这里插入图片描述

证明思路(反证法):
假设 Petersen 图有 Hamiltonian cycle CCC。考虑顶点 v0v_0v0,其在 Petersen 图中有 3 个邻接顶点。由于皮特森图中不存在长度小于五的圈(穷举可知),v0v_0v0CCC 上的两个邻接顶点不能相隔太近。通过分析 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 3n3 个顶点的简单图。如果对每一对不相邻的顶点 u,v∈Vu, v \in Vu,vV,都有

deg⁡(u)+deg⁡(v)≥n\deg(u) + \deg(v) \geq ndeg(u)+deg(v)n

GGG 是 Hamiltonian 图。

条件解读

  • 条件只要求对不相邻的顶点对验证;
  • 直观含义:“如果图有足够多的边(用度和来衡量),则图是 Hamiltonian 的”;
  • 这是一个充分但非必要条件。

证明思路(反证法 + 极值性论证):

  1. 反设:假设 GGG 满足 Ore 条件但不是 Hamiltonian 图;
  2. 加边保持条件:向 GGG 中添加边不会破坏 Ore 条件(因为加边只会增加度,使不等式更容易满足);
  3. 极值图:不断加边直到得到一个极大非 Hamiltonian 图 G′G'G(再加任意一条边就变成 Hamiltonian 图);
  4. 半 Hamilton 性:由极大性,G′G'G 必含有一条 Hamiltonian path v1→v2→⋯→vnv_1 \to v_2 \to \cdots \to v_nv1v2vn(因为加任意一条边就会产生 Hamiltonian cycle);
  5. 非邻接端点v1v_1v1vnv_nvn 不相邻(否则已有 Hamiltonian cycle);
  6. Ore 条件应用deg⁡(v1)+deg⁡(vn)≥n\deg(v_1) + \deg(v_n) \geq ndeg(v1)+deg(vn)n
  7. 构造矛盾:考察 v1v_1v1 的邻接顶点集 SSSvnv_nvn 的"前驱邻接集" TTT。由鸽巢原理,存在某个 viv_ivi 使得 viv_ivi 邻接于 v1v_1v1vi−1v_{i-1}vi1 邻接于 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_1v1vivi+1vnvi1vi2v1,矛盾。
    在这里插入图片描述

7.2 Dirac 定理

定理(Dirac’s Theorem,1952)
G=(V,E)G = (V, E)G=(V,E)n≥3n \geq 3n3 个顶点的简单图。如果

δ(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,vdeg⁡(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)/2K⌈(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)=⌊(n1)/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 VSV,有

c(G−S)≤∣S∣c(G - S) \leq |S|c(GS)S

其中 G−SG - SGS 表示从 GGG 中删除 SSS 中的所有顶点及其关联边后得到的图,c(G−S)c(G - S)c(GS) 表示 G−SG - SGS连通分支数

直观理解
想象 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(GS)c(CS)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=n2

证明

  • 充分性m=n≥2m = n \geq 2m=n2):在 V1V_1V1V2V_2V2 之间交替访问即可构造 Hamiltonian cycle。
  • 必要性:设 Km,nK_{m,n}Km,n 有 Hamiltonian cycle。在 cycle 上,顶点必须在 V1V_1V1V2V_2V2 之间严格交替(因为是二部图,无内部边),所以 ∣V1∣=∣V2∣|V_1| = |V_2|V1=V2。又 K1,1K_{1,1}K1,1 只有一条边,不构成 cycle,故需 m=n≥2m = n \geq 2m=n2

推论(非 Hamiltonian 二部图例子)
K12,13K_{12,13}K12,13∣V1∣=12,∣V2∣=13|V_1| = 12, |V_2| = 13V1=12,V2=13)不是 Hamiltonian 图。


8.5 Petersen 图非 Hamilton 性再述

Petersen 图满足上述所有必要条件(连通度条件 c(G−S)≤∣S∣c(G-S) \leq |S|c(GS)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| = 13U=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(GS)S(取 ∣S∣=4|S| = 4S=4),6>46 > 46>4,故不存在 Hamiltonian cycle;
  • 4×n4 \times n4×n 棋盘(n≥4n \geq 4n4):类似分析,删除中间两行的棕色方格后产生 ≥n+1\geq n + 1n+1 个连通分支,而 ∣S∣=n|S| = nS=n,故不存在 Hamiltonian cycle。

9.2 旅行商问题(Travelling Salesman Problem, TSP)

问题描述
给定一组城市和每对城市之间的距离,求一条最短的路线,使得:

  • 从某城市出发;
  • 恰好访问每个城市一次;
  • 最终回到出发城市。

图论建模

  • 将城市看作顶点;
  • 将城市间的道路看作边,距离作为边的权重;
  • 问题转化为:在带权完全图中寻找权重最小的 Hamiltonian cycle。

与 Hamilton 问题的关系

  • TSP 是 Hamiltonian cycle 问题的加权优化版本
  • 决策版本(“是否存在长度 ≤L\leq LL 的 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_ivivjv_jvj长度为 kkk 的通路(walk)数目。

应用

  • 判断连通性:若 P=I∨A∨A2∨⋯∨An−1P = I \lor A \lor A^2 \lor \cdots \lor A^{n-1}P=IAA2An1 是全 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}CycleClosed PathClosed TrailClosed Walk
Path⊊Trail⊊Walk\text{Path} \subsetneq \text{Trail} \subsetneq \text{Walk}PathTrailWalk


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(n3)
典型反例 柯尼斯堡七桥图 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(逆不成立)}DiracOreBondy-Chvaˊtal(逆不成立)


10.4 注意事项

  1. Walk ≠\neq= Trail ≠\neq= Path:这三者的区分是图论容易混淆的地方。核心区别在于:walk 无任何限制;trail 要求边不重复;path 要求顶点不重复。许多定理只对 path 成立,不能随意推广到 walk 或 trail。

  2. 简单回路 ≠\neq=:简单回路只要求边不重复,允许顶点重复;圈要求除起点=终点外所有顶点互不相同。"8"字形的回路是简单回路但不是圈。

  3. Euler 与 Hamilton 的本质区别:前者遍历边,后者遍历顶点。一个是"线性可解",一个是"NP-完全"。不要混淆二者的条件和结论。

  4. 闭 path 与 cycle 的区别:闭 path 只要求 v0=vmv_0 = v_mv0=vm,中间顶点可能重复;cycle 要求 v0,v1,…,vm−1v_0, v_1, \ldots, v_{m-1}v0,v1,,vm1 全不相同。因此闭 path ⊋\supsetneq cycle。

  5. "至少有一条边"的约束:cycle 定义中要求至少一条边,这排除了单个顶点(长度为 0 的"自环"情况)。C3C_3C3(三角形)是最小的 cycle。

  6. Ore 条件的验证范围:Ore 定理只要求对不相邻的顶点对验证度和条件。若两个顶点已经相邻,则无需检验。

  7. Hamilton 必要条件的局限:连通度条件 c(G−S)≤∣S∣c(G-S) \leq |S|c(GS)S、度为 2 顶点约束等都是"必要不充分"的。Petersen 图满足所有常见必要条件但仍非 Hamiltonian。

  8. 二部图 Hamiltonian 性的特殊处理:二部图的 Hamiltonian cycle 必须在两个部分集之间严格交替,因此 ∣U∣=∣V∣|U| = |V|U=V 是必要条件。对于完全二部图 Km,nK_{m,n}Km,n,这个条件也是充分的(当 m=n≥2m = n \geq 2m=n2 时)。

  9. 握手定理的适用范围:握手定理适用于所有图(包括有环、有平行边的图),只需注意环对度的贡献为 2。

  10. TONCAS 原则:Euler 定理是图论中 TONCAS(“The Obvious Necessary Conditions are Also Sufficient”)原则的经典体现。Hamilton 问题则是反例——必要条件并不充分。


Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐