使图形生根

时间:2014-05-07 19:27:50

标签: algorithm graph-theory directed-graph

问题的定义:节点v将被称为“root”iff对于图中的每个节点u,存在从v到u的有向路径。

给出有向图G =没有任何“根”。

我需要找到一个算法,决定我们是否可以添加一条边,以便在结果图中有一个“根”。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

计算图表的强连通组件(SCC)图表。如果该SCC图正好具有两个源A和B,则将A中任何节点的有向边添加到B中的任何节点将导致A中的每个节点成为最终图中的“根”节点。

源是没有传入边的节点。

您可以使用Tarjan's SCC algorithm在O(| V | + | E |)时间内计算SCC图。因此总体复杂度为O(| V | + | E |)。