Tarjan算法总结
Tarjan算法总结 关于学习 《算法竞赛进阶指南》 前言 Tarjan算法能在线性时间内求出无向图的 割点 和 桥 ,进一步可求出无向图的 双连通分量 。并且能在有向图中求出有向图的 强连通分量 、 必经点和必经边 。 只打算给自己复习用,233. Tarjan算法 几个定义: 时间戳:其实就是dfs序 在图的深度优先遍历过程中,按照每个节点第一次被访问的时间顺序, 依次给予 N 个节点 1-N 的整数标记,该标被称为时间戳,记为 dfn[u] 追溯值: 设 subtree(u) 表示搜索中以 x 为根的子树 low[u] 是下述所有节点时间戳的最小值 是 subtree(u) 中的节点 通过 一条 不在搜索树上的边,可以到达 subtree(u) 的节点 关于追溯值的计算: 先令 \(low_u = dfn_u\) v 没有被访问过, \(low[u]=min(low[u], low[v])\) v 被访问过了, \(low[u]=min(low[u], dfn[v])\) Tarjan算法结束, 无向图的割点和桥 割点定义: 给定无向连通图 G=(V,E) 若对于 x ∈ V,从图中删去节点 x 以及所有与 x 关联的边后,G 分裂成两个或两个以上不相连的子图,则称 x 为 G 的割点 若 u 不是搜索树的根节点 (深搜起点),则 x 是割点当且仅当搜索 树上存在 v