繁体   English   中英

在不使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM