![](/img/trans.png)
[英]How to detect if an undirected graph has a cycle and output it using BFS or DFS
[英]Determining if a graph has a cycle without using DFS
我在考试中遇到以下问题之一:
使用Kahn算法的地标排序要求该图为DAG(有向无环图)。 如果不先使用DFS / BFS,如何确定图形是否不包含循环?
我想回答这个问题太久了,我感到困惑。 谁能给我指出一种算法,该算法确定一个图形没有不使用DFS的循环,还是我应该向老师讲课?
当且仅当在卡恩算法的某个时刻没有源可供选择(并且其余图形仍然为空)时,存在一个循环
证明:
方向1 <--
:
如果存在循环,则将其设为v1->v2->v3->vk->v1
。
在算法的每个步骤中, v1,v2,...,vk
都不是源-通过归纳证明您从未删除任何这些边来通过归纳证明
方向2- -->
:
如果在卡恩算法的某个时刻,虽然算法还没有完成,但没有可供选择的源,那么每个节点(在提醒图中)都会有一个输入边。
假设没有循环,并让v1->v2->..->vk
是提醒图中最长的简单路径。
但是, v1
有一个输入边,因此存在一些节点v0
,因此v0->v1->...->vk
也是一条路径,并且由于我们假设没有循环,所以它也是一条简单的路径。
与v1- v1->..->vk
最大值矛盾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.