【简介】
Tarjan算法是一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法。
【基本思想】
百度Tarjan
一些定义:如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。
例如,下图中,子图 {1 , 2 , 3 , 4 } 为一个强连通分量,因为顶点 1 , 2 , 3 , 4 两两可达。{ 5 } , { 6 } 也分别是两个强连通分量。
定理:在任何深度优先搜索中,同一强连通分量内的所有顶点均在同一棵深度优先搜索树中(证明去找百度啦)。
Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时