图论

概述

图论(Graph Theory)研究由顶点(vertex)和(edge)构成的数学结构——(graph),是离散数学的核心分支之一,也是算法导论第6篇(图算法)的数学基础。

定义

形式化定义

一个 由两个集合组成:

  • 顶点集 :有限非空集合,元素称为顶点(vertex)或节点(node)
  • 边集 :由 中元素的无序对(或有序对)构成的集合,元素称为(edge)

根据 中元素的性质,图分为两大类:

  • 无向图(undirected graph):,边无方向
  • 有向图(directed graph / digraph):,边 有方向,(tail),(head)

基本概念

图的分类

分类维度类型说明
方向性有向图 / 无向图边是否有方向
权重加权图 / 无权图边是否带有数值权重
多重性简单图 / 多重图是否允许自环和重边
连通性连通图 / 非连通图任意两顶点间是否存在路径

关键术语

  • 邻接(adjacency):若 ,则 互为邻接顶点
  • (degree):无向图中顶点 的度 = 与 关联的边数;有向图分为入度(in-degree)和出度(out-degree)
  • 路径(path):顶点序列 ,其中相邻顶点间均有边相连
  • 环/回路(cycle/circuit):起点与终点相同的路径,且边不重复
  • 连通(connected):无向图中任意两顶点间存在路径
  • 连通分量(connected component):图的极大连通子图
  • 强连通(strongly connected):有向图中任意两顶点互相可达

图的表示

  • 邻接矩阵(adjacency matrix): 矩阵 当且仅当 。空间 ,适合稠密图
  • 邻接表(adjacency list):每个顶点维护其邻居列表。空间 ,适合稀疏图

核心性质

  • 握手定理(Handshaking Lemma):无向图中所有顶点的度之和
  • 有向图中所有顶点的入度之和 出度之和
  • 任何图中度数为奇数的顶点个数必为偶数
  • 个顶点的连通无向图至少有 条边(树)

应用场景

图论是算法导论第6篇(图算法)的核心数学基础,具体应用包括:

  • 最短路径:Dijkstra算法、Bellman-Ford算法、Floyd-Warshall算法
  • 最小生成树:Kruskal算法、Prim算法
  • 网络流最大流问题、最大流最小割定理
  • 匹配二分匹配二部图上的最大匹配
  • 拓扑排序:有向无环图(DAG)的线性排列
  • 强连通分量:Tarjan算法、Kosaraju算法

参见