【发布时间】:2011-12-03 12:01:01
【问题描述】:
判断无向图是否为树的最佳算法的时间复杂度是多少?
我们可以说 Big-oh(n) 有 n 个顶点吗?
【问题讨论】:
标签: graph-algorithm
判断无向图是否为树的最佳算法的时间复杂度是多少?
我们可以说 Big-oh(n) 有 n 个顶点吗?
【问题讨论】:
标签: graph-algorithm
是的,它是 O(n)。有向图中的深度优先搜索有 3 种类型的非树边 - 交叉、后向和前向。
对于无向的情况,唯一的非树边是后边。因此,您只需要搜索后边缘。
简而言之,选择一个起始顶点。遍历并继续检查遇到的边缘是否是后边缘。如果你找到 n-1 个树边而没有找到后边,然后用完边,你就是金子。
(澄清一下 - back edge 是已经遇到另一端的顶点的地方 - 由于无向图的属性,另一端的顶点将是当前节点的祖先正在构建的树。)
【讨论】:
是的,它是 O(n)。
选择一个起始节点,进行深度优先遍历。如果您多次访问一个节点,它就不是一棵树。
【讨论】: