- rename theorem on Minimality by order
- introduce Cut rule and Cycle rule earlier
- Lemma: deletion of a non-MST edge does not alter the MST
-- use the name "Boruvka step"
Related:
- practical considerations: katriel:cycle, moret:practice (mention pairing heaps)
As we already noted, the improved Jarn\'\i{}k's algorithm runs in linear time
for sufficiently dense graphs. In some cases, it is useful to combine it with
another MST algorithm, which identifies a~part of the MST edges and contracts
-the graph to increase its density. For example, we can perform several
-iterations of the Contractive Bor\o{u}vka's algorithm and find the rest of the
-MST by the Active Edge Jarn\'\i{}k's algorithm.
+the graph to increase its density. For example, we can perform several Bor\v{u}vka
+steps and find the rest of the MST by the Active Edge Jarn\'\i{}k's algorithm.
\algn{Mixed Bor\o{u}vka-Jarn\'\i{}k}
\algo
\algin A~graph~$G$ with an edge comparison oracle.
-\:Run $\log\log n$ iterations of the Contractive Bor\o{u}vka's algorithm (\ref{contbor}),
- getting a~MST~$T_1$.
+\:Run $\log\log n$ Bor\o{u}vka steps (\ref{contbor}), getting a~MST~$T_1$.
\:Run the Active Edge Jarn\'\i{}k's algorithm (\ref{jarniktwo}) on the resulting
graph, getting a~MST~$T_2$.
\:Combine $T_1$ and~$T_2$ to~$T$ as in the Contraction lemma (\ref{contlemma}).
(Theorem \ref{planarbor}). We therefore spend $\O(n)$ comparisons in it.
As~$T'$ has~$n$ leaves and it is a~complete branching tree, it has at most~$n$ internal vertices,
-so~$n(T')\le 2n$ as promised. Since the number of passes of the Bor\o{u}vka's
+so~$n(T')\le 2n$ as promised. Since the number of iterations of the Bor\o{u}vka's
algorithm is $\O(\log n)$, the depth of the Bor\o{u}vka tree must be logarithmic as well.
For each query path $T[x,y]$ we find the lowest common ancestor of~$x$ and~$y$
\:$G_A \= (G / \bigcup_i C_i) \setminus R^\C$. \cmt{the contracted graph}
\:$F_A \= \msf(G_A)$ calculated by the Iterated Jarn\'\i{}k's algorithm (\ref{itjar}).
\:$G_B \= \bigcup_i F_i \cup F_A \cup R^\C$. \cmt{combine subtrees with corrupted edges}
-\:Run two iterations of the Contractive Bor\o{u}vka's algorithm (\ref{contbor}) on~$G_B$,
+\:Run two Bor\o{u}vka steps (iterations of the Contractive Bor\o{u}vka's algorithm, \ref{contbor}) on~$G_B$,
getting a~contracted graph~$G_C$ and a~set~$F_B$ of MST edges.
\:$F_C \= \mst(G_C)$ obtained by a~recursive call to this algorithm.
\:Return $F_B \cup F_C$.