year = "2003",
url = "citeseer.ist.psu.edu/katriel03practical.html"
}
+
+@article{ alstrup:nca,
+ title={{Nearest common ancestors: a survey and a new distributed algorithm}},
+ author={Alstrup, S. and Gavoille, C. and Kaplan, H. and Rauhe, T.},
+ journal={Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures},
+ pages={258--264},
+ year={2002},
+ publisher={ACM Press New York, NY, USA}
+}
+
+@article{ gabow:mst,
+ title={{Efficient algorithms for finding minimum spanning trees in undirected and directed graphs}},
+ author={Gabow, H.N. and Galil, Z. and Spencer, T. and Tarjan, R.E.},
+ journal={Combinatorica},
+ volume={6},
+ number={2},
+ pages={109--122},
+ year={1986},
+ publisher={Springer}
+}
+
+@Unpublished{ eisner:tutorial,
+ author = {Jason Eisner},
+ title = {State-of-the-Art Algorithms for Minimum Spanning
+ Trees: A Tutorial Discussion},
+ note = {Manuscript available online (78 pages), University of Pennsylvania},
+ year = 1997,
+ url = {http://cs.jhu.edu/~jason/papers/#ms97},
+}
+
+@article{ aho:lca,
+ title={{On finding lowest common ancestors in trees.}},
+ author={Aho, A. V. and Hopcroft, J. E. and Ullman, J. D.},
+ journal={SIAM Journal on Computing},
+ volume={5},
+ pages={115--132},
+ year={1976}
+}
rediscovered several times.
Recently, several significantly faster algorithms were discovered, most notably the
-$\O(m\beta(m,n))$-time algorithm by Fredman and Tarjan \cite{ft:fibonacci} and
+$\O(m\timesbeta(m,n))$-time algorithm by Fredman and Tarjan \cite{ft:fibonacci} and
algorithms with inverse-Ackermann type complexity by Chazelle \cite{chazelle:ackermann}
and Pettie \cite{pettie:ackermann}.
When an edge is colored red in any step of the procedure, it is not contained in the minimum spanning tree.
\proof
-Again by contradiction. Assume that $e$ is an edge painted red as the heaviest edge
+Again by contradiction. Suppose that $e$ is an edge painted red as the heaviest edge
of a cycle~$C$ and that $e\in T_{min}$. Removing $e$ causes $T_{min}$ to split to two
components, let us call them $T_x$ and $T_y$. Some vertices of~$C$ now lie in $T_x$,
the others in $T_y$, so there must exist in edge $e'\ne e$ such that its endpoints
produce a cycle. Consider the first iteration of the algorithm where $T$ contains a~cycle~$C$. Without
loss of generality we can assume that $C=T_1[u_1v_1]\,v_1u_2\,T_2[u_2v_2]\,v_2u_3\,T_3[u_3v_3]\, \ldots \,T_k[u_kv_k]\,v_ku_1$.
Each component $T_i$ has chosen its lightest incident edge~$e_i$ as either the edge $v_iu_{i+1}$
-or $v_{i-1}u_i$ (indexing cyclically). Assume that $e_1=v_1u_2$ (otherwise we reverse the orientation
+or $v_{i-1}u_i$ (indexing cyclically). Suppose that $e_1=v_1u_2$ (otherwise we reverse the orientation
of the cycle). Then $e_2=v_2u_3$ and $w(e_2)<w(e_1)$ and we can continue in the same way,
getting $w(e_1)>w(e_2)>\ldots>w(e_k)>w(e_1)$, which is a contradiction.
(Note that distinctness of edge weights was crucial here.)
\thm\id{itjarthm}%
The Iterated Jarn\'\i{}k's algorithm finds the MST of the input graph in time
-$\O(m\mathop\beta(m,n))$, where $\beta(m,n):=\min\{ i: \log^{(i)}n < m/n \}$.
+$\O(m\timesbeta(m,n))$, where $\beta(m,n):=\min\{ i: \log^{(i)}n < m/n \}$.
\proof
Phases are finite and in every phase at least one edge is contracted, so the outer
If $m/n \ge \log^{(k)} n$, then $\beta(m,n)\le k$.
\qed
+\rem
+Gabow et al.~\cite{gabow:mst} have shown how to speed this algorithm up to~$\O(m\log\beta(m,n))$.
+They split the adjacency lists of the vertices to small buckets, keep each bucket
+sorted and consider only the lightest edge in each bucket until it is removed.
+The mechanics of the algorithm is complex and there is a~lot of technical details
+which need careful handling, so we omit the description of this algorithm.
+
+\FIXME{Reference to Chazelle.}
+
\FIXME{Reference to Q-Heaps.}
%--------------------------------------------------------------------------------
\section{Verification of minimality}
-\FIXME{\cite{pettie:onlineverify} online lower bound}
+
+\section{What we ought to cite}
+
+Eisner's tutorial \cite{eisner:tutorial}
+
+\cite{pettie:onlineverify} online lower bound
% use \para
% G has to be connected, so m=O(n)
% mention disconnected graphs
% unify use of n(G) vs. n
% Euclidean MST
-
+% Some algorithms (most notably Fredman-Tarjan) do not need flattening
\endpart