+ All Categories
Home > Documents > Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment...

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

Date post: 05-Apr-2015
Category:
Upload: evert-nehrbass
View: 108 times
Download: 0 times
Share this document with a friend
Popular Tags:
31
Splay Trees Von Projdakov Benjamin
Transcript
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.

Recommended