Splay Trees Von Projdakov Benjamin
Apr 05, 2015
Splay Trees
Von Projdakov Benjamin
Inhalt1. Binäre Suchbäume2. Splay Trees
a. Self adjustmentb. Anwendungsbeispielc. Rotationen
I. Zig / ZagII. ZigZig/ZagZagIII. ZigZag/ZagZig
d. OperationenI. Splay/SucheII. EinfügenIII. Löschen
3. Amortisierte Analysea. Einführung/Potential-
Methodeb. Hilfssatzc. Definitionend. Zugrifslemma
I. Zig/ZagII. ZigZag/ZagZigIII. ZigZig/ZagZagIV. Splay
e. Satz 1: Splay-Baumf. Satz 2: Binärer Baum mit
Splay
Binäre Suchbäume
Eigenschaften:• Geordnete Menge von
Suchschlüsseln• Linkes Kind der kleinere
Suchschlüssel• Rechtes Kind der
größere Suchschlüssel• Baum kann zu einer
linearen Liste ausarten
Splay Tree
• Splay-Bäume wurden 1985 von Daniel Sleator und Robert Tarjan unter dem Namen Self-Adjusting Binary Search Trees vorgestellt
• Hat den Vorteil von Selbstjustierung• Benutzt Rotationen für Knotenbewegung• Typische Befehle auf Knoten:– Suche– Füge ein– Lösche
Self adjustment
• Nach jeder Operation steht der bearbeitete Knoten in der Wurzel.
• Die Tiefe eines Pfads halbiert sich im Schnitt bei Ausführung einer Operation darauf.
• Oft benutzte Knoten sind näher an der Wurzel.
Beispiel Compiler
Compiler:• Ein Compiler muss die Variablen und andere Bezeichner eines
Programms verwalten.• Er kann solche Information in einer Liste oder einer Tabelle
behalten. • Gerne werden Variablen alphabetisch deklariert und ein
Baum entartet zu einer linearen Liste.• Wenn einige Bezeichner häufiger verwendet werden, muss
man dann mehrmals nach diesen suchen. • Ein Splay-Baum würde oft benutzte Variablen an der Wurzel
halten und ggf. die Liste zu einem Baum formen.
Rotation: Zig / Zag
Nur wenn 1 Schritt zur Wurzel.Bei simpler Implementierung werden 2 Zeiger „umgebogen“.
Zig
Zag
Rotation: ZigZig / ZagZag
Wenn mehr als 1 Schritt zur Wurzel.Bei simpler Implementierung werden 4 Zeiger „umgebogen“.
ZigZig
ZagZag
Rotation: ZigZag / ZigZag
Wenn mehr als 1 Schritt zur Wurzel.Bei simpler Implementierung werden 4 Zeiger „umgebogen“.
ZigZag ZagZig
Operation: Splay• Binäre Suche nach Element• Falls Knoten nicht im Baum, wird der Vorgänger
betrachtet oder Nachfolger, wenn kleiner als alle.• Bewegung des Elements in die Wurzel
Operationen: Suche
Suche:• Einfach eine Splay-Operation mit Rückgabe
der neuen Wurzel.• Laufzeit von einer Splay-Operation mit
Rückgabe der Wurzel.
Operation: Einfügen
Füge „x“ ein :• Suche nach x, falls x gefunden => Splay x• Falls x nicht gefunden, wird der Vorgänger y zur Wurzel.• Dann füge x als neue Wurzel ein, mit
– y linkem Kind von x– rechtes Kind von y wird zum rechtem Kind von x.
Laufzeit von einer Splay Operation und umbiegen von 3 Zeigern
Operation: LöschenLösche „x“:• Splay x• Wenn x nicht in der Wurzel, ist man fertig.• Entferne x, man erhält nun 2 Bäume.• Führe Splay auf dem linken Baum aus.• Somit linker Baum mit Wurzel, an die man rechts
den rechten Baum hängen kann.
Laufzeit von 2 Splay-Operationen und umbiegen von einem Zeiger
Amortisierte Analyse
• Analyse der durchschnittlichen Kosten von Operationsfolgen.
• Es werden nicht die maximalen Kosten der einzelnen Schritte betrachtet, sondern es wird der Worst Case aller Operationen im gesamten Durchlauf des Algorithmus analysiert.
• Dies kann zu einer besseren oberen Schranke führen.
Potential-Methode
• sind die amortisierten Kosten für die Operation
• sind die tatsächlichen Kosten für die Operation
• ist das Potential eines Zustands (ähnlich zum Kontostand)
Amortisierte Analyse: Hilfsatz
a. Wenn: • Dann: • Denn: geometrisches Mittel arithmetisches
Mittelb.
• =
Definition
Variablen:• x : Schlüssel• p : Knoten• b : Baum
• Gewicht von x: • Größe von p: (Summe der Gewichte aller Schlüssel vom Teilbaum mit Wurzel p)
Rang von p:• (min. Tiefe bei Gewicht 1)• ,p hat Schlüssel x• , p Wurzel von b
Potential von b:• , p ist innerer Knoten von b(Summe aller Ränge der inneren Knoten)
Zugriffslemma
Jede Splay-Operation hat als amortisierte Laufzeit maximal:
Das ist nun zu zeigen.
Rang:
• ,p hat Schlüssel x• , p Wurzel von b
Variablen:• x : Schlüssel• p : Knoten• b : Baum
Zugriffslemma : Zig / Zag
Regeln:1: 2:
3:
Zugriffslemma : Zig / Zag
1: 2: 3:
wegen Aufhebung der nicht bewegten Knoten
Zugriffslemma : ZigZag / ZagZig
Regeln:1: 2:
3: ,da 4:
Zugriffslemma : ZigZag / ZagZig
1: 2: 3: 4:
Zugriffslemma : ZigZig / ZagZag
Regeln:1: 2: ,
3:
Zugriffslemma : ZigZig / ZagZag
1: 2: , 3:
Zugriffslemma : Splay
Rang von nach -ter Operation
Splay ist eine Folge von vorgestellten Operationen.
Rang von vor Splay ist Rang des gesuchten Schlüssels vor Splay.Rang von nach Splay ist Rang des Baumes.
Satz 1 : Splay Baum
• Für einen anfangs leeren Baum benötigt das Ausführen von m Wörterbuchoperationen mit höchsten N Einfügeoperationen maximal O(m log N).
• Wörterbuchoperationen brauchen eine konstante Anzahl von Splay-Operationen + eine konstante Anzahl Einzeloperationen.
• Für diesen Beweis setzen wir alle Gewichte auf 1 .
Beweis
N = Anzahl der Einfügeoperationenm = Anzahl von Operationen Größe :
Zugriffslemma
Def. von Def. von Gesamtgewicht
Satz 2 : Binärer Baum mit Splay
• Für einen binären Suchbaum mit N Knoten, haben m Suchoperationen (über Splay) einen Aufwand von maximal O((N + m) log (N) + m).
• Eine Suchoperation besteht aus einer Splay-Operation und Rückgabe des neuen Wurzelknotens.
• Für diesen Beweis setzen wir alle Gewichte auf 1.• Wir suchen die tatsächlichen Kosten über:
Potentialdifferenz
= =
Erweitere um Blätter (Rang 0, Gewicht 1), somit alle p‘s in beiden Summen
Benutze Definitionen:• ( im Teilbaum von )
= Summe aller Gewichte: (Anzahl von Knoten = )
Abschätzung von SuchfolgenDef. von amortisierten Kosten.
Treppensumme
Zugriffslemma
, somit Wegfall
Definition Rang und Potentialdifferenz