有向图和无向图的环检测

Posted mdumpling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有向图和无向图的环检测相关的知识,希望对你有一定的参考价值。

1.无向图

并查集:检查每一条边的两个端点是否是相同的连通子图,如果是相同的,说明存在环;

深度遍历:使用邻接矩阵,只需要用一个数组标记是否访问过,如果访问过且不是该节点的父节点,则有环;

广度优先:可以;

2.有向图

拓扑排序:用一个队列记录入度为0的点,然后将他们去除时,另边的另一头节点的入度减一,不断记录入度为0的点,

     若最后没有入度不为0的点,则没有环,否则有环;不断的插入队尾,循环;

深度遍历:和无向图不同的是,我们不能直接和无向图的深度遍历一样,因为有可能出现,一个节点同时是2个节点的

       孩子节点,但这个时候不是环,所以需要去除标记,或者使用三种标记:0代表节点没有访问过,-1代表节点

         被访问过一次,但它还有孩子节点未被访问完,1代表该节点的深度遍历已经结束;这种方法比较巧妙,不需要

         去除标记;

广度优先:不可以,深度优先记录的是经过的路径,环出现在经过的路径上;

 

以上是关于有向图和无向图的环检测的主要内容,如果未能解决你的问题,请参考以下文章

求解最小环

无向图和有向图的详细讲解

无向图的深度优先搜索和广度优先搜索

uva 10792 无向图的边双连通分量

数据结构-图的概念

无向图的强连通分量