Tarjan算法 + kosaraju小证明哟

看的别人写的 很好,摘要几点的啦~~~:

 


 

 

 

一.概念:

1.强连通:如果在一个有向图上两个结点u,v他们相互之间至少存在一条通路,则他们是强连通的.

2.强连通图:如果有向图G任意两天都强连通,则G是强连通图.

3.强连通分量:有向非强连通图的极大强连通子图.

 


 

二.O(N+M)的Trajan, 特么的Trajan是个甜菜

1.Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量。

定义:DFN(u)为节点u搜索的次序编号(时间戳),

        Low(u)为u或u的子树能够追溯到的最早的栈中节点的次序号.那么Low(u)就是:

当DFN(u)=Low(u)时,以u为根的搜索子树上所有节点是一个强连通分量。

代码:

 

证明待续哟

 


特么tarjan的证明真不会 艹个kosaraju充数吧:其实就是一个推论的重要性:拓扑排序的逆序顺序的dfs()在G的转置图上执行时总能保证它

通往的一个强连通分量已经被访问完毕.因为它的第一次dfs完成时间戳是当前及时状态下最大的了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值