强连通分量求解算法

强连通分量

有向图中,如果顶点v和w相互可达,则称这两个顶点之间强连通。一幅图中任意两点之间强连通则称这幅图为强连通图。有向图的极大强连通子图就是有向图的强连通分量(Strongly Conneted Component)。

强连通有如下性质:

(1)自反性:任意顶点v和自身是强连通的。

(2)对称性:如果v和w是强连通的,那么w和v也是强连通的。

(3)传递性:如果v和w是强连通的且w和x也是强连通的,那么v和x也是强连通的。

强连通分量即是基于强连通的性质,将相互均为强连通的顶点划分在一起构成的最大子集。强连通性是非常重要的抽象,它突出了相互关联的几组顶点(强连通分量),对事物的分类有很大帮助。

Kosaraju算法

Kosaraju算法是求解有向图连通分量较简单的算法,它需要用到原图及其转置图(转置图即所有边的方向与原图一一对应且相反)来进行深度优先搜索。既然强连通是指顶点之间相互可达,那么我们只需要求出原图的连通分量(求解图的连通分量),然后在其转置图中再执行搜寻,原图和转置图对应的每一个连通分量的交集就是我们要求的强连通分量。

在对转置图进行搜寻的过程中,起始顶点的选择需要有所限制,否则可能搜寻到其他连通分量中,这是不允许的(强连通分量只能存在于单个强连通图,即单棵树中)。Kosaraju算法巧妙地选择了“最晚离开的”顶点,因为对任意顶点v和w假设是强连通的,在第一次搜寻过程中已经得到了v→w,那么就需要证明存在路径使得w→v,即证明转置图中存在路径使得v→w。在对转置图进行深度优先搜索的过程中࿰

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值