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