找出定向图是否单方面连接的有效算法?

时间:2015-11-05 13:10:27

标签: algorithm

是否有任何有效的算法可以找出定向图是否是单边连接的?单边连接意味着图中从一个顶点到另一个顶点的路径不超过一条。感谢。

1 个答案:

答案 0 :(得分:0)

其实我认为你的定义是错误的,我重新检查了几个来源,我发现directed graph is connected (or "unilaterally connected") if there is a path between any two vertices

还有

strictly unilaterally connected if it is not strongly connected

(和信息:it is "strongly connected" if there is a path in both directions between any two vertices

它实际上并没有说“一条路”。 scrictly单边连接只说如果有一条从A到B的路径,就没有从B到A的路径(但是从A到B仍然可以有10条路径)

Alghorithms:

对于“not strict”变体,您可以尝试在每个节点上执行DFS。当DFS在节点“X”上完成时,记住未到达的所有节点“Y1,Y2,Y3 ......”。对于所有这些,如果你对它们运行DFS,它们必须达到X,否则图形不是单方面连接

对于“严格”变体,它几乎是相同的,但您还必须检查节点“Z1,Z2,Z3” - 节点“X”到达 - 当您对它们运行DFS时,不得达到X.

复杂性:

DFS本身是O(n + k)(n是节点,k是边缘),你必须运行n次(在每个节点上),因此复杂度为O((n+k)*n)

如果您希望最大复杂度仅与节点相关,则也可以。

最大边数为O(k) = O(n^2),因此最大复杂度为O((n+n^2)*n) = O(n^3)