next up previous contents
Next: Erweiterung Up: Union-Find-Datenstruktur Previous: Gewichtete Union (erste Verbesserung)

Pfad-Kompression mit gewichteten Union (zweite Verbesserung)

Problem: Folge von k Find - und Union -Operationen auf einen Operation mit n Elementen, darunter n-1 Union .

Implementierung: Gewichtete Union , Find 's für Pfad-Kompression:


\begin{picture}
(167,50)
\put(3,3){\vector(1,1){9.5}}
\put(13,13){\vector(1,1){9...
 ...0){x}}
\put(61,45){\makebox(0,0){A}}
\put(121,45){\makebox(0,0){x}}\end{picture}


\begin{picture}
(125,48)

\color {red}
 

\thicklines 
 
\put(13.70,14){\line(1,...
 ...{\huge$\Rightarrow$}}
\put(58,28){\makebox(0,0){(Pfadkompression)}}\end{picture}

Bemerkung: Nach der Definition ist $\log^* = \min \{ i \geq 1;
\underbrace{\log\log\log\dots\log{n}}_{i-\log\text{'s}} \leq 1\}$.
Beispiele:
$ \log^*0 = \log^*1=1$
$ \log^*2 = 1 $
$ \log^*3 = 2 $
$ \log^*16 = 2^{2^{2}}=3 $
$ \log^*2^{65536} = 2^{2^{2^{2^{2}}}}=5$

\fbox {\parbox[c]{12.45cm}{\textbf{Satz:}
In der obigen Situation ergibt sich ei...
 ...rtisierte Komplexit\uml {a}t
von $\mathcal{O}(\log^*n)$\space pro Operation.
}}

Beweis: Sei T' der (endgültige) In-Baum, der durch die Folge der Union 's, ohne die Find 's entstehen würde (also keine Pfad-Kompression). Ordne jedem Element x drei Werte zu:

Definiere eine geignete Potentialfunktion: Beobachtungen:
i)
Sei T ein Baum in der aktuellen Union-Find-Stuktur (mit Pfad-Kompression), seien x,y Knoten im T, y Vater von x $ \Rightarrow $ class($x)\leq $ class(y).
ii)
Aufeinander folgende Find(x) besitzen (bis auf eine) verschiedene Kanten. Diese Kanten sind (im wesentlichen) eine Teilfolge der Kanten in T' auf dem Pfad von x zur Wurzel.
Amotisierte Kosten Find(x) :
Sei $x_0 \rightarrow x_1 \rightarrow x_2 \dots x_k = r$ die Pfad von x0 zur Wurzel. Kanten (xi-1,xi) mit class(xi-1) = class(xi). Es gibt höchstens $\log^*n$-Kanten (xi-1,xi) mit class(xi-1) < class(xi). Ist class(xi-1) = class(xi) und i<k (also $x_i\neq r$), dann ist dist(xi-1) vor der Find(x) -Operation $\geq 2$, nachher gleich 1.
Damit können die Kosten für alle Kanten (xi-1,xi) mit class(xi-1)=class(xi) aus dem Potentialverringerung bezahlt werden und es ergeben sich amortisierte Kosten:

\fbox {$\mathcal{O}(\log^*n)$}

Amortisierte Kosten aller (n-1)- Union 's zusammen:


\begin{picture}
(130,27)
\multiput(15,22)(-1,-1){15}{\circle*{0.1}} 
\multiput(1...
 ...,24){\makebox(0,0){$c$}}
\put(110,24){\circle{4}}

\color {black}
 \end{picture}

Die gesamte Potentialerhöhung durch alle Union 's ist nach oben durch das Potential von T' beschränkt (Beobachtung ii).

\begin{displaymath}
\begin{split}
\text{Potential}(T') & \leq \sum_{i=0}^{log^*n...
 ...} = \sum_{i=0}^{log^*n} 1
=\mathcal{O}(n\log^*n)\\  \end{split}\end{displaymath}

$\Diamond$
next up previous contents
Next: Erweiterung Up: Union-Find-Datenstruktur Previous: Gewichtete Union (erste Verbesserung)
Abbas-Bardia Kabiri-Jarghouyeh
3/3/1999