删除有向图中的重复边

时间:2018-06-02 15:40:25

标签: algorithm graph

给定有向图,如果两个节点之间存在备用路径,则删除两个节点之间的边。例如:给定a-> b,b-> c,a-> c,除去a-> c。是否有一种有效的算法来计算那些被删除边的数量?

1 个答案:

答案 0 :(得分:0)

来自wiki Strongly connected component

  

有向图是非循环的,当且仅当它没有强连接的具有多个顶点的子图时,因为有向循环强连接且每个非平凡的强连通分量至少包含一个有向循环。

您可以使用Tarjan's strongly connected components algorithm查找SCC。然后从每个组件中删除一条边。

接下来,您需要迭代整个过程,因为每个非常重要的强连接组件至少包含一个定向循环。

一般来说,计数循环数是NP难的,好像你可以在多项式时间内计算所有循环,那么你也可以检测出哈密顿循环的存在。但是Hamiltonian path是NP难的。