有没有任何方法可以快速找到无向/有向图中作为循环一部分的所有边(后边)
Is there any way to quickly find all the edges that are part of a cycle(back edges) in an undirected/directed graph?
我有一个最小生成树。我给它加了一个边。肯定形成了一个循环。我需要找到循环中的所有边,即所有的后边缘。这能多快完成?我的解决方案-例如,如果它是edge(1,4),则在所有位置向Adj(1)添加4,并每次运行dfs。例如,如果Adj(1)有2,3,5,首先在2之前加4,运行DFS。我会得到一个后边缘。然后在2和3之间加4,然后运行dfs。我得到了另一个后边缘。然后在3到5之间,以此类推。有什么更快的方法吗?
在树中,任何一对顶点之间都有一条(简单)路由。如果要添加边(i,j)
,首先在树中找到i和j之间的路径,然后就有了循环——它由该路径中的所有顶点组成(一旦添加(i,j)
作为边,就会变成一个循环)。
您正在寻找图的强连接组件,可以使用Tarjan算法(以及其他算法)找到这些组件。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何在C++中创建 2d 数组,其中一部分包含循环计数器,另一部分包含数字列表?
- 我可以在循环中引用 std::string 的一部分并将其放在外面吗?
- for循环不包括需要包含数组的一部分
- 通过指向函数的指针循环传递数组的一部分
- 有没有任何方法可以快速找到无向/有向图中作为循环一部分的所有边(后边)
- 目的 (void) 在多动作更改 for 循环的一部分
- 如何使用枚举类值作为 for 循环的一部分
- 在基于范围的循环中迭代数组的一部分
- 如何在for循环中定义多维数组的一部分