From: Martin Mares Date: Mon, 17 Mar 2008 13:15:16 +0000 (+0100) Subject: Wicked which's. X-Git-Tag: printed~173 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=c032a1a4a33853ff9b5b9a4b924aaf59441b9777;p=saga.git Wicked which's. --- diff --git a/PLAN b/PLAN index bd50815..05c1bc1 100644 --- a/PLAN +++ b/PLAN @@ -58,7 +58,7 @@ Spanning trees: - parallel algorithms: p243-cole (are there others?) - bounded expansion classes? - restricted cases and arborescences -- verify: mention our simplifications +- mention randomized algorithms (see remarks in Karger) Models: diff --git a/adv.tex b/adv.tex index 47f5845..9c8177f 100644 --- a/adv.tex +++ b/adv.tex @@ -39,7 +39,7 @@ of such classes in terms of their forbidden minors. \defn For a~class~$\cal H$ of graphs we define $\Forb({\cal H})$ as the class -of graphs which do not contain any of the graphs in~$\cal H$ as a~minor. +of graphs that do not contain any of the graphs in~$\cal H$ as a~minor. We will call $\cal H$ the set of \df{forbidden (or excluded) minors} for this class. We will often abbreviate $\Forb(\{M_1,\ldots,M_n\})$ to $\Forb(M_1,\ldots,M_n)$. @@ -345,7 +345,7 @@ thus by the previous theorem the operations take $\O(m+n\log n)$ time in total. For graphs with edge density at least $\log n$, this algorithm runs in linear time. \rem -We can consider using other kinds of heaps which have the property that inserts +We can consider using other kinds of heaps that have the property that inserts and decreases are faster than deletes. Of course, the Fibonacci heaps are asymptotically optimal (by the standard $\Omega(n\log n)$ lower bound on sorting by comparisons, see for example \cite{clrs}), so the other data structures can improve only @@ -621,7 +621,7 @@ to this edge and hence also to~$h$. We will simplify the problem even further: For an~arbitrary tree~$T$, we split each query path $T[x,y]$ to two half-paths $T[x,a]$ and $T[a,y]$ where~$a$ is the \df{lowest common ancestor} of~$x$ and~$y$ in~$T$. It is therefore sufficient to -consider only paths which connect a~vertex with one of its ancestors. +consider only paths that connect a~vertex with one of its ancestors. When we combine the two transforms, we get: @@ -681,12 +681,12 @@ the desired edge from~$P_p[i]$. \:For every son~$v$ of~$u$, process the edge $e=uv$: \::Construct the array of tops~$T_e$ for the edge~$e$: Start with~$T_p$, remove - the tops of the paths which do not contain~$e$ and add the vertex~$u$ itself + the tops of the paths that do not contain~$e$ and add the vertex~$u$ itself if there is a~query path which has~$u$ as its top and which has bottom somewhere in the subtree rooted at~$v$. \::Prepare the array of the peaks~$P_e$: Start with~$P_p$, remove the entries - corresponding to the tops which are no longer active. If $u$ became an~active + corresponding to the tops that are no longer active. If $u$ became an~active top, append~$e$ to the array. \::Finish~$P_e$: @@ -885,7 +885,7 @@ between normal labels and pointers. \lemman{Precomputation of tables} When~$f$ is a~function of two arguments computable in polynomial time, we can -precompute a~table of the values of~$f$ for all values of arguments which fit +precompute a~table of the values of~$f$ for all values of arguments that fit in a~single slot. The precomputation takes $\O(n)$ time. \proof @@ -931,7 +931,7 @@ Depths of all vertices and all top masks can be computed in time $\O(n+q)$. Run depth-first search on the tree, assign the depth of a~vertex when entering it and construct its top mask when leaving it. The top mask can be obtained by $\bor$-ing the masks of its sons, excluding the level of the sons and -including the tops of all query paths which have their bottoms at the current vertex +including the tops of all query paths that have their bottoms at the current vertex (the depths of the tops are already assigned). \qed @@ -991,7 +991,7 @@ We need to handle these four cases: \itemize\ibull \:\em{Small from small:} We use $\