强连通分支、桥和割点 - 北京大学人工智能实验室.pptVIP

  • 2
  • 0
  • 约1.93千字
  • 约 21页
  • 2017-04-23 发布于天津
  • 举报

强连通分支、桥和割点 - 北京大学人工智能实验室.ppt

强连通分支、桥和割点 - 北京大学人工智能实验室.ppt

有向图的强连通分支;定 义;Korasaju算法;(a)为有向图G,其中的阴影部分是G的强连通分支,对每个顶点都标出了其发现时刻与完成时刻,黑色边为深度优先搜索的树 枝; (b)G的转置图GT 依次以b,c,g,h为起点做DFS, 得到4个强连通分量 ;算法复杂度分析;Kosarajus algorithm;Tarjan 算法;Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。既然强连通分量是深搜树的一棵子树,要找到一个分量,只要找到树根( 连接不同分量的桥的前端顶点) ,然后取出其所属分量的顶点即可。 当深搜过程中遇到一个分量,首先发现的顶点v肯定是树根,由于分量是一棵子树,且分量间顶点可互达,那么其他顶点肯定能由v 发起的路径到达,那么其他节点都是v的子孙。 定义dfn数组,dfn[u] 表示u在深度优先遍历中的序号 我们定义 low 数组,low[v] 表示,从v出发经过v 的子孙形成的路径和一条回退边,能够到达的最浅层次的顶点的序号。注意这里到达的顶点必须是可用的,我们说当一个分量完成,其包括的顶点全部设置为不可用。其实如果边是一条不同子树之间的横跨边,它到达的顶点肯定是不可用的,因为那个点已经属于另一个分量。 参考:/lewutian/archive/2009/08/30/4499657.aspx ; 在dfs过程中,遇到新点令其df

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档