]> mj.ucw.cz Git - saga.git/blobdiff - mst.tex
More of the prolog.
[saga.git] / mst.tex
diff --git a/mst.tex b/mst.tex
index 449d8909d1cf9b7d74bc839105fa90a31a387372..efc4d63238fe433e81007b922e78d9487b477198 100644 (file)
--- a/mst.tex
+++ b/mst.tex
@@ -185,6 +185,18 @@ $T_1$ and $T_2$ must be identical.
 When $G$ is a graph with distinct edge weights, we will use $\mst(G)$ to denote
 its unique minimum spanning tree.
 
+The following trivial lemma will be often invaluable:
+
+\lemman{Edge removal}
+Let~$G$ be a~graph with distinct edge weights and $e$ any its edge
+which does not lie in~$\mst(G)$. Then $\mst(G-e) = \mst(G)$.
+
+\proof
+The tree $T=\mst(G)$ is also a~MST of~$G-e$, because every $T$-light
+edge in~$G-e$ is also $T$-light in~$G$. Then we apply the uniqueness of
+the MST of~$G-e$.
+\qed
+
 \paran{Comparison oracles}\id{edgeoracle}%
 To simplify the description of MST algorithms, we will assume that the weights
 of all edges are distinct and that instead of numeric weights we are given a~comparison oracle.
@@ -206,14 +218,14 @@ Another useful consequence is that whenever two graphs are isomorphic and the
 isomorphism preserves the relative order of weights, the isomorphism applies to their MST's as well:
 
 \defn
-A~\df{monotone isomorphism} of two weighted graphs $G_1=(V_1,E_1,w_1)$ and
+A~\df{monotone isomorphism} between two weighted graphs $G_1=(V_1,E_1,w_1)$ and
 $G_2=(V_2,E_2,w_2)$ is a bijection $\pi: V_1\rightarrow V_2$ such that
 for each $u,v\in V_1: uv\in E_1 \Leftrightarrow \pi(u)\pi(v)\in E_2$ and
 for each $e,f\in E_1: w_1(e)<w_1(f) \Leftrightarrow w_2(\pi[e]) < w_2(\pi[f])$.
 
 \lemman{MST of isomorphic graphs}\id{mstiso}%
 Let~$G_1$ and $G_2$ be two weighted graphs with distinct edge weights and $\pi$
-their monotone isomorphism. Then $\mst(G_2) = \pi[\mst(G_1)]$.
+a~monotone isomorphism between them. Then $\mst(G_2) = \pi[\mst(G_1)]$.
 
 \proof
 The isomorphism~$\pi$ maps spanning trees onto spanning trees and it preserves
@@ -313,7 +325,7 @@ the minimum spanning tree of the input graph.
 To prove that the procedure stops, let us notice that no edge is ever recolored,
 so we must run out of black edges after at most~$m$ steps. Recoloring
 to the same color is avoided by the conditions built in the rules, recoloring to
-a different color would mean that the an edge would be both inside and outside~$T_{min}$
+a different color would mean that the edge would be both inside and outside~$T_{min}$
 due to our Red and Blue lemmata.
 
 When no further rules can be applied, the Black lemma guarantees that all edges
@@ -369,7 +381,7 @@ contains two or more original trees.
 \cor
 The algorithm stops in $\O(\log n)$ iterations.
 
-\lemma
+\lemma\id{borcorr}%
 Bor\o{u}vka's algorithm outputs the MST of the input graph.
 
 \proof
@@ -380,7 +392,8 @@ we do not need the Red rule to explicitly exclude edges.
 
 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$.
+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). 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,
@@ -396,7 +409,7 @@ We assign a label to each tree and we keep a mapping from vertices to the
 labels of the trees they belong to. We scan all edges, map their endpoints
 to the particular trees and for each tree we maintain the lightest incident edge
 so far encountered. Instead of merging the trees one by one (which would be too
-slow), we build an auxilliary graph whose vertices are the labels of the original
+slow), we build an auxiliary graph whose vertices are the labels of the original
 trees and edges correspond to the chosen lightest inter-tree edges. We find connected
 components of this graph, these determine how are the original labels translated
 to the new labels.
@@ -451,7 +464,7 @@ at most one insertion and at most one deletion, so we spend $\O(m\log n)$ time i
 From this, we can conclude:
 
 \thm
-Jarn\'\i{}k's algorithm finds the MST of a~given graph in time $\O(m\log n)$.
+Jarn\'\i{}k's algorithm computes the MST of a~given graph in time $\O(m\log n)$.
 
 \rem
 We will show several faster implementations in section \ref{iteralg}.
@@ -487,7 +500,7 @@ so~$T$ must be the~MST.
 \qed
 
 \impl
-Except for the initial sorting, which in general takes $\Theta(m\log m)$ time, the only
+Except for the initial sorting, which in general requires $\Theta(m\log m)$ time, the only
 other non-trivial operation is the detection of cycles. What we need is a~data structure
 for maintaining connected components, which supports queries and edge insertion.
 This is closely related to the well-known Disjoint Set Union problem:
@@ -543,7 +556,7 @@ We will study dynamic maintenance of connected components in more detail in Chap
 
 While the classical algorithms are based on growing suitable trees, they
 can be also reformulated in terms of edge contraction. Instead of keeping
-a forest of trees, we can keep each tree contracted to a single vertex.
+a~forest of trees, we can keep each tree contracted to a single vertex.
 This replaces the relatively complex tree-edge incidencies by simple
 vertex-edge incidencies, potentially speeding up the calculation at the
 expense of having to perform the contractions.
@@ -570,14 +583,10 @@ Then $G'$~has the same MST as~$G$.
 \proof
 Every spanning tree of~$G'$ is a spanning tree of~$G$. In the other direction:
 Loops can be never contained in a spanning tree. If there is a spanning tree~$T$
-containing a~removed edge~$e$ parallel to an edge~$e'\in G'$, exchaning $e'$
-for~$e$ makes~$T$ lighter. \qed
-
-\rem Removal of the heavier of a pair of parallel edges can be also viewed
-as an application of the Red rule on a two-edge cycle. And indeed it is, the
-Red-Blue procedure works on multigraphs as well as on simple graphs and all the
-classical algorithms also do. We would only have to be more careful in the
-formulations and proofs, which we preferred to avoid.
+containing a~removed edge~$e$ parallel to an edge~$e'\in G'$, exchanging $e'$
+for~$e$ makes~$T$ lighter. (This is indeed the multigraph version of the Red
+lemma applied to a~two-edge cycle, as we will see in \ref{multimst}.)
+\qed
 
 \algn{Contractive version of Bor\o{u}vka's algorithm}\id{contbor}
 \algo
@@ -587,7 +596,7 @@ formulations and proofs, which we preferred to avoid.
 \:While $n(G)>1$:
 \::For each vertex $v_k$ of~$G$, let $e_k$ be the lightest edge incident to~$v_k$.
 \::$T\=T\cup \{ \ell(e_k) \}$. \cmt{Remember labels of all selected edges.}
-\::Contract $G$ along all edges $e_k$, inheriting labels and weights.\foot{In other words, we ask the comparison oracle for the edge $\ell(e)$ instead of~$e$.}
+\::Contract all edges $e_k$, inheriting labels and weights.\foot{In other words, we ask the comparison oracle for the edge $\ell(e)$ instead of~$e$.}
 \::Flatten $G$, removing parallel edges and loops.
 \algout Minimum spanning tree~$T$.
 \endalgo
@@ -604,7 +613,7 @@ out in time~$\O(m_i)$.
 \proof
 The only non-trivial parts are steps 6 and~7. Contractions can be handled similarly
 to the unions in the original Bor\o{u}vka's algorithm (see \ref{boruvkaiter}):
-We build an auxillary graph containing only the selected edges~$e_k$, find
+We build an auxiliary graph containing only the selected edges~$e_k$, find
 connected components of this graph and renumber vertices in each component to
 the identifier of the component. This takes $\O(m_i)$ time.
 
@@ -661,7 +670,7 @@ algorithms as well. The following lemma shows the gist:
 
 \lemman{Contraction of MST edges}\id{contlemma}%
 Let $G$ be a weighted graph, $e$~an arbitrary edge of~$\mst(G)$, $G/e$ the multigraph
-produced by contracting $G$ along~$e$, and $\pi$ the bijection between edges of~$G-e$ and
+produced by contracting~$e$ in~$G$, and $\pi$ the bijection between edges of~$G-e$ and
 their counterparts in~$G/e$. Then: $$\mst(G) = \pi^{-1}[\mst(G/e)] + e.$$
 
 \proof
@@ -683,10 +692,10 @@ which obviously works in multigraphs as well.)
 In the previous algorithm, the role of the mapping~$\pi^{-1}$ is of course played by the edge labels~$\ell$.
 
 \paran{A~lower bound}%
-Finally, we will show a family of graphs where the $\O(m\log n)$ bound on time complexity
+Finally, we will show a family of graphs for which the $\O(m\log n)$ bound on time complexity
 is tight. The graphs do not have unique weights, but they are constructed in a way that
 the algorithm never compares two edges with the same weight. Therefore, when two such
-graphs are monotonely isomorphic (see~\ref{mstiso}), the algorithm processes them in the same way.
+graphs are monotonically isomorphic (see~\ref{mstiso}), the algorithm processes them in the same way.
 
 \defn
 A~\df{distractor of order~$k$,} denoted by~$D_k$, is a path on $n=2^k$~vertices $v_1,\ldots,v_n$
@@ -740,7 +749,16 @@ to finish on the remaining complete graph. Each iteration runs on a graph with $
 edges as every $H_{a,k}$ contains a complete graph on~$a$ vertices.
 \qed
 
-\remn{Disconnected graphs}\id{disconn}%
+%--------------------------------------------------------------------------------
+
+\section{Lifting restrictions}
+
+In order to have a~simple and neat theory, we have introduced several restrictions
+on the graphs in which we search for the MST. As in some rare cases we are going to
+meet graphs that do not fit into this simplified world, let us quickly examine what
+happens when the restrictions are lifted.
+
+\paran{Disconnected graphs}\id{disconn}%
 The basic properties of minimum spanning trees and the algorithms presented in
 this chapter apply to minimum spanning forests of disconnected graphs, too.
 The proofs of our theorems and the steps of our algorithms are based on adjacency
@@ -755,4 +773,31 @@ for $F$-light). Edges connecting two different trees are always considered
 $F$-light. Again, a~spanning forest~$F$ is minimum iff there are no $F$-light
 edges.
 
+\paran{Multigraphs}\id{multimst}%
+All theorems and algorithms from this chapter work for multigraphs as well,
+only the notation sometimes gets crabbed, which we preferred to avoid. The Minimality
+theorem and the Blue rule stay unchanged. The Red rule is naturally extended to
+self-loops (which are never in the MST) and two-edge cycles (where the heavier
+edge can be dropped) as already suggested in the Flattening lemma (\ref{flattening}).
+
+\paran{Multiple edges of the same weight}\id{multiweight}%
+In case when the edge weights are not distinct, the characterization of minimum
+spanning trees using light edges is still correct, but the MST is no longer unique
+(as already mentioned, there can be as much as~$n^{n-2}$ MST's).
+
+In the Red-Blue procedure, we have to avoid being too zealous. The Blue lemma cannot
+guarantee that when a~cut contains multiple edges of the minimum weight, all of them
+are in the MST. It will however tell that if we pick one of these edges, an~arbitrary
+MST can be modified to another MST that contains this edge. Therefore the Blue rule
+will change to ``Pick a~cut~$C$ such that it does not contain any blue edge and color
+one of its lightest edges blue.'' The Red lemma and the Red rule can be handled
+in a~similar manner. The modified algorithm will be then guaranteed to find one of
+the possible MST's.
+
+The Kruskal's and Jarn\'\i{}k's algorithms keep working. This is however not the case of the
+Bor\o{u}vka's algorithm, whose proof of correctness in Lemma \ref{borcorr} explicitly referred to
+distinct weights and indeed, if they are not distinct, the algorithm will occasionally produce
+cycles. To avoid the cycles, the ties in edge weight comparisons have to be broken in a~systematic
+way. The same applies to the contractive version of this algorithm.
+
 \endpart