相关笔记: 10.2 图的术语与特殊图 | 10.4 连通性
概览
本节介绍了图的多种计算机表示方法,以及图的同构这一核心概念。图的表示方法包括邻接表、邻接矩阵和关联矩阵,它们各有优劣,适用于不同的应用场景。图的同构刻画了两个图在忽略顶点标签后是否具有相同的结构,判定同构是图论中的重要问题。本节还讨论了图的不变量(如顶点数、边数、度序列等),它们是判断两个图不同构的有力工具,但不存在一组已知的不变量能完全判定同构。
- 邻接表:列出每个顶点的所有邻接顶点,适合稀疏图
- 邻接矩阵: 的零一矩阵, 位置为 1 当且仅当 与 邻接,适合稠密图
- 关联矩阵: 的零一矩阵, 位置为 1 当且仅当 与 关联
- 图的同构:存在双射 ,使得 与 邻接当且仅当 与 邻接
- 图的不变量:顶点数、边数、度序列、回路长度分布等在同构下保持不变
- 同构判定:目前没有多项式时间算法,Babai (2017) 给出了拟多项式时间算法
一、知识结构总览
graph TB A["10.3 图的表示与同构 Representing Graphs and Graph Isomorphism"] --> B["图的表示方法"] A --> C["图的同构"] B --> B1["邻接表 Adjacency Lists"] B --> B2["邻接矩阵 Adjacency Matrices"] B --> B3["关联矩阵 Incidence Matrices"] B --> B4["表示方法的权衡"] B1 --> B1a["列出每个顶点的邻接顶点"] B1 --> B1b["适合稀疏图"] B2 --> B2a["零一矩阵(简单图)"] B2 --> B2b["对称性(无向图)"] B2 --> B2c["多重边/自环的推广"] B2 --> B2d["有向图的邻接矩阵"] B3 --> B3a["顶点 × 边的零一矩阵"] B3 --> B3b["多重边与自环的处理"] B4 --> B4a["稀疏图:邻接表更优"] B4 --> B4b["稠密图:邻接矩阵更优"] C --> C1["同构的定义"] C --> C2["同构的判定"] C --> C3["图的不变量"] C --> C4["算法复杂度"] C1 --> C1a["双射保持邻接关系"] C1 --> C1b["等价关系"] C2 --> C2a["邻接矩阵验证法"] C2 --> C2b["不存在通用充分必要条件"] C3 --> C3a["顶点数、边数"] C3 --> C3b["度序列"] C3 --> C3c["回路长度分布"] C3 --> C3d["不变量相同 ≠ 同构"] C4 --> C4a["NP 困难问题"] C4 --> C4b["Babai 拟多项式算法"] C4 --> C4c["实际工具 NAUTY"] C --> C5["应用"] C5 --> C5a["化学:分子图"] C5 --> C5b["电路设计验证"]
二、核心思想
核心思想
本节的核心思想是如何在计算机中高效地表示图,以及如何判断两个图是否具有相同的结构。图的表示方法的选择取决于图的稀疏程度和需要执行的操作类型。图的同构则回答了一个深层问题:两个图是否只是”换了标签”的同一个图?同构的判定没有简单的充分必要条件,但通过图的不变量可以排除大量不同构的情况。
1. 邻接表
邻接表(Adjacency Lists)
对于没有多重边的图,可以用邻接表来表示:对图中的每个顶点,列出所有与它邻接的顶点。
- 对于有向图,列出从每个顶点出发的边所指向的终端顶点
- 邻接表是图的一种紧凑表示,特别适合稀疏图(边数远小于 的图)
邻接表的构造
对于图 (顶点为 ),其邻接表为:
顶点 邻接顶点
2. 邻接矩阵
邻接矩阵(Adjacency Matrix)
设 是简单图,。将顶点列为 ,则 的邻接矩阵 (或 )是 的零一矩阵,其 位置定义为:
- 邻接矩阵依赖于顶点的排列顺序,同一图最多有 种不同的邻接矩阵
- 简单图的邻接矩阵是对称的(),且对角线全为零(无自环)
邻接矩阵的构造
设顶点按 排列,则图的邻接矩阵为:
邻接矩阵的推广
- 多重边: 位置的值等于连接 和 的边数(不再是零一矩阵)
- 自环: 位置的值等于 上的自环数
- 有向图: 当且仅当 是有向边。有向图的邻接矩阵不一定对称
- 所有无向图(包括多重图和伪图)的邻接矩阵都是对称的
有向图的邻接矩阵
设 是有向图,顶点列为 。邻接矩阵 定义为:
- 有向图的邻接矩阵不需要对称
- 对于有向多重图, 等于从 到 的有向边的条数
3. 关联矩阵
关联矩阵(Incidence Matrix)
设 是无向图,顶点列为 ,边列为 。 的关联矩阵 是 的零一矩阵,定义为:
- 关联矩阵的行对应顶点,列对应边
- 每一列(对应一条边)恰好有两个 1(因为每条边恰好关联两个端点)
- 多重边用具有相同 entries 的列表示
- 自环用恰好有一个 1 的列表示
关联矩阵的构造
设图有 5 个顶点 和 6 条边 ,则关联矩阵为:
4. 邻接表与邻接矩阵的权衡
稀疏图 vs 稠密图的表示选择
- 稀疏图(边数远小于 ):使用邻接表更高效。若每个顶点度数不超过常数 ,则所有邻接表共含不超过 个 entries
- 稠密图(边数超过所有可能边数的一半):使用邻接矩阵更高效。判断边 是否存在只需检查矩阵的 位置(),而邻接表需要 搜索
- 邻接矩阵的存储空间为 ,邻接表的存储空间为
5. 图的同构
图的同构(Graph Isomorphism)
简单图 和 称为同构的,如果存在一个从 到 的一一对应(双射) ,使得对于 中的所有 和 :
- 这样的函数 称为同构映射
- 同构意味着两个图在忽略顶点标签后具有完全相同的结构
- 不互相同构的两个简单图称为非同构的
- 简单图的同构是一种等价关系(自反性、对称性、传递性)
同构的判定
设 和 都是 4 顶点图。定义 ,,,。
需要验证: 中邻接的顶点对在 中也邻接, 中不邻接的顶点对在 中也不邻接。
的邻接边为 ,,,。
对应 中的边为 ,,,,这些恰好是 的所有边。因此 是同构映射。
6. 图的不变量
图的不变量(Graph Invariant)
在同构下保持不变的图的性质称为图的不变量。如果两个图在某个不变量上不同,则它们一定不同构。
常用的不变量包括:
- 顶点数
- 边数
- 度序列(将各顶点的度按非递增顺序排列)
- 各度数的顶点个数
- 回路长度分布(长度为 的简单回路的个数)
- 连通分量数
- 二部性(是否为二部图)
不变量相同不保证同构
即使两个图的所有已知不变量都相同,它们也不一定同构。目前不存在一组已知的不变量能完全判定同构。
例如,两个图都有 8 个顶点、10 条边、4 个度 2 的顶点和 4 个度 3 的顶点,但它们可能不同构。进一步检查可以发现:在其中一个图中,度 2 的顶点不与另一个度 2 的顶点邻接,而在另一个图中则存在这样的邻接关系。
利用不变量判断非同构
图 有 5 个顶点和 6 条边,所有顶点的度都 。图 也有 5 个顶点和 6 条边,但有一个度 1 的顶点 。
因为度序列不同, 和 不同构。
7. 同构判定的方法
邻接矩阵验证法
要证明 是同构映射,可以将 的邻接矩阵的行和列按 下的像重新排列,然后与 的邻接矩阵比较。若两个矩阵完全相同,则 是同构映射。
注意:如果某个特定的 不是同构映射,这不能说明 和 不同构,因为可能存在另一个对应关系是同构。
8. 同构判定的算法复杂度
同构问题的计算复杂度
- 两个 顶点图之间有 种可能的一一对应,逐一验证不切实际
- 目前最好的算法具有指数级最坏时间复杂度
- Babai (2017):给出了 时间的算法,其中 ,即拟多项式时间(介于多项式和指数之间)
- 图的同构问题是少数几个既未被证明是多项式时间可解、也未被证明是 NP 完全的 NP 问题之一
- 实际工具 NAUTY 可以在不到一秒内判定 100 个顶点的图是否同构
三、补充理解与易混淆点
补充理解
补充1:邻接矩阵与 零一矩阵的联系
简单图的邻接矩阵是一种特殊的零一矩阵,具有对称性和零对角线。在第 9 章中,零一矩阵被用来表示有向图,其定义方式与本节有向图的邻接矩阵完全一致。邻接矩阵的运算(如矩阵乘法)可以用来计算图中路径的存在性: 当且仅当从 到 存在长度为 的路径。 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 10.3. 来源:Biggs, N. (1993). Algebraic Graph Theory (2nd ed.). Cambridge University Press, Chapter 2.
补充2:关联矩阵的行和与列和
- 关联矩阵每一行(对应顶点 )的和等于 的度
- 关联矩阵每一列(对应边 )的和等于 2(对于非自环边),或等于 1(对于自环)
- 关联矩阵与其转置的乘积 的对角线元素为各顶点的度,非对角线元素为两个顶点之间的公共边数 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 10.3. 来源:Harary, F. (1969). Graph Theory. Addison-Wesley, Chapter 5.
补充3:同构的应用
- 化学:用分子图表示化学化合物,同构的分子图对应相同的化合物结构(结构异构体有不同构的分子图)
- 电路设计:用图模拟电子电路,同构判定用于验证电路布局是否与原始设计一致
- 知识产权:通过查找大型同构子图来判断一个芯片是否包含另一厂商的知识产权 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 10.3. 来源:Read, R. C. & Wilson, R. J. (1998). An Atlas of Graphs. Oxford University Press.
易混淆点
误区:不变量相同 ⇒ 同构
- ❌ 认为如果两个图的所有不变量都相同,则它们一定同构
- ✅ 不变量相同是同构的必要条件,但不是充分条件。目前不存在一组已知的不变量能完全刻画同构
- 例如:两个图可以具有相同的顶点数、边数、度序列、甚至相同的回路长度分布,但仍然不同构
误区:一个对应关系失败 ⇒ 不同构
- ❌ 尝试了一个双射 发现它不是同构映射,就断言两个图不同构
- ✅ 两个 顶点图之间有 种可能的双射,一个失败只能说明这个特定的 不是同构。需要尝试所有可能的双射或找到不变量上的差异才能断言不同构
误区:邻接矩阵不同 ⇒ 不同构
- ❌ 比较两个图的邻接矩阵发现它们不同,就断言两个图不同构
- ✅ 邻接矩阵依赖于顶点的排列顺序。同一个图可以有 种不同的邻接矩阵。只有在所有可能的排列下都无法使两个矩阵相同,才能断言不同构
误区:有向图的邻接矩阵一定对称
- ❌ 认为所有邻接矩阵都是对称的
- ✅ 只有无向图的邻接矩阵才是对称的。有向图的邻接矩阵一般不对称,因为 是边不意味着 也是边
四、习题精选
习题概览
题号范围 核心考点 难度 1-4 用邻接表表示图 ⭐ 5-8 用邻接矩阵表示图 ⭐ 9 特殊图(, , , )的邻接矩阵 ⭐⭐ 10-12 由邻接矩阵画图 ⭐ 13-15 无向图的邻接矩阵 ⭐ 16-18 由邻接矩阵画无向图 ⭐ 19-21 有向多重图的邻接矩阵 ⭐⭐ 30-35 关联矩阵的性质 ⭐⭐ 38-48 判断两图是否同构 ⭐⭐⭐ 49-50 同构的等价关系、补图同构 ⭐⭐⭐ 54-57 自补图的性质 ⭐⭐⭐⭐ 63-64 邻接矩阵/关联矩阵的同构判定 ⭐⭐⭐
题1:用邻接矩阵表示图
题目
用邻接矩阵表示完全图 和完全二部图 。
解答
:顶点为 ,每对顶点之间都有边。
:设二部为 和 ,每个 与每个 之间有边。
注意 的邻接矩阵具有分块结构 ,其中 是全 1 矩阵。
题2:由邻接矩阵画图
题目
画出邻接矩阵 (顶点为 )所表示的图,并判断它是否同构于 。
解答
由邻接矩阵可知边为:,,,。
画出的图是一个四边形 ,这正是 (4 个顶点的回路)。
因此该图与 同构(实际上就是 )。
题3:利用不变量判断非同构
题目
图 有 5 个顶点,度序列为 。图 有 5 个顶点,度序列为 。判断 和 是否同构。
解答
的度序列为 , 的度序列为 。
度序列是图的不变量。因为两个图的度序列不同,所以 和 不同构。
题4:判断同构
题目
判断以下两个图是否同构:
- :顶点 ,边为 ,,,,,,,
- :顶点 ,边为 ,,,,,,,
解答
首先,两个图都有 6 个顶点和 8 条边。
计算度序列:
- :,,,,,。度序列为
- :,,,,,。度序列为
度序列相同,不能排除同构。尝试建立双射。
注意到 中度 2 的顶点 和 不邻接,而 中度 2 的顶点 和 也不邻接。
尝试 ,。 的邻接顶点为 , 的邻接顶点为 。尝试 ,。
继续验证: 的邻接顶点为 。 的邻接顶点为 。,,需要 。
的邻接顶点为 。 的邻接顶点为 。,,需要 。
验证 :邻接顶点为 。 的邻接顶点为 。,,。全部匹配。
因此 ,,,,, 是同构映射。 和 同构。
题5:自补图
题目
证明:若 阶自补简单图存在(即 ),则 或 。
解答
有 个顶点, 有 条边。
因为 ,所以 。
又因为 且 ,所以:
即 ,因此 。
因为 是整数,所以 是整数,即 能被 4 整除。
和 是连续整数,其中恰有一个是偶数。
- 若 是偶数,则 含因子 2,还需要 或 含因子 2,即
- 若 是奇数,则 是偶数,需要 含因子 2,即 ,即
因此 或 。
解题思路提示
图表示与同构的解题方法论:
- 邻接矩阵:注意顶点排列顺序的影响,简单图对称、零对角线
- 关联矩阵:行和 = 度,列和 = 2(非自环)
- 同构判定:先比较不变量(顶点数、边数、度序列),再尝试构造双射
- 证明非同构:找到一个不变量上的差异即可
- 证明同构:需要显式构造双射并验证邻接关系保持
五、视频学习指南
视频资源
六、教材原文
教材原文
“There are many useful ways to represent graphs. As we will see throughout this chapter, in working with a graph it is helpful to be able to choose its most convenient representation.”
“The simple graphs and are isomorphic if there exists a one-to-one and onto function from to with the property that and are adjacent in if and only if and are adjacent in , for all and in .”
“A property preserved by isomorphism of graphs is called a graph invariant. For instance, isomorphic simple graphs must have the same number of vertices, because there is a one-to-one correspondence between the sets of vertices of the graphs.”
“There are no useful sets of invariants currently known that can be used to determine whether simple graphs are isomorphic.”