图论中的强连通分量、2 - SAT问题与欧拉回路
1. 强连通分量
在有向图中,强连通分量是一个重要的概念。
1.1 定义
若有向图的一个子集 $A \subset V$ 满足:对于 $A$ 中任意一对顶点 $(u, v)$,都存在一条在 $A$ 内连接 $u$ 到 $v$ 的路径,同时也存在从 $v$ 到 $u$ 的路径,那么这个子集 $A$ 就被称为强连通分量。
1.2 分量图
将强连通分量收缩为“超级顶点”后得到的图称为分量图(或简化图)。这个图是无环的,因为有向图中的每个环都恰好包含在一个强连通分量中。
1.3 算法复杂度
有几种算法可以在线性时间 $O(|V| + |E|)$ 内找出强连通分量,下面介绍两种常见的算法。
1.4 Tarjan算法
Tarjan算法(1972年提出)通过一次深度优先搜索来实现。它按照顶点开始处理的顺序对顶点进行编号,并将遇到的顶点放入一个栈中,这些顶点等待被分组到强连通分量中。一旦检测到一个强连通分量,就将其从图中移除并从栈中弹出。
该算法为每个顶点 $v$ 计算两个值:
- dfs_num[v] :顶点 $v$ 开始处理时分配的顺序编号。
- dfs_min[v] :所有不在已发现的强连通分量中且可从 $v$ 通过一系列树弧(可能后跟一条回边)到达的顶点 $u$ 的 dfs_num[u] 的最小值。其定义如下:
[
dfs_min[v] := \min_{u
超级会员免费看
订阅专栏 解锁全文
9086

被折叠的 条评论
为什么被折叠?



