强连通分量和二部图

本文介绍了无向图的连通分量和有向图的强连通分量的概念。无向图中,连通分量是最大的连通子图。对于非连通的无向图,需要从多个顶点出发进行搜索才能遍历所有顶点。有向图的强连通分量则是每个顶点都能到达其他任何顶点的子图。寻找强连通分量可以通过深度优先搜索和图的转置实现。此外,还通过一个经典问题展示了如何结合二部图和强连通分量来解决问题。
摘要由CSDN通过智能技术生成

对于无向图G: 如果两个顶点之间有一条路径连着, 我们就说这两个顶点是连通的(无向图的边无方向性, 只要有边连着就是连通的)。 如果满足图中的任意两个顶点都是连通的, 我们就说图是连通图。 所谓的连通分量, 就是无向图中的极大连通子图。  对于连通图, 只有一个连通分量, 就是它本身。 非联通的无向图有多个连通分量。 

 如下图, 该无向图的连通分量分别是: (A L M J B F C), (D E), (G, K, H, I)



当对无向图进行遍历的时候, 如果该无向图是连通图, 只需从图的任一个顶点出发, 进行DFS(或者BFS), 便可以遍历图中所有的顶点。 对于非连通的无向图, 则需要从多个顶点出发进行搜索。 而每一次从一个新的起始点出发进行搜索得到的顶点访问序列恰为各个连通分量的顶点集合。 不难看出,对无向图进行的DFS调用的次数(指的是选择新的起始点进行DFS)就是给定无向图的连通分量的个数

对于有向图, 对应的概念强连通分量。  

若对于V中任意两个不同的顶点u和v,都存在从u到v以及从v到u的路径(注意有向图的边是有方向的),则称G强连通图(Strongly Connected Graph)。相应地有强连通分量(Strongly Connected Component)的概念。强连通图只有一个强连通分量,即是其自身;非强连通的有向图有多个强连通分量。

寻找有向图的强连通分量的算法用到了图G = (V, E)的转置。  所谓的转置就是把有向图的边进行均做反向处理

假如图G使用的是邻接链表表示的, 那么求取G的转置图像transpose(G)所需的时间就是线性时间O(V + E)。 

下面伪代码, 通过使用两次深度优先搜索计算有向图G的强连通分量(一次对原始图进行DFS, 记录下结束访问的时间。 最后再对 原始图的转置 按照结束访问节点的时间的递减顺序进行一次DFS)

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值