6.4 Splay-Trees als Suchb¨aume
In diesem Abschnitt untersuchen wirSplay-Trees, eine Datenstruktur, die den MFR-Ansatz auf B¨aume ¨ubertr¨agt:
Wird auf ein Element durch eine Operation zugegriffen, so wird dieses im Splay-Tree in geeigneter Weise zur Wurzel bef¨ordert, um, sollten weitere Zugriffe auf dieses Element folgen, diese zu beschleunigen.
Wir untersuchen hier Splay-Trees alsSuchb¨aume, d.h. die Schl¨ussel stammen aus einem total geordneten Universum, und innerhalb des Splay-Trees soll die Invariante
“Knoten im lUb ≤k(x) ≤Knoten im rUb“
gelten.
Ansonsten ist ein Splay-Tree eininterner bin¨arer Suchbaum.
Wir benutzenRotationen, um unter Beibehaltung der Invariante einen Schl¨ussel n¨aher zur Wurzel zu bewegen, und zwar Einfach- und Doppelrotationen.
Beispiel 55
JJ
A
JJ B
@
@
s @@
s
J CJ b
a
⇒
JJ
B
JJ C
@
@ s
@@ s
J AJ
a b
Beispiel 55
J J
JJ B
J J
JJ C
@@ s a @@
sb
JJ
JJ D H HH c s
JJ
J AJ
HH H d s
J J
JJ E
HH H es
JJ
JJ F
J J
JJ C
J J
JJ D
@@ sb
@@ sa
JJ
JJ B
H HH c s
JJ
J AJ
HH H d s
J J
JJ E
HH H es
JJ
JJ
⇒
FBeispiel 55
J J
JJ C
J J
JJ D
@@ sb
@@ sa
JJ
JJ B
H HH c s
JJ
J AJ
HH H d s
J J
JJ E
HH H es
JJ
JJ F
JJ
J DJ
@
@ sb
JJ
J CJ HH H as
JJ
J AJ
JJ
J BJ
@
@ s c
H HH ds
JJ
JJ E
H HH es
JJ
J FJ
⇒
Beispiel 55
J J
JJ D
@@ sb
J J
JJ C HH H as
J J
JJ A
J J
JJ B
@@ s c
H HH ds
JJ
J EJ
HH H es
J J
JJ F
J J
JJ C
J J
JJ D
@@ b s @@
JJ
JJ E sd H HH as s c
@@
JJ
JJ A
JJ
JJ B
HH H es
J J
JJ F
⇒
Beispiel 55
JJ
J CJ
JJ
J DJ
@
@ b s @@
J J
JJ E sd H HH as s c
@@
J J
JJ A
J J
JJ B
H HH es
JJ
J FJ
J J
JJ C
J J
JJ D
@@ b s @@
ds
JJ
JJ E
H HH se
JJ
J FJ XX
XX XX
as s
c
H HH
JJ
J
AJ
JJ
J BJ
⇒
6.4.1 Die Splaying-Operation
Ein Knoten, auf den zugegriffen wird (Splay(x, T)), wird durch eine Folge von einfachen und doppelten Rotationen an die Wurzel bewegt.
Wir unterscheiden die folgenden F¨alle:
1 (zig):x ist Kind der Wurzel vonT: einfache Rotation
JJ
A
JJ B
@
@
s @@
s
J CJ b
a
⇒
JJ
B
JJ C
@
@ s
@@ s
J AJ
a b
2 (zig-zig): x hat Großvater g(x) und Vater p(x);x und p(x) sind jeweils linke (bzw. rechte) Kinder ihres Vaters.
J J
JJ A
J J
JJ B
@@ s x @@
s y=p(x)
JJ
JJ C
@
@ z=g(x)=p(y)s
JJ
J DJ p pp p
J J
JJ B
J J
JJ A
@@ sx
@@ sp(x)=y
JJ
JJ C
@
@ sg(x)=z
JJ
J DJ
pp pp
J J
JJ C
J J
JJ D
@@ sz
@@ sy
JJ
JJ B
@
@ xs
JJ
J AJ
&
bzw.
x=linkes Kind x=rechtes Kind
Doppelrotation
3 (zig-zag): x hat Großvater g(x) und Vater p(x),x ist linkes (rechtes) Kind von p(x), p(x) ist rechtes (linkes) Kind von g(x).
JJ B CJJ
@
@ xs
@@
J AJ y=p(x)s
HH H
JJ D z=g(x)s
⇒
JJ A BJJ
@
@ s
y HHH xs
JJ C DJJ
@
@ sz
Beispiel 56
F¨uhre die Splaying-Operation jeweils mit dem eingekreisten Element durch:
@s
@ s
@@ s
@@ s@s
@
s s s s
e 1)zigzig
2)zigzag 3)zigzag 4)zigzig
s s s
s s s s s
e 1)zigzig 2)zigzig 3)zigzig 4)zig
@s
@ s@s
@ s@s
@ s@s
@ s
e
1)zigzag 2)zigzag 3)zigzag 4)zig
6.4.2 Amortisierte Kostenanalyse der Splay-Operation Jeder Knoten habe ein Gewichtw(x)>0. Das Gewicht tw(x)des Unterbaums mit Wurzelxist die Summe der Gewichte aller Knoten im Unterbaum. Setze
Rangr(x) = log(tw(x)) Potenzial eines Baumes T =X
x∈T
r(x)
Lemma 57
SeiT ein Splay-Tree mit Wurzelu,x ein Knoten inT. Die amortisierten Kosten f¨ur Splay(x, T) sind
≤1 + 3(r(u)−r(x)) =O
logtw(u) tw(x)
.
Beweis:
Induktion ¨uber die Folge von (Doppel)Rotationen:
Berechner und r0,twund tw0, die Rang- bzw. Gewichtsfunktion vor und nach einem Rotationsschritt. Wir zeigen, dass die amortisierten Kosten im
Fall 1 (zig)≤1 + 3(r0(x)−r(x)) und in den
F¨allen 2 und 3 (zig-zig bzw. zig-zag) ≤3(r0(x)−r(x)) sind.
y sei der Vater vonx,z der Großvater (falls er existiert).
Beweis (Forts.):
1 Fall:
JJ A BJJ
@
@ s x
J CJ
HH H y s
⇒
J AJJJ B CJJ
@
@ sy
HH H x s
Amortisierte Kosten:
≤1 +r0(x) +r0(y)−r(x)−r(y)
≤1 +r0(x)−r(x), dar0(y)≤r(y)
≤1 + 3(r0(x)−r(x)), dar0(x)≥r(x)
Beweis (Forts.):
2 Fall:
JJ A BJJ
@
@ s x @@
s y
J CJ
@@ zs
JJ D p pp p
JJ C DJJ
@
@ sz
@@ sy
J BJ
@@ sx
JJ A
pp pp
⇒
Amortisierte Kosten:
≤2 +r0(x) +r0(y) +r0(z)−r(x)−r(y)−r(z)
= 2 +r0(y) +r0(z)−r(x)−r(y), da r0(x) =r(z)
≤2 +r0(x) +r0(z)−2r(x), da r0(x)≥r0(y) und r(y)≥r(x)
Beweis (Forts.):
Es gilt, dass
2 +r0(x) +r0(z)−2r(x)≤3(r0(x)−r(x)), d.h.
2r0(x)−r(x)−r0(z)≥2.
Betrachte dazu die Funktion
f(x, y) = logx+ logy in dem Bereich
x, y >0, x+y≤1.
Beweis (Forts.):
Behauptung:f(x, y)nimmt sein eindeutiges Ma- ximum im Punkt 12,12
an. -
6
@
@ 0 1
1 x y
smax
Beweis der Behauptung:Da dielog-Funktion streng monoton wachsend ist, kann sich das Maximum der Funktion
f(x, y) = logx+ logy nur auf dem Geradensegment x+y= 1, x, y >0befinden. Dadurch erhalten wir ein neues
Maximierungsproblem f¨ur die Funktiong(x) = log(x) + log(1−x) auf diesem Geradensegment. Dag(x) an den R¨andern gegen −∞
strebt, muss es sich um ein lokales Maximum handeln.
Beweis (Forts.):
Die einzige Nullstelle der Ableitung g0(x) = 1
lna 1
x − 1 1−x
,
wennlog = loga, ist x= 1/2(unabh¨angig von a).
Weiter ist
g00(x) =− 1 lna
1
x2 + 1 (1−x)2
.
Dag00(0.5)<0 ist, nimmt g(x) sein globales Maximum inx= 0.5 an. Insgesamt folgt, dass die Funktionf(x, y) = logx+ logy ihr globales Maximum im Bereichx, y >0,x+y≤1 an der Stelle (0.5,0.5)annimmt.
Damit ist die obige Behauptung gezeigt. Wir fahren mit dem Beweis der Absch¨atzung im Lemma fort.
Beweis (Forts.):
Damit gilt im 2. Fall:
r(x) +r0(z)−2r0(x) = log
tw(x) tw0(x)
+ log
tw0(z) tw0(x)
≤ −2,
da
tw(x) +tw0(z)≤tw0(x).
Beweis (Forts.):
3 Fall:
JJ B CJJ
@
@ xs
@@
J AJ
s
y HHH JJ D zs
⇒
JJ A BJJ
@
@ s
y HHH xs
JJ C DJJ
@
@ sz
Amortisierte Kosten:
≤2 +r0(x) +r0(y) +r0(z)−r(x)−r(y)−r(z)
≤2 +r0(y) +r0(z)−2r(x), da r0(x) =r(z)und r(x)≤r(y)
≤2(r0(x)−r(x)), da 2r0(x)−r0(y)−r0(z)≥2. (Letzteres folgt aus der Behauptung ¨uber f(x, y) wie im 2. Fall.)
Beweis (Forts.):
Die Gesamtbehauptung des Lemmas folgt dann durch Aufaddieren der amortisierten Kosten f¨ur die einzelnen Schritte
(Teleskop-Summe).