8.2.3 Pfad-Kompression mit gewichteter Union (zweite Verbesserung)
Wir betrachten eine Folge von k Find- und Union-Operationen auf
einer Menge mit n Elementen, darunter n − 1 Union.
Implementierung: Gewichtete Union f¨ ur Pfad-Kompression:
@
@ I
@
@ I
@
@ I
s s
s s
s s
s s
e c
b d a
y x
z
@
@ I
@
@ s I
s s
s s
s C
B D A
E
Union
⇒
@
@ I
@
@ I
@
@ I
s s
s s
s s
s s
e c
b d a
y z
x
@
@ I
@
@ I X X X X X X X X y
s s
s s
s C
B D A
E
Implementierung: Find f¨ ur Pfad-Kompression:
@
@ @
@
@ @
Q Q Q Q
Q Q Q Q
@
@ @ I
@
@ @ I
@
@ @ I
3
A A A K
A A A K
Q Q Q Q k
t
t t
t t
t t
t
t t
t
t t
t t t
e
c d
a b
y z
x
a y
d
b z
e c x
Find(c)
(Pfadkompression) ⇒
Bemerkung:
Nach Definition ist
log
∗n = min{i ≥ 0; log log log . . . log n
| {z }
i log’s
≤ 1}
Beispiel 72
log
∗0 = log
∗1 = 0 log
∗2 = 1
log
∗3 = 2
log
∗16 = 3 da 16 = 2
22log
∗2
65536= 5 da 65536 = 2
2222
Satz 73
Bei der obigen Implementierung ergibt sich eine amortisierte Komplexit¨ at von O(log
∗n) pro Operation.
Beweis:
Sei T
0der (endg¨ ultige) In-Baum, der durch die Folge der Union’s, ohne die Find ’s, entstehen w¨ urde (also keine Pfad-Kompression).
Ordne jedem Element x drei Werte zu:
rank(x):= H¨ ohe des Unterbaums in T
0mit Wurzel x class(x):=
i ≥ 1 falls a
i−1< rank(x) ≤ a
iist (i ≥ 1) 0 falls rank(x) = 0
Dabei gilt: a
0= 0, a
i= 2
2..2 i 20en
f¨ ur i ≥ 1.
Setze zus¨ atzlich a
−1:= −1.
* *
* *
* *
H H H Y
H H H Y
t
t t t t t t
t t
0 1
2 3
4 5
6 0
0
X X X y
X X X y
X X X y
XX X z class 1
class 2
class 3
class 0
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p
p p p p p p p pp pp
p pp p pp pp pp p pp pp pp pp pp pp pp pp pp
Beweis (Forts.):
dist(x) ist die Distanz von x zu einem Vorfahr y im
momentanen Union/Find-Baum (mit Pfad-Kompression), so dass class(y) > class(x) bzw. y die Wurzel des Baumes ist.
Definiere die Potenzialfunktion Potenzial := c X
x
dist(x), c eine geeignete Konstante > 0
Beweis (Forts.):
Beobachtungen:
i) Sei T ein Baum in der aktuellen Union/Find-Stuktur (mit Pfad-Kompression), seien x, y Knoten in T, y Vater von x.
Dann ist class(x) ≤ class(y).
ii) Aufeinander folgende Find(x) durchlaufen (bis auf eine)
verschiedene Kanten. Diese Kanten sind (im wesentlichen)
eine Teilfolge der Kanten in T
0auf dem Pfad von x zur
Wurzel.
Beweis (Forts.):
Amortisierte Kosten Find(x):
Sei x
0→ x
1→ x
2. . . x
k= r der Pfad von x
0zur Wurzel. Es gibt h¨ ochstens log
∗n-Kanten (x
i−1, x
i) mit class(x
i−1) < class(x
i). Ist class(x
i−1) = class(x
i) und i < k (also x
i6= r), dann ist
dist(x
i−1) vor der Find(x)-Operation ≥ 2, nachher gleich 1.
Damit k¨ onnen die Kosten f¨ ur alle Kanten (x
i−1, x
i) mit class(x
i−1)
= class(x
i) aus der Potenzialverringerung bezahlt werden. Es ergeben sich damit amortisierte Kosten
O(log
∗n)
Beweis (Forts.):
Amortisierte Gesamtkosten aller (n − 1)-Union’s:
ppppp ppppp ppppp pppppp
pppppp ppp s s r
x ppppp ppppp
ppppp pppppp pppppp ppp s r
0ppppp ppppp ppppp pppppp
pppppp ppp s s r
x pppppp
pppppp ppp s r
0⇒ T1 < T
2
T
1T
2c g
c g c g
c g c g c g
Die gesamte Potenzialerh¨ ohung durch alle Union’s ist nach oben
durch das Potenzial von T
0beschr¨ ankt (Beobachtung ii).
Beweis (Forts.):
Potenzial(T
0) ≤
log∗n
X
i=0
ai
X
rank(x)=j=ai−1+1
dist(x)
≤
log∗n
X
i=0
ai
X
rank(x)=j=ai−1+1
n 2
ja
i≤ n
log∗n
X
i=0
a
i1 2
ai−1= n
log∗n
X
i=0
1
= O(n log
∗n) .
Die zweite Ungleichung ergibt sich, da alle Unterb¨ aume, deren
8.2.4 Erweiterungen
1) Bessere obere Schranke α(n, n), k ≥ n. Betrachte die (Variante der) Ackermannfunktion A(m, n) mit:
A(0, n) = 2n; n ≥ 0
A(m, 0) = 2; m ≥ 1
A(m + 1, n + 1) = A(m, A(m + 1, n))
s * m
n
? -
0 2 4 6 8
2 4 8 16 32
2 8 2
92
2 pppp p
Die Ackermannfunktion A(·, ·)
steigt asymptotisch schneller als
jede primitiv-rekursive Funktion.
Definition 74
Die Klasse der primitiv-rekursiven Funktionen (auf den nat¨ urlichen Zahlen) ist induktiv wie folgt definiert:
1
Alle konstanten Funktionen sind primitiv-rekursiv.
2
Alle Projektionen sind primitiv-rekursiv.
3
Die Nachfolgerfunktion auf den nat¨ urlichen Zahlen ist primitiv-rekursiv.
4
Jede Funktion, die durch Komposition von primitiv-rekursiven Funktionen entsteht, ist primitiv-rekursiv.
5