修正的Borůvka算法的更严格分析


11

Borůvka算法是计算图的最小生成树的标准算法之一,。G=(V,E)|V|=n,|E|=m

伪代码为:

MST T = empty tree
Begin with each vertex as a component
While number of components > 1
    For each component c
       let e = minimum edge out of component c
       if e is not in T
           add e to T  //merging the two components connected by e

我们将外循环的每次迭代称为一轮。在每个回合中,内部循环至少将零件数量减少一半。因此,最多有回合。在每个回合中,内部循环最多对每个边缘两次(每个分量一次)。因此,运行时间最多为。O(logn)O(mlogn)

现在假设在每个回合之后,我们删除仅连接同一组件内顶点的所有边,并且还删除组件之间的重复边,以便内部循环仅查看一些边m'<m,这是最小权重边,连接两个以前断开的组件。

此优化如何影响运行时间?

如果我们以某种方式知道在每个回合中将边缘数量减少一半,那么运行时间将得到显着改善: 。T(m)=T(m/2)+O(m)=O(m)

然而,尽管优化将极大地减少检查的边的数量(最后一轮只有1个边,并且最多#个零件通常选择2个边),但尚不清楚我们如何/是否可以利用这一事实来加强分析运行时。


在最坏的情况下(一条链),您每轮将精确地删除一条边,因此您不能使用该事实来改善一般图形的边界。您可以考虑例如仅完整图。
Xodarap

@Xodarap如果是一条简单路径(这是链的意思吗?),则在第一轮中,至少选择一半的边缘。这些边缘将从后续的回合中删除。G
2012年

请注意,可以使用高度优化的联合查找结构之一来改进此算法。
拉斐尔

Answers:


5

可以为一般图制作测试用例,其中Borůvka的步长不会将每一步的边数减半,即使它的顶点数也减半。有趣的是,您建议的优化适用于平面图。这是因为对于平面图 i,e。总的来说,它会加快次要封闭图族的类别。|E|3|V|6|E|=O(|V|)

参考:

  • 硕士论文Claude Anderson(在第100页上,描述了Borůvka算法的最坏情况输入)。[链接]

  • “用于较小闭合图类的MST的两种线性时间算法”。数学档案40(3):315–320,2004年。[链接]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.