是否有任何有效的算法可以找出定向图是否是单边连接的?单边连接意味着图中从一个顶点到另一个顶点的路径不超过一条。感谢。
答案 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)