是否有一种方法可以计算O(nlogn)的任何MST中包含的所有边的集合?
其中n定义为| V(G)|
我尝试修改Prim,Kruskal并使用Circle属性,但找不到任何解决方案。
答案 0 :(得分:0)
如果我正确理解了您的问题,则希望获得一组至少出现在一个MST中的所有边。
很明显,算法的运行时间必须在结果集中的边沿数量上下限。
让我们看一下图Kn
(有关更多信息,请访问https://en.wikipedia.org/wiki/Complete_graph)
图中有O(n^2)
条边,并将所有权重设置为1。
现在,我们所需要做的就是证明该图中的每个边都出现在至少一个MST中,因此找到该集合的算法必须以O(n^2)
为下界。
证明很简单,以e = (vi,vj)
为边,我们可以轻松构造包含e
的MST。让我们分别命名为vi, vj
-v1, v2
。为了简单起见,以及所有其他顶点v3, ..., vn
。 (v1, v2), (v2, v3), ..., (vn-2, vn-1)
是MST。
因此,在这种情况下,所有边缘都在所需的集合中,并且有O(n^2)
个边缘,因此该算法无法执行O(nlogn)