Borůvka算法是计算图的最小生成树的标准算法之一,。
伪代码为:
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
我们将外循环的每次迭代称为一轮。在每个回合中,内部循环至少将零件数量减少一半。因此,最多有回合。在每个回合中,内部循环最多对每个边缘两次(每个分量一次)。因此,运行时间最多为。
现在假设在每个回合之后,我们删除仅连接同一组件内顶点的所有边,并且还删除组件之间的重复边,以便内部循环仅查看一些边m'<m,这是最小权重边,连接两个以前断开的组件。
此优化如何影响运行时间?
如果我们以某种方式知道在每个回合中将边缘数量减少一半,那么运行时间将得到显着改善: 。
然而,尽管优化将极大地减少检查的边的数量(最后一轮只有1个边,并且最多#个零件通常选择2个边),但尚不清楚我们如何/是否可以利用这一事实来加强分析运行时。
在最坏的情况下(一条链),您每轮将精确地删除一条边,因此您不能使用该事实来改善一般图形的边界。您可以考虑例如仅完整图。
—
Xodarap
@Xodarap如果是一条简单路径(这是链的意思吗?),则在第一轮中,至少选择一半的边缘。这些边缘将从后续的回合中删除。
—
2012年