Boruvka’s algorithm is used to find the minimum spanning tree of a graph.
(We assume that the edge weights are distinct)
The algorithm uses concepts similar to supernodes & superedges.
When , output all contracted edges. These edges form an MST.
Claim - Edge of least weight incident on a vertex . More generally, a least weight edge of a cut belongs belongs to MST.
Proof By Exchange Argument - Assume we don’t take the least edge weight of a vertex , and we instead take a heavier edge . This would still form a spanning tree, but we could drop from the set of edges picked for the spanning tree, pick edge and still end up with a spanning tree, which would have a smaller cost.
Claim - There is no such case that in an iteration, the edges chosen form a triangle (assuming edges are distinct).
Proof - Assume vertices , where the edge weights are
Without loss of generality, we can assume that vertex picks edge of weight . That inherently implies that . As we want to form a triangle, it would mean that vertex doesn’t choose the same edge, and instead chooses , hence
Therefore But if vertex 3 chooses to form the triangle, it would contradict the relation , hence a triangle can’t exist.
You can generalize this argument to prove that a cycle of edges won’t be contracted.
Hence, we know that it’s impossible for us to pick a set of edges which form a cycle, guaranteeing that the edges we contract form a spanning tree.
Claim - decreases by at least fraction of in each iteration.
Proof - Contracting an edge decreases the number of super nodes by . If we have vertices, there can be at max unique edges picked. In the worst case, each edge is picked twice, giving us a minimum possible count of , hence reducing the number of super nodes by half in each iteration.
As a result, Boruvka’s algorithm works in a time complexity of
One of the major differences between Boruvka’s and other MST finding algorithms is that Boruvka’s can be parallelized.