]> mj.ucw.cz Git - saga.git/commitdiff
Minor stuff.
authorMartin Mares <mj@ucw.cz>
Tue, 29 Jan 2008 14:29:39 +0000 (15:29 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 29 Jan 2008 14:29:39 +0000 (15:29 +0100)
biblio.bib
macros.tex
mst.tex

index e987e8c06776bc0048763de25ea5bc2391e7c522..f8eb29230b3fa49c651a79335e083b9dd7699ec2 100644 (file)
@@ -466,3 +466,41 @@ inproceedings{ pettie:minirand,
   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}
+}
index 7877871b71eab690f93fb489fc84d04e4630d3cb..2fe07ddb7b7179c4b94de6d1a0c8bf81e750e284 100644 (file)
@@ -40,6 +40,7 @@
 \def\mst{\mathop{\rm mst}}
 \def\deg{\mathop{\rm deg}}
 \def\timesalpha{\mskip2mu\alpha}
+\def\timesbeta{\mskip2mu\beta}
 \def\tower{\mathop\uparrow}
 
 % Footnotes
diff --git a/mst.tex b/mst.tex
index eff6a01bb085b8e8fa55dd7c35ea0aa391399011..6e2b17c882d40f2e572b6f3a85d33ab4432e3389 100644 (file)
--- a/mst.tex
+++ b/mst.tex
@@ -42,7 +42,7 @@ disciplines, the previous work was not well known and the algorithms had to be
 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}.
 
@@ -258,7 +258,7 @@ $w(e)<w(e')$. \qed
 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
@@ -345,7 +345,7 @@ It remains to show that adding the edges simultaneously does not
 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.)
@@ -1050,7 +1050,7 @@ how the algorithm could have stopped growing the tree~$R_i^j$:
 
 \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
@@ -1087,13 +1087,27 @@ at least~$\log^{(k)} n$ for some $k\in{\bb N}^+$, it runs in time~$\O(km)$.
 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)
@@ -1106,5 +1120,5 @@ If $m/n \ge \log^{(k)} n$, then $\beta(m,n)\le k$.
 % mention disconnected graphs
 % unify use of n(G) vs. n
 % Euclidean MST
-
+% Some algorithms (most notably Fredman-Tarjan) do not need flattening
 \endpart