From: Martin Mares Date: Thu, 10 Apr 2008 15:59:35 +0000 (+0200) Subject: More ET trees. X-Git-Tag: printed~104 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=359e064258ff4819eeaaf9928fc1c7af7b3943e2;p=saga.git More ET trees. --- diff --git a/dyn.tex b/dyn.tex index 59362a6..bdaf64e 100644 --- a/dyn.tex +++ b/dyn.tex @@ -208,13 +208,13 @@ when it is invoked on the root of the tree: be used to store auxiliary data associated with the vertex. \obs -The ET sequence contains a~vertex of degree~$d$ exactly $d$~times except for the root which +The ET-sequence contains a~vertex of degree~$d$ exactly $d$~times except for the root which occurs $d+1$ times. The whole sequence therefore contains $2n-1$ elements. It indeed describes the order vertices on an~Eulerian tour in the tree with all edges doubled. Let us observe what happens -to the ET sequence when we modify the tree. +to the ET-sequence when we modify the tree. When we \em{delete} an~edge $uv$ from the tree~$T$ (let $u$~be the parent of~$v$), the sequence -$\Eul(T) = AuvBvuC$ (with no~$u$ nor~$v$ in~$B$) splits to two ET sequences $AuC$ and $vBv$. +$\Eul(T) = AuvBvuC$ (with no~$u$ nor~$v$ in~$B$) splits to two ET-sequences $AuC$ and $vBv$. If there was only a~single occurrence of~$v$, it corresponded to a~leaf and thus the second sequence should consist of $v$~alone. @@ -222,25 +222,35 @@ sequence should consist of $v$~alone. to $wBwCvAw$. If $w$~was a~leaf, the sequence changes from $vAwCv$ to $wCvAw$. If $vw$ was the only edge of~$T$, the sequence $vw$ becomes $wv$. -\em{Joining} the roots of two trees by a~new edge makes their ET sequences $vAv$ and~$wBw$ +\em{Joining} the roots of two trees by a~new edge makes their ET-sequences $vAv$ and~$wBw$ combine to $vAvwBwv$. Again, we have to handle the cases when $v$ or~$w$ has degree~1 separately: $v$~and~$wBw$ combine to $vwBwv$, and $v$~with~$w$ makes $vwv$. If any of the occurrences that we have removed from the sequence was designated, there is always a~new occurrence of the same vertex that can stand in its place and inherit the auxiliary data. -The ET trees will represent the ET sequences by $(a,b)$-trees with the parameter~$a$ set upon +The ET-trees will represent the ET-sequences by $(a,b)$-trees with the parameter~$a$ set upon initialization of the structure and with $b=2a$. We know from the standard theorems of $(a,b)$-trees (see for example \cite{clrs}) that the depth of a~tree with $n$~leaves is always $\O(\log_a n)$ and that all basic operations including insertion, deletion, search, splitting and joining the trees run in time $\O(a\log_a n)$ in the worst case. -We will use the ET trees to maintain a~spanning forest of the current graph. The auxiliary data of +We will use the ET-trees to maintain a~spanning forest of the current graph. The auxiliary data of each vertex will hold a~list of edges incident with the given vertex, which do not lie in the forest. Such edges are usually called the \df{non-tree edges.} -\defnn{Eulerial Tour trees} - +\defn +An~\df{Eulerian Tour tree} is a~data structure that represents a~tree~$T$ and a~set of non-tree +edges associated with the vertices of the tree. It contains: +\itemize\ibull +\:An~$(a,b)$-tree~$Q$ whose leaves (in the usual tree order) correspond to the elements + of the ET-sequence $\Eul(T)$. Each two consecutive leaves $u$ and~$v$ are separated + by a~unique key stored in an~internal vertex of~$Q$ which is used to represent the + edge~$uv$. This way, each edge is stored in both its orientations. +\:A~mapping $\(v)$ which maps each vertex of~$T$ to the leaf of~$Q$ containing its + designated occurence. +\:Mappings $\_1(e)$ and $\_2(e)$ that map each edge of~$T$ to one of the keys inside~$Q$ +\endlist \endpart