Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment...

31
Splay Trees Von Projdakov Benjamin

Transcript of Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment...

Page 1: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Splay Trees

Von Projdakov Benjamin

Page 2: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 3: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 4: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 5: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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.

Page 6: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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.

Page 7: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Rotation: Zig / Zag

Nur wenn 1 Schritt zur Wurzel.Bei simpler Implementierung werden 2 Zeiger „umgebogen“.

Zig

Zag

Page 8: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Rotation: ZigZig / ZagZag

Wenn mehr als 1 Schritt zur Wurzel.Bei simpler Implementierung werden 4 Zeiger „umgebogen“.

ZigZig

ZagZag

Page 9: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Rotation: ZigZag / ZigZag

Wenn mehr als 1 Schritt zur Wurzel.Bei simpler Implementierung werden 4 Zeiger „umgebogen“.

ZigZag ZagZig

Page 10: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 11: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Operationen: Suche

Suche:• Einfach eine Splay-Operation mit Rückgabe

der neuen Wurzel.• Laufzeit von einer Splay-Operation mit

Rückgabe der Wurzel.

Page 12: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 13: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 14: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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.

Page 15: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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)

Page 16: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Amortisierte Analyse: Hilfsatz

a. Wenn: • Dann: • Denn: geometrisches Mittel arithmetisches

Mittelb.

• =

Page 17: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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)

Page 18: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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

Page 19: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Zugriffslemma : Zig / Zag

Regeln:1: 2:

3:

Page 20: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Zugriffslemma : Zig / Zag

1: 2: 3:

wegen Aufhebung der nicht bewegten Knoten

Page 21: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Zugriffslemma : ZigZag / ZagZig

Regeln:1: 2:

3: ,da 4:

Page 22: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Zugriffslemma : ZigZag / ZagZig

1: 2: 3: 4:

Page 23: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Zugriffslemma : ZigZig / ZagZag

Regeln:1: 2: ,

3:

Page 24: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Zugriffslemma : ZigZig / ZagZag

1: 2: , 3:

Page 25: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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.

Page 26: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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 .

Page 27: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Beweis

N = Anzahl der Einfügeoperationenm = Anzahl von Operationen Größe :

Zugriffslemma

Def. von Def. von Gesamtgewicht

Page 28: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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:

Page 29: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

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 = )

Page 30: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.

Abschätzung von SuchfolgenDef. von amortisierten Kosten.

Treppensumme

Zugriffslemma

, somit Wegfall

Definition Rang und Potentialdifferenz

Page 31: Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment b.Anwendungsbeispiel c.Rotationen I.Zig / Zag II.ZigZig/ZagZag.