有向图的强连通性(未完成)

这篇博客介绍了有向图的强连通性概念,指出强连通图中任意两个顶点互相可达,并强调了环在理解中的重要性。还探讨了强连通分量,即相互强连通的顶点最大子集。接着,详细阐述了Kosaraju算法,该算法通过反向图的逆后序排列和深度优先搜索来计算有向图的强连通分量。最后,作者讨论了有向图的可达性和算法总结。
摘要由CSDN通过智能技术生成

术语

强连通

在一幅有向图中,如果从顶点v有一条有向路径到达w,则顶点w是从顶点v 可达的

如果两个顶点v和w是互相可达的,则称它们为强连通的。
如果一幅有向图中的任意两个顶点都是强连通的,则称这幅有向图是强连通图

环在强连通性的理解上起着重要的作用。两个顶点是强连通的当且仅当它们都在一个普通的有向环中。

强连通分量

强连通性将所有顶点分为了一些平等的部分,每个部分都是由相互均为强连通的顶点的最大子集组成。
这些子集称为强连通分量

一个强连通图只含有一个强连通分量,而一个有向无环图中则含有 V 个强连通分量。


Kosaraju 算法

在这里插入图片描述

我们在 算法CC 中看到过,计算无向图的连通分量只是深度优先搜索的一个简单应用。
那么在有向图中该如何高效计算强连通分量呢?

步骤如下:
– 在给定的一幅有向图G中,使用 DepthFirstOrder 来计算它的反向图 G R G^R GR 的逆后序排列。
– 在G中进行标准的深度优先搜索,但是要按照刚才计算得到的顺序而非标准的顺序来访问所有未被标记的顶点。
– 在构造函数中,所有在同一个递归 dfs() 调用中被访问到的顶点都在同一个强连通分量中,将它们按照和CC相同的方式识别出来。

/*
 * 计算强连通分量的 Kosaraju 算法
 */
public class KosarajuSCC {
   
    private boolean[] marked;    // 已访问过的顶点
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值