1. 引言

图论是计算机科学中的重要基础之一。在图结构中,顶点(Vertex)和边(Edge)构成了图的基本元素。邻接(Adjacency)关联(Incidence) 是图论中两个核心概念,它们分别描述了顶点之间的连接关系以及顶点与边之间的归属关系。

本文将介绍这两个概念,并通过邻接矩阵、邻接表和关联矩阵三种常见图表示方法,帮助读者更深入地理解图的结构与操作。


2. 图的基本概念

一个图 $ G = (V, E) $ 由顶点集合 $ V $ 和边集合 $ E $ 构成。每条边是一个顶点对 $ (v_i, v_j) $,表示这两个顶点之间存在连接。

如下图所示,一个包含 5 个顶点和 6 条边的图:

graph-example


3. 邻接(Adjacency)

定义

如果两个顶点之间通过一条边相连,则称这两个顶点是邻接的。例如,在上述图中,顶点 $ v_1 $ 的邻接顶点是 $ v_2 $ 和 $ v_3 $。

根据邻接关系,我们可以使用以下两种方式来表示图:


3.1 邻接矩阵(Adjacency Matrix)

邻接矩阵是一个 $ |V| \times |V| $ 的二维矩阵,其中:

  • 若顶点 $ v_i $ 和 $ v_j $ 之间有边,则 $ A[i][j] = 1 $
  • 否则为 $ 0 $

例如,上述图对应的邻接矩阵如下:

v₁ v₂ v₃ v₄ v₅
v₁ 0 1 1 0 0
v₂ 1 0 1 1 0
v₃ 1 1 0 0 1
v₄ 0 1 0 0 1
v₅ 0 0 1 1 0

特点:

  • 空间复杂度:$ O(|V|^2) $
  • 建立时间复杂度:$ O(|E|) $
  • 查询边是否存在:$ O(1) $
  • 删除边:$ O(1) $

✅ 适合稠密图(边的数量接近 $ |V|^2 $)

❌ 空间浪费较大,不适合稀疏图


3.2 邻接表(Adjacency List)

邻接表是一种链式结构,每个顶点对应一个链表,链表中存储与该顶点邻接的所有顶点。

例如,上述图对应的邻接表如下:

v₁ → v₂, v₃  
v₂ → v₁, v₃, v₄  
v₃ → v₁, v₂, v₅  
v₄ → v₂, v₅  
v₅ → v₃, v₄

特点:

  • 空间复杂度:$ O(|E|) $
  • 建立时间复杂度:$ O(|E|) $
  • 查询边是否存在:$ O(|V|) $
  • 删除边:$ O(|V|) $

✅ 适合稀疏图

❌ 查询效率较低


3.3 邻接矩阵 vs 邻接表

操作 邻接矩阵 邻接表
存储空间 $ O( V
判断边是否存在 $ O(1) $ $ O(
删除边 $ O(1) $ $ O(
插入边 $ O(1) $ $ O(1) $

📌 总结:

  • 稠密图:推荐使用邻接矩阵
  • 稀疏图:推荐使用邻接表

4. 关联(Incidence)

定义

在图中,如果两条边共享一个公共顶点,则它们是关联的。例如,边 $ (v_1, v_2) $ 和 $ (v_1, v_3) $ 是关联的,因为它们都连接了顶点 $ v_1 $。

另外,一个顶点与一条边是关联的,如果该顶点是这条边的两个端点之一。因此,关联可以表示为一个顶点和一条边的组合 $ {v, e} $。


4.1 关联矩阵(Incidence Matrix)

关联矩阵是一个 $ |V| \times |E| $ 的矩阵,行表示顶点,列表示边:

  • 若顶点 $ v_i $ 是边 $ e_j $ 的端点,则 $ M[i][j] = 1 $
  • 否则为 $ 0 $

例如,上述图的关联矩阵如下:

e₁ e₂ e₃ e₄ e₅ e₆
v₁ 1 1 0 0 0 0
v₂ 1 0 1 1 0 0
v₃ 0 1 1 0 1 0
v₄ 0 0 0 1 0 1
v₅ 0 0 0 0 1 1

特点:

  • 空间复杂度:$ O(|V||E|) $
  • 建立时间复杂度:$ O(|E|) $

📌 用途:

  • 主要用于理论图论研究,如图的关联着色(Incidence Coloring)
  • 实际应用较少,因其空间开销较大

5. 总结

本文介绍了图论中的两个基本概念:邻接关联,并分别介绍了它们在图表示中的应用方式:

  • 邻接:描述顶点之间的连接关系,可通过邻接矩阵或邻接表表示
  • 关联:描述顶点与边之间的归属关系,可通过关联矩阵表示

📌 不同表示方式的适用场景:

表示方式 优点 缺点 适用场景
邻接矩阵 查询、修改快 空间大 稠密图
邻接表 空间小 查询效率低 稀疏图
关联矩阵 结构清晰,适合理论研究 空间复杂度高 图论研究、算法分析

✅ 在实际开发中,选择合适的图表示方式可以显著提升性能,尤其在处理大规模图数据时。


原始标题:Graph Adjacency and Incidence