Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment...
-
Upload
evert-nehrbass -
Category
Documents
-
view
109 -
download
0
Transcript of Splay Trees Von Projdakov Benjamin. Inhalt 1.Binäre Suchbäume 2.Splay Trees a.Self adjustment...
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