1. 概述

在本文中,我们将探讨计算机科学中最重要的数据结构之一——图(Graph)

我们会先介绍图论的基础知识,帮助你建立概念层面的理解。随后,我们会讨论图在机器学习应用中常见的不同类型。文章最后,你将了解什么是图、图的种类,以及图的基本组成元素的特性。

2. 图论基础

2.1 图的定义

图是由顶点(Vertex)集合边(Edge)集合构成的一种结构。要构成一个图,必须定义两个集合:顶点和边。

  • 顶点是图存在的基本单元。虽然通常认为图必须至少包含一个顶点,但这更多是惯例而非理论要求。顶点代表通过某种关系相互关联的对象。
  • 边是可选的。图可以没有边,这种图被称为空图(Empty Graph)。边表示两个顶点之间的联系,也可以是顶点到自身的连接(称为自环 Loop)。

我们通常用 V = \{v_1, v_2, ... , v_n\} 表示顶点集合,用 E = \{e_1, e_2, ... e_m\} 表示边集合。一个图 G 可以表示为 G(V, E),表示顶点和边之间的关系。

graphs set

注意:括号中两个集合的顺序是有意义的,通常是先顶点后边。比如 G(V, E)H(X, Y) 是不同的结构。

2.2 顶点的基本属性

图必须包含顶点,但边是可选的。顶点可以不连接任何边,这种顶点称为孤立顶点(Isolated Vertex)

isolated vertices

孤立顶点的度数(Degree)为 0,记作 δ(v) = 0。度数表示一个顶点连接的边的数量。

如果顶点不是孤立的,那么它的度数至少为 1。特别地,度数为 1 的顶点称为“叶子(Leaf)”,这个术语也常见于树结构中。

2.3 顶点标签

顶点可以带标签(Labeled Vertex),也可以不带(Unlabeled Vertex):

  • ✅ 带标签的顶点可以携带任意类型的数据,用于区分不同顶点。
  • ❌ 无标签顶点只能通过其连接关系来区分。

labeled vs unlabeled

此外,图中顶点的数量 |V| 被称为图的阶数(Order)

2.4 边的基本属性

边不能独立存在,它总是依附于图和顶点。每条边必须连接两个顶点,这两个顶点称为该边的端点(Endpoints)

⚠️ 有些图允许边连接多个顶点,这种结构称为超图(Hypergraph),但本文不讨论。

2.5 边的方向与自环

边可以分为有向边(Directed Edge)无向边(Undirected Edge)

  • ✅ 有向边从一个顶点指向另一个顶点,例如 e_{A,B} 表示从 A 到 B 的边。
  • ❌ 无向边双向连接两个顶点,相当于同时存在 e_{A,B}e_{B,A}

edge dir v undir

此外,如果一条边的起点和终点是同一个顶点,这种边称为自环(Loop)。不含自环的图称为简单图(Simple Graph)

2.6 图中的路径

图中的路径是由一系列边组成的连接两个顶点的序列。路径可以是:

  • 有向路径(Directed Path):由有向边构成。
  • 无向路径(Undirected Path):由无向边构成。

想象图是一个迷宫,每个顶点是交叉点,路径就是从入口到出口的路线。

一个特殊的路径是哈密尔顿路径(Hamiltonian Path),它遍历图中所有顶点一次且仅一次:

traceable

如果路径的起点和终点相同,则称为环(Cycle)。检测环的存在非常重要,因为路径查找算法可能会陷入无限循环。

路径在计算机科学中非常关键,因为它与最短路径算法(如 Dijkstra 和 A*)密切相关,这些算法广泛应用于流程优化、物流和搜索引擎等领域。

3. 图的类型

3.1 空图

空图是指没有边的图,只有顶点。例如:

empty graph

空图的大小(即边的数量)为 0。

3.2 有向图(Directed Graph)

有向图中的边具有方向性,例如 e_{A,B} 但没有 e_{B,A}

有向图非常适合建模不可逆关系,例如“用户关注某人”或“网页链接”。

mark apple

3.3 无向图(Undirected Graph)

无向图中,如果存在 e_{A,B},则一定也存在 e_{B,A}

无向图允许任意两个顶点之间自由往返。

dir undir

3.4 连通图与非连通图

  • 连通图(Connected Graph):任意两个顶点之间都存在路径。
  • 非连通图(Disconnected Graph):存在至少两个顶点之间没有路径。

connected graph

3.5 哈密尔顿连通图(Hamiltonian-Connected Graph)

这种图中任意两个顶点之间都存在哈密尔顿路径。它一定是可追踪图(Traceable Graph),但反过来不一定成立。

hamiltonian path

3.6 完全图(Complete Graph)

完全图中任意两个顶点之间都有边相连。对于阶数为 |V| 的完全图,边的数量为:

$$ |E| = \frac{|V| \cdot (|V| - 1)}{2} $$

complete graph

3.7 锦标赛图(Tournament)

锦标赛图是一种完全有向图,即任意两个顶点之间只有一条方向明确的边。

tournament graph

这种图常用于模拟比赛结构,比如体育赛事中队伍之间的胜负关系。

3.8 加权图(Weighted Graph)

加权图的边带有数值权重,表示某种度量(如距离、成本、时间等)。

weighted graph

一个典型的加权图是人工神经网络(Artificial Neural Network),其中每个边代表连接权重,每个顶点代表神经元及其激活函数。

4. 总结

本文我们介绍了图论的基本概念,包括图、顶点、边、路径等,并详细讨论了图的多种类型及其特性:

  • ✅ 图由顶点和边构成
  • ✅ 顶点可以带标签或不带标签
  • ✅ 边可以是有向或无向,也可以是自环
  • ✅ 图可以是连通、非连通、完全、有向、无向、加权等类型

理解这些基础概念,有助于在机器学习、网络分析、路径查找等场景中更有效地使用图结构。


原始标题:Introduction to Graph Theory