Tarjan算法初探 (1):Tarjan如何求有向图的强连通分量 (2)

具体代码实现时可以维护一个Low[V]  Low[V]记录的是V所属于的强连通分量的根节点的dfs序  由dfs序可知强连通分量的根节点的dfs序是整个强连通分量中最小的 那么搜索完后只需要判断Low[V]是否等于V的dfs序即可知V是否为强连通分量的根节点 而显然Low[V]=min(Low[to],Low[V]),to∈V的子节点 而当V连接的是已经在栈中的点V\'时则Low[V]=min(Low[V],V\'的dfs序) 

算法时间复杂度:

显然Tarjan算法中每一点都只会进栈一次出栈一次 而每一个节点都会遍历它的所有边 故Tarjan算法求有向图中的强连通分量的时间复杂度为T(n+m)

代码以后补齐:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjfgz.html