From: Martin Mares Date: Sat, 19 Apr 2008 15:39:40 +0000 (+0200) Subject: Boruvka steps. X-Git-Tag: printed~75 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=3ca44dcf441e97d58f98e719cc837aeb27b69fab;p=saga.git Boruvka steps. --- diff --git a/PLAN b/PLAN index f4a4f51..723d98b 100644 --- a/PLAN +++ b/PLAN @@ -61,7 +61,6 @@ Spanning trees: - 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) diff --git a/adv.tex b/adv.tex index 3f1ae00..b5ca232 100644 --- a/adv.tex +++ b/adv.tex @@ -373,15 +373,13 @@ show a~faster integer algorithm soon.) 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}). @@ -641,7 +639,7 @@ on~$T$. The algorithm runs in linear time, for example because trees are planar (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$ diff --git a/mst.tex b/mst.tex index 06a1af8..871d92d 100644 --- a/mst.tex +++ b/mst.tex @@ -584,7 +584,7 @@ at the beginning of the $i$-th iteration by $G_i$ (starting with $G_0=G$) and th of vertices and edges of this graph by $n_i$ and $m_i$ respectively. \lemma\id{contiter}% -The $i$-th iteration of the algorithm (also called the Bor\o{u}vka step) can be carried +The $i$-th iteration of the algorithm (also called the \df{Bor\o{u}vka step}) can be carried out in time~$\O(m_i)$. \proof diff --git a/opt.tex b/opt.tex index fc80d9e..98464e9 100644 --- a/opt.tex +++ b/opt.tex @@ -1011,7 +1011,7 @@ resulting graph. \:$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$.