Die Splay-Operation

Werbung
Algorithmen und Datenstrukturen
(Th. Ottmann und P. Widmayer)
Folien: Splay-Bäume
Autor: Sven Schuierer
Institut für Informatik
Georges-Köhler-Allee
Albert-Ludwigs-Universität Freiburg
1
Splay-Bäume
Selbstanordnungsstrategien für:
lineare Listen: Move-to-front, Transposition
Bäume: Move-to-Root (durch wiederholtes Rotieren)
Problem: Kann für beliebig lange Zugriffsfolgen
n Schritten pro Operation
Kosten von
erfordern.
( )
Splaybäume sind binäre Suchbäume, die sich durch eine
Variante der Move-to-root Strategie selbst anordnen.
AD
Splay-Bäume
Splay-Bäume
Sven Schuierer, 12. Februar 2001
1-1
2
Die Splay-Operation
T.Splay
(x):
1. Suche nach x in T
if x ist in T
then Sei p der Knoten mit Schlüssel x
else Sei p der Vater des Blattes, bei dem die Suche
endet
2. Wiederhole Operationen
zig, zig-zig, zig-zag
bis p zur Wurzel geworden ist
AD
Splay-Bäume
Die Splay-Operation
Sven Schuierer, 12. Februar 2001
2-1
3
Die Splay-Operation
Fall 1: p hat Vater 'p und 'p ist die Wurzel.
Operation zig: Rotation nach links oder rechts, die p zur
Wurzel macht.
q = 'p
!
ZZ
p ZZZD
@
D
@
D
D
DD
DD
D
DD
1 D
AD
@
D
D
DDD
D
DD
2 D
Splay-Bäume
Die Splay-Operation
D
DD
D
3 DD
p
ZZ
Z
q
D
@
D
@
D
DD
DD
1 DD
D
DD
D
DD
2 DDD
@
D
D
DDD
D
DD
3 D
Sven Schuierer, 12. Februar 2001
3-1
4
Die Splay-Operation
Fall 2:
p hat Vater 'p und Großvater ''p und p und 'p sind
beides rechte oder beides linke Söhne.
Operation zig-zig: zwei aufeinanderfolgende Rotationen
in dieselbe Richtung, die p zwei Niveaus
hinaufbewegen.
AD
Splay-Bäume
Die Splay-Operation
Sven Schuierer, 12. Februar 2001
4-1
r = ''p
QQ
QQ
q = 'p
DD
Z
Z
Z
D
p D
D
@
DD
D
DD
D
1D
D
D
D
DD
3D
@@
DDD
D
DD
2D
!
Rotation
nach rechts
bei r
q
HH
p @
DDD
D
DD
1D
!
Rotation
nach rechts
bei q
4 DD
D
@@
DDD
DDD
2D
r @
HH
DDD
DDD
3
D
@@
DDD
DDD
4D
p
QQ Q
q
ZZZ
DDD
r D
D
@
1 DDD
DDD
2 DDD
DDD
DDD
3D
@@
DDD
DDD
4D
Die Splay-Operation
Fall 3:
p hat Vater 'p und Großvater ''p und einer der beiden
Knoten p und 'p ist linker und der andere rechter Sohn
seines jeweiligen Vaters
Operation zig-zag: zwei Rotationen in entgegengesetzte
Richtungen, die p zwei Niveaus hinaufbewegen.
AD
Splay-Bäume
Die Splay-Operation
Sven Schuierer, 12. Februar 2001
4-2
r = ''p
HHH
q = 'pH
ZZ
DD
Z
D
p D
D
@
D
1D
D
!
Rotation
nach rechts
bei q
DDD
D
DD
2D
D
D
D
DD
4D
r
QQ Q
p
ZZZ
DDD
q D
D
@
1 DDD
!
Rotation
nach links
bei r
@@
DDD
D
DD
3D
D
DD
D
2 DD
DDD
DD
3 DD
p
HH
r @
DDD
DDD
1D
@@
DDD
DDD
2D
@@
DDD
DD
4 DD
q @
HH
DDD
DDD
3D
@@
DDD
DDD
4D
5
Die Splay-Operation
(x)
Wirkung von T.Splay
Fall 1: x kommt in T vor
x wird Schlüssel der Wurzel
Fall 2: x kommt nicht in T vor
symmetrischer Vorgänger (oder Nachfolger) von x
wird Schlüssel der Wurzel
AD
Splay-Bäume
Die Splay-Operation
Sven Schuierer, 12. Februar 2001
5-1
6
Beispiel
T.Splay
(11)
aaa
!!!
!
aaa
!
!
PPPP
J
P
P
P
Z
ZZZ
Z
Z
J
J
J
J
15
5
17
3
8
2
!
zig-zig
4
7
11
ZZZ
J
J
J
bb ""
b
""
Z
J
Z
Z
15
11
17
8
5
3
2
4
J
!
zig
7
J
ZZZ
J
J
bb ""
"
J
b
"
ZZZ J
J
J
11
8
15
5
3
2
AD
Splay-Bäume
Beispiel
17
7
4
Sven Schuierer, 12. Februar 2001
6-1
7
Wörterbuchoperationen
Suchen nach x in T :
1. T.Splay x
2. Vergleiche x mit Schlüssel der Wurzel
()
Einfügen von x in T :
T.Splay x
()
y ist symmetrischer Vorgänger:
DD
DD
y@
@@
1 DD
D
!
DDD
DDD
2D
x@
y @@D
T
DD
DDD
DDD
1D
y ist symmetrischer Nachfolger:
DDD
DDD
1D
AD
y@
@@
DDD
DDD
2D
Splay-Bäume
Wörterbuchoperationen
!
DDD
DDD
1D
DDD
2D
x@
@
y
TT
DDD
DDD
2D
Sven Schuierer, 12. Februar 2001
7-1
Wörterbuchoperationen
Entfernen von x aus T :
1. T.Splay
xl
,
ll
,,
(x)
DD
DD
D
DD
D
Tr DD
D
p y
(x)
2. Tl .Splay
3. p:right
DD
D
DD
D
DD
Tl D
T
DDD
D
DD
0 DDD
Tl D
=T
r
y
, ll
,,
l
DDD
DDD
0 DDD
Tl D
AD
Splay-Bäume
Wörterbuchoperationen
DDD
DDD
DDD
Tr D
Sven Schuierer, 12. Februar 2001
7-2
8
Eigenschaften von Splay-Bäumen
Satz
Führt man für einen beliebigen binären Suchbaum mit n
Schlüsseln m-mal die Operation Suchen aus, so ist die
dafür insgesamt benötigte Zeit von der Größenordnung
O n m
n.
(( + )log )
Satz
Führt man für einen beliebigen binären Suchbaum mit n
Schlüsseln insgesamt m-mal die Operation Suchen aus,
so daß dabei auf Schlüssel i qi-mal zugegriffen wird mit
qi , so ist die dafür insgesamt benötigte Zeit von der
Größenordnung
1
0
X
@
O m+ q
n
=1
i
AD
i
log
!1
m A:
q
i
Splay-Bäume
Sven Schuierer, 12. Februar 2001
Eigenschaften von Splay-Bäumen
8-1
Herunterladen