码迷,mamicode.com
首页 > 移动开发 > 详细

tarjan与有向图联通性__强连通分量,追溯值

时间:2019-01-09 11:42:41      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:运用   算法   tarjan算法   追溯   节点   dfs序   维护   路径   完全   

  对于一个有向图,若任意两个节点x,y都有x到y的路径和y到x的路径,称它为强联通图.一个有向图的极大强联通子图被称为强联通分量.这里的极大与无向图里的极大双联通子图类似,对于一个极大强联通子图A,不存在子图B也是双联通子图且A?B.

  求有向图的强连通分量又要运用到tarjan算法.先对于有向图中的边进行定义:dfs确定dfs序后,对于一个x指向y的边,如果x是y的父节点称为树枝边,x是y的祖先(x位于y到根节点的路径上)称为前向边,y是x的祖先(y位于x到根节点的路径上)称为后向边.这四种都不是的话称为横叉边.可以发现树枝边们一定可以组成前向边的等效的路径,所以前向边没有用,完全可以删去.后向边一定能和树枝边组成一个环,从而构成一圈强连通的节点,美滋滋.最后一种横向边能构成环当且仅当y有到达x的路径.如何找到后向边与横向边构成的环呢?栈又出场了.

  我们在dfs(代码中指tarjan)的时候维护一个栈,要求当访问x的时候栈内存放x的祖先和访问过的节点里存在路径到达x的祖先的节点们,

tarjan与有向图联通性__强连通分量,追溯值

标签:运用   算法   tarjan算法   追溯   节点   dfs序   维护   路径   完全   

原文地址:https://www.cnblogs.com/qywyt/p/10242446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!