Algorithm 图中的圈检测
可能重复:Algorithm 图中的圈检测,algorithm,graph,graph-theory,Algorithm,Graph,Graph Theory,可能重复: 谁能给我一个教程,算法,。。。用于检测图中的循环 我找到了几种算法并实现了它们,但没有检测到所有的周期 我认为DFS将完成您的工作,因为我们标记了已访问的节点,如果我们再次找到该节点,则会有一个循环BFS alg。也可以。我认为它比DFS更容易实现,因为它将已访问/待访问节点保持在队列中。更容易检查某个节点是否已被访问。从更数学的角度来看: 输入:图G=(V,E) 假设图形不是不相交的(每两个顶点之间存在一条路径) 计算图的T(有简单的算法可以做到这一点) 设E'是E的一个子集,不
谁能给我一个教程,算法,。。。用于检测图中的循环 我找到了几种算法并实现了它们,但没有检测到所有的周期
我认为DFS将完成您的工作,因为我们标记了已访问的节点,如果我们再次找到该节点,则会有一个循环BFS alg。也可以。我认为它比DFS更容易实现,因为它将已访问/待访问节点保持在队列中。更容易检查某个节点是否已被访问。从更数学的角度来看: 输入:图G=(V,E)
警告:如果您的输入图有v个顶点和e个边,则有2^(e-v+1)-1个不同的循环!这太多了-您可能不想显式地写出所有的问题。我认为问题在这里,尽管被标记为“已回答”,但回答不正确。@Cygn这不是允许DUP的理由。只需转到那里,通过发布一条评论来“加热”这个问题,说明有一个实现可以检测python库中名为
networkx
的图形中的所有周期。它使用起来真的很简单!我在下面的帖子中给出了一个详细的答案:这种方法是不正确的。以这个例子1->22->31->3
现在,我们做dfs(1)。这将调用dfs(2)并将2标记为已访问。这将调用dfs(3)并将3标记为已访问。现在将再次从节点1调用dfs(3),并且由于已经访问了它,您将错误地推断它是一个循环