形式陈述
本库未另行说明时,有向图 指有限简单有向图
D = ( V , A ) , A ⊆ { ( u , v ) ∈ V × V : u ≠ v } . 弧集 A 是 V 上的齐次关系 公理库 关系 Relation · Binary relation 带源集与目标集的二元关系,其底层关系图是 A×B 的子集。 。弧 ( u , v ) 从尾 u 指向头 v ,常写作 u → v 。简单性排除自环和平行弧,但 ( u , v ) 与 ( v , u ) 可以同时出现;它们是两条方向相反、彼此不同的弧。
顶点 v 的出邻域、入邻域与相应度数为
N + ( v ) = { w : ( v , w ) ∈ A } , d + ( v ) = | N + ( v ) | , N − ( v ) = { u : ( u , v ) ∈ A } , d − ( v ) = | N − ( v ) | . 每条弧恰给一个尾点贡献一次出度、给一个头点贡献一次入度,于是
∑ v ∈ V d + ( v ) = | A | = ∑ v ∈ V d − ( v ) . 长度为 k 的有向游走是顶点序列 v 0 , … , v k ,满足 ( v i − 1 , v i ) ∈ A 。顶点两两不同时得到有向路。若 k ≥ 2 、v 0 = v k 且 v 0 , … , v k − 1 两两不同,则得到有向圈。由于一对反向弧可以同时存在,本页约定允许长度为二的有向圈;这和简单无向图中的圈至少含三个顶点不同。
允许长度为零的游走后,定义
存 在 从 到 的 有 向 游 走 u ⇝ v ⟺ 存在从 u 到 v 的有向游走 . 可达关系 ⇝ 自反且传递,通常不对称。关系 u ⇝ v 且 v ⇝ u 则是等价关系,其等价类就是强连通分量。
直觉
箭头把无向的“彼此相邻”拆成“从这里可以直接走到那里”。一条弧提供一步许可,连续弧把许可复合成可达性;反向许可若没有明写,就不能从图形的连线形状中推断出来。方向因此会改变路径、连通、圈和割的含义。
入度与出度只描述一步的局部收支。一个顶点可以入度、出度都很大,却仍处在无法返回的单向区域;反过来,强连通图也无需每对顶点都有直接弧,只要沿箭头能够往返即可。判断整体行为必须追踪弧的排列,而不能只比较两组度数。
把所有箭头反转得到反向图 D rev 。从 u 到 v 的路与 D rev 中从 v 到 u 的路一一对应,这个简单对称性常把“能到达目标”的问题转成“哪些起点能到达当前点”。
例子与边界
构建步骤的先后图可令弧 P → Q 表示“步骤 P 必须先于步骤 Q 完成”。若存在有向圈,先后要求会沿箭头回到自身,拓扑构建顺序便不存在;忽略方向后看到的连通骨架无法暴露这种障碍。
设弧为 a → b , b → c , c → a ,三个顶点构成有向圈,每点入度、出度均为一。删去 c → a 后,无向骨架仍是一条连通路径,但 c 到不了 a 。再加入 b → a 只能让 a , b 互达,仍不会自动把 c 纳入同一个强连通分量。
无向图转成有向对象有两种常见操作。定向 为每条无向边只选一个方向;对称有向化则把每条 u v 换成 u → v 与 v → u 两条弧。前者可能破坏原可达性,后者精确保留无向路径,但弧数翻倍。它们都不同于原来的有限简单无向图 公理库 有限简单无向图 Graph · Finite simple undirected graph · 图 由有限顶点集与无序二元顶点子集组成的边集所确定的简单无向图。 ,使用结论时要核对模型。
若允许停留步 ( v , v ) ,需要保留自环;若同一方向的多条航班或交易必须分别计数,需要多重有向图。oriented graph 还常额外禁止反向弧对,因此不会出现长度二的有向圈。不同教材对 “simple digraph” 的约定并不完全统一,遇到二圈时应先检查定义。
推论与应用
弧关系的传递闭包正是可达关系。把强连通分量各自收缩成一点后,所得凝聚图必为有向无环图 公理库 有向无环图 Directed acyclic graph · DAG 不含有向环的有向图。 ;若凝聚图仍有有向圈,圈上的分量原本就应彼此互达,和“分量已极大”矛盾。
有向无环图允许拓扑排序 公理库 拓扑排序 Topological sort 给有向无环图顶点排列线性次序,使每条边从前指向后。 ,强连通分量把循环依赖压成可管理的块,网络流 公理库 最大流 Maximum flow 在容量与流守恒约束下最大化源到汇净流量的问题。 又在弧上加入容量并区分割的方向。三类问题都继承本页的箭头语义,却分别增加无圈性、等价类或数值约束。
程序状态、网页跳转和协议步骤都可用有向图作骨架。若弧还带动作标签,就进入标号转移系统 公理库 标号转移系统 Labeled transition system · Labelled transition system · LTS 在状态转移上标记动作,明确路径、可达性、使能动作以及终止与死锁的行为模型。 ;若边持续插删,还要另行规定动态图的更新协议。共享有向图表示并不会让运行轨迹、标签语义和算法成本自动相同。
无向路与圈 公理库 路与圈 Path and cycle in a graph 用相邻顶点序列刻画图中的行走、简单路径与首尾闭合的简单圈。 中的删绕路论证仍可用于有向游走:删除一段从某顶点回到自身的闭合子游走,不会破坏剩余弧的方向。因此只要 v 从 u 可达,就存在一条从 u 到 v 的有向简单路。
参考资料
Reinhard Diestel, Graph Theory , 5th ed., Springer, 2017, §1.10.
Douglas B. West, Introduction to Graph Theory , 2nd ed., Prentice Hall, 2001, §1.4.
Eric Lehman, F. Thomson Leighton, and Albert R. Meyer, Mathematics for Computer Science , 2018 revision, §§10.1–10.5.