有没有任何方法可以快速找到无向/有向图中作为循环一部分的所有边(后边)



我有一个最小生成树。我给它加了一个边。肯定形成了一个循环。我需要找到循环中的所有边,即所有的后边缘。这能多快完成?我的解决方案-例如,如果它是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算法(以及其他算法)找到这些组件。

最新更新