强连接图的最小附加

时间:2013-01-13 16:04:41

标签: algorithm graph-theory graph-algorithm

我有一组节点和它们之间的有向边集。边缘没有重量。

如何找到必须添加的最小边数以使图形强连接(即应该有从每个节点到所有其他节点的路径)?这个问题有名字吗?

3 个答案:

答案 0 :(得分:20)

这是一个非常经典的图形问题。

  1. 运行Tarjan-SCC算法等算法查找所有SCC。考虑 每个SCC作为一个新的顶点,链接这些 new之间的边缘 顶点根据原点图,我们可以得到一个新图。 显然,新图是有向无环图(DAG)。
  2. 在DAG中,找到其度为0的所有顶点,我们定义它们 {X};找到out-degree为0的所有顶点,我们定义 他们{Y}。
  3. 如果DAG只有一个顶点,则答案为0;否则,答案 是最大值(| X |,| Y |)。

答案 1 :(得分:1)

在我的头顶上,似乎最简单(最少的边缘)方式使有向图强烈连接将是一个涉及所有节点的循环;所以最小边数就是N,其中N是节点数。如果已经存在边缘,只需执行类似连接最长现有定向路径到下一个与当前路径不重叠的最长路径的操作,直到形成完整循环(一旦路径包含所有节点,连接两端以形成周期。)

不确定是否有更正式的定义,但对我来说似乎是合乎逻辑的。

答案 2 :(得分:1)

我会找到所有弱连接的组件,并将它们连接起来。

编辑:

更明确一点,这个想法是你有WCC W(1),...,W(n), 使W(i%n + 1)中的所有W(i)都可以从i=1 to n中的任何节点到达{{1}}。