8.2.3 Pfad-Kompression mit gewichteter Union (zweite

Werbung
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.
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
286/304
Implementierung: Gewichtete Union für Pfad-Kompression:
xs
As
@
I
@
I
ys
Bs
@sE
@sz
@
I
@
I
Cs
as
@D
s
@sb
@
I
cs
@sd
es
Union
⇒
EADS
ľErnst W. Mayr
x sX
yX
@
I XXXX
ys
XXsA
@sz
@
I
@
I
Bs
as
@sb
@sE
@
I
@
I
cs
@sd C s
@D
s
es
8.2 Union-Find-Datenstruktur
287/304
Implementierung: Find für Pfad-Kompression:
xt
xt
I
@
@
Q
Q
kQ
3
yt
AKAQ
@tz
Q
Q c
Find(c)
y
t b t Atz Q
Qt
@
@
I
@
@
(Pfadkompression)
AKA
at
@
@tb
a
e
d
t
t
At
@
I
@
ct
@td
et
⇒
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
288/304
Bemerkung:
Nach Definition ist
log∗ n = min{i ≥ 0; log log log . . . log n ≤ 1}
{z
}
|
i log ’s
Beispiel 72
log∗ 0 = log∗ 1 = 0
log∗ 2 = 1
log∗ 3 = 2
log∗ 16 = 3
log∗ 265536 = 5
EADS
ľErnst W. Mayr
da 16 = 22
2
da 65536 = 22
8.2 Union-Find-Datenstruktur
2
22
289/304
Satz 73
Bei der obigen Implementierung ergibt sich eine amortisierte
Komplexität von O(log∗ n) pro Operation.
Beweis:
Sei T 0 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:
rank(x):= Höhe des Unterbaums in T 0 mit Wurzel x
i ≥ 1 falls ai−1 < rank(x) ≤ ai ist (i ≥ 1)
class(x):=
0
falls rank(x) = 0
.2
2.
Dabei gilt: a0 = 0, ai = 2
Setze zusätzlich a−1 := −1.
EADS
ľErnst W. Mayr
i 20 en
für i ≥ 1.
8.2 Union-Find-Datenstruktur
290/304
p pp p p
class 3 y
X Xp p p
p
p
6 t p pp p p
p p
p
p
* H
Yp p
p
p p p p p 5 t p p pHHt0
class 2 X
p
y Xp p
p
*
Y
p p H
p p
p
H
4 t
p p Ht0 p p p
p p
p p
p p
p
*
p
p
p
p p p p p 3 t p p p
p p
class 1 X
y Xp p p
p
p
p p
*
p
p
p
p
p
p
p
2 t p
p
p
p p
p p
* p p p p
X
p p p p 1 t
p pX
z
p
p
p
p
p p
p
p
class 0
*
p
p p
p p 0 p p
p pp
t 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
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
291/304
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
X
Potenzial := c
dist(x), c eine geeignete Konstante > 0
x
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
292/304
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 0 auf dem Pfad von x zur
Wurzel.
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
293/304
Beweis (Forts.):
Amortisierte Kosten Find(x):
Sei x0 → x1 → x2 . . . xk = r der Pfad von x0 zur Wurzel. 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 xi 6= r), dann ist
dist(xi−1 ) vor der Find(x)-Operation ≥ 2, nachher gleich 1.
Damit können die Kosten für alle Kanten (xi−1 , xi ) mit class(xi−1 )
= class(xi ) aus der Potenzialverringerung bezahlt werden. Es
ergeben sich damit amortisierte Kosten
O(log∗ n)
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
294/304
Beweis (Forts.):
Amortisierte Gesamtkosten aller (n − 1)-Union’s:
cgp p sp rp p
cgp p sp rp p 0
pp p p p p p p
pp pppp
p
ppp
ppp
p
pp p p p gsx p p p p p
pp p p p
ppp
pp
pp
pp c
pp
<
T1
T2
⇒
g sp r 0
c
ppp
cg
pp
r
sp
pp
ppp
ppp
ppp ppppp
p
pp
x p
pp p p cgs p p p p p T2 p
p
p
T
pp
ppp
1
Die gesamte Potenzialerhöhung durch alle Union’s ist nach oben
durch das Potenzial von T 0 beschränkt (Beobachtung ii).
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
295/304
Beweis (Forts.):
0
Potenzial(T ) ≤
∗
log
Xn
ai
X
dist(x)
i=0 rank(x)=j=ai−1 +1
≤
∗
log
Xn
ai
X
i=0 rank(x)=j=ai−1 +1
≤n
∗
log
Xn
i=0
ai
1
2ai−1
=n
n
ai
2j
∗
log
Xn
1
i=0
= O(n log∗ n) .
Die zweite Ungleichung ergibt sich, da alle Unterbäume, deren
Wurzel x rank(x) = j hat, disjunkt sind und jeweils ≥ 2j Knoten
enthalten.
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
296/304
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))
n m
0
2
4
6
? 2
4
8
16 32
8
29
2
2
*
s
8
Die Ackermannfunktion A(·, ·)
steigt asymptotisch schneller als
jede primitiv-rekursive Funktion.
2p
pp
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
297/304
Definition 74
Die Klasse der primitiv-rekursiven Funktionen (auf den natürlichen
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ürlichen Zahlen ist
primitiv-rekursiv.
4
Jede Funktion, die durch Komposition von primitiv-rekursiven
Funktionen entsteht, ist primitiv-rekursiv.
5
Jede Funktion, die durch sog. primitive Rekursion aus
primitiv-rekursiven Funktionen entsteht, ist primitiv-rekursiv.
Primitive Rekursion bedeutet folgendes Schema für die
Definition von f :
f (0, · · · ) = g(· · · )
f (n + 1, · · · ) = h(f (n, · · · ), · · · )
wobei g, h bereits primitiv-rekursive Funktionen sind.
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
298/304
Weiter wird gesetzt:
α(n, n) = min{i; A(i, i) ≥ n}
Es gilt auch eine entsprechende untere Schranke.
EADS
ľErnst W. Mayr
8.2 Union-Find-Datenstruktur
299/304
2) Variante der Pfadkompression:
Großvater
sr
s
s
s
s
xs
EADS
ľErnst W. Mayr
-s
-s
s
s
6
s
6
s
8.2 Union-Find-Datenstruktur
300/304
Kapitel III Selektieren und Sortieren
1. Einleitung
Gegeben: Menge S von n Elementen aus einem total geordneten
Universum U , i ∈ N, 1 ≤ i ≤ n.
Gesucht: i-kleinstes Element in S.
Die Fälle i = 1 bzw. i = n entsprechen der Suche nach dem
Minimum bzw. Maximum.
Der Standardalgorithmus dafür benötigt n − 1 Vergleiche.
EADS
ľErnst W. Mayr
1.0 Union-Find-Datenstruktur
301/304
Satz 75
Die Bestimmung des Minimums/Maximums von n Elementen
benötigt mindestens n − 1 Vergleiche.
Beweis:
Interpretiere Algorithmus als Turnier. Ein Spiel wird jeweils vom
kleineren Element gewonnen. Wir beobachten: Jedes Element
außer dem Gesamtsieger muss mindestens ein Spiel verloren haben
⇒ n − 1 Vergleiche notwendig.
EADS
ľErnst W. Mayr
1.0 Union-Find-Datenstruktur
302/304
Bestimmung des Vize-Meisters bzw. des zweitkleinsten
Elements
Satz 76
Das zweitkleinste von n Elementen kann mit
n + dlog2 ne − 2
Vergleichen bestimmt werden.
Beweis:
Wir betrachten wiederum ein KO-Turnier: (n − 1) Vergleiche
genügen zur Bestimmung des Siegers (Minimum).
Das zweitkleinste Element ist unter den Verlierern“ gegen das
”
Minimum zu suchen. Deren Anzahl ist ≤ dlog2 ne. Man bestimme
nun unter diesen Elementen wiederum das Minimum und erhält
damit das zweitkleinste Element in ≤ dlog2 ne − 1 weiteren
Vergleichen.
EADS
ľErnst W. Mayr
1.0 Union-Find-Datenstruktur
303/304
Lewis Carroll:
Lawn Tennis Tournaments
St. Jones Gazette (Aug. 1, 1883), pp. 5–6
Reprinted in The Complete Work of Lewis Carroll. Modern
Library, New York (1947)
Vaughan R. Pratt, Frances F. Yao:
On lower bounds for computing the i-th largest element
Proc. 14th Ann. IEEE SWAT, pp. 70–81 (1973)
Donald E. Knuth:
The art of computer programming. Vol. 3: Sorting and
searching,
3. Auflage, Addison-Wesley Publishing Company: Reading
(MA), 1997
EADS
ľErnst W. Mayr
1.0 Union-Find-Datenstruktur
304/304
Zugehörige Unterlagen
Herunterladen