确定无向图是否为树的最佳算法

时间:2011-12-03 12:01:02

标签: graph-algorithm

确定无向图是否为树的最佳算法的时间复杂度是什么?

我们可以说Big-oh(n),n个顶点??

2 个答案:

答案 0 :(得分:5)

是的,是O(n)。在有向图中使用深度优先搜索有3种类型的非树边 - 交叉,后退和前进。

对于无向的情况,唯一的非树边缘是后边缘。所以,你只需要搜索后边缘。

简而言之,选择一个起始顶点。遍历并继续检查遇到的边是否是后边缘。如果你找到了n-1个树边而没有找到后边缘,然后用尽边缘,你就是黄金。

(只是为了澄清 - back edge是已经遇到另一端顶点的那个 - 并且由于无向图的属性,另一端的顶点将是现在的祖先正在构造的树中的节点。)

答案 1 :(得分:2)

是的,是O(n)。

选择一个起始节点,并执行深度优先遍历。如果您多次访问节点,则它不是树。