【数据结构】求有向图强连通分量的方法

求有向图强连通分量的方法

首先强连通分量的定义是:

在有向图中,若有一对顶点V和W,从V到W和从W到V之间都有路径,则称这两个顶点式强连通的。若图中任意一对顶点都是强连通的,则称此图为强连通图。有向图中的极大强连通子图称为有向图的强连通分量。

值得注意的是,由于单个顶点不存在顶点之间的路径问题,所以单个顶点构成的图是强连通图,称为平凡的强连通图。

由定义可知,有向图中的极大强连通子图称为有向图的强连通分量,强调在有向图中每一对顶点间都存在双向路径。

因此求强连通分量的数量,可以找到入度或出度为0的顶点,然后删除该顶点和其对应的弧,直到不存在入度或出度为0的顶点。

删掉的顶点以及剩下的有向图,就是强连通分量

例如上图,将1号结点以及对应的弧删掉后,剩下的图找不到入度或出度为0的顶点,因此改图的强连通分量有2个

相关推荐
珹洺1 小时前
C++从入门到实战(十三)C++函数模板与类模板初阶讲解
开发语言·数据结构·c++·算法
ElseWhereR2 小时前
合并两个有序链表 - 简单
数据结构·链表
yuhao__z5 小时前
代码随想录算法训练营第五十六天| 图论2—卡码网99. 岛屿数量(dfs & bfs)
算法·深度优先·图论
阳洞洞10 小时前
leetcode 24. 两两交换链表中的节点
数据结构·leetcode·链表
zhangxueyi11 小时前
Java实现堆排序算法
java·数据结构·算法
Non importa12 小时前
【初阶数据结构】树——二叉树——堆(中)
java·c语言·数据结构·学习·算法
代码程序猿RIP13 小时前
【C语言干货】野指针
c语言·开发语言·数据结构·c++·算法
士别三日&&当刮目相看13 小时前
数据结构*队列
数据结构
我想进大厂14 小时前
洛谷---P1629 邮递员送信
c++·算法·图论
阿沁QWQ14 小时前
哈希表的设计
数据结构·散列表