WS 2006-07 Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Claudio Moraga; Gisbert Dittrich
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Balancierte Bäume Effizienz der Wörterbuchoperationen auf Bäumen hängt direkt von der Baumhöhe ab. Baum mit n Knoten: Mindesthöhe: |_log2 n_|, maximale.
Sortierverfahren Richard Göbel.
Algorithmentheorie 04 –Hashing
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Geometrisches Divide and Conquer
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 2: Datenstrukturen
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Animationen zu Kap. 4.3: AVL-Bäume
Splay Trees Von Projdakov Benjamin.
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Vorlesung Binärer Suchbaum II-
Graphen und Bäume.
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Binärer Baum, Binärer Suchbaum I
Binärbäume.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
 Präsentation transkript:

WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann

2WS Das Wörterbuch-Problem Gegeben: Universum (U,<) von Schlüsseln mit einer totalen Ordnung Ziel: Verwalte Menge S U, mit folgenden Operationen Suche(x,S): Ist x S? Einfüge(x,S): Füge x zu S hinzu, sofern noch nicht vorhanden. Entferne(x,S): Entferne x aus S.

3WS Erweiterte Operationen Minimum(S): Finde kleinsten Schlüssel. Maximum(S): Finde größten Schlüssel. List(S): Gib Einträge in aufsteigender Reihenfolge aus. Vereinige(S 1,S 2 ): Vereinige S 1 und S 2. Voraussetzung: x 1 S 1, x 2 S 2 : x 1 < x 2 Spalte(S,x,S 1,S 2 ): Spalte S in S 1 und S 2. x 1 S 1, x 2 S 2 : x 1 x und x 2 > x

4WS Bekannte Lösungen Binäre Suchbäume Nachteil: Sequenz von Einfügungen kann zu einer linearen Liste führen a, b, c, d, e, f Höhenbalancierte Bäume: AVL-Bäume, (a,b)-Bäume Nachteil: Komplexe Algorithmen oder hoher Speicherbedarf b g d c a h

5WS Ansatz für randomisierte Suchbäume Werden n Elemente in zufälliger Reihenfolge in einen binären Suchbaum eingefügt, so ist die erwartete Höhe 1,39 log n. Idee: Jedes Element x erhält eine zufällig gewählte Priorität prio(x) R Ziel ist es, die folgende Eigenschaft herzustellen. (*) Der Suchbaum hat die Struktur, die entstanden wäre, wenn die Elemente in der durch die Prioritäten gegebenen Reihenfolge eingefügt worden wären.

6WS Treaps (Tree + Heap) Definition: Ein Treap ist ein binärer Baum. Jeder Knoten enthält ein Element x mit key(x) U und prio(x) R. Es gelten die folgenden Eigenschaften. Suchbaum-Eigenschaft Für jedes Element x gilt: - Elemente y im linken Teilbaum von x erfüllen: key(y) < key(x) - Elemente y im rechten Teilbaum von x erfüllen: key(y) > key(x) Heap-Eigenschaft Für alle Elemente x,y gilt: Ist y ein Kind von x, so ist prio(y) > prio(x). Alle Prioritäten sind verschieden.

7WS Beispiel Schlüssel Priorität a b c d e f g d1d1 a3a3 f2f2 c4c4 e5e5 g6g6 b7b7

8WS Eindeutigkeit von Treaps Lemma: Für Elemente x 1,..., x n mit key(x i ) und prio(x i ) existiert ein eindeutiger Treap. Dieser erfüllt Eigenschaft (*). Beweis: n=1: ok n>1:

9WS Suche nach einem Element d1d1 a3a3 f2f2 c4c4 e5e5 g6g6 b7b7

10WS Suche nach Element mit Schüssel k 1 v := Wurzel; 2 while v nil do 3 case key(v) = k : stop; Element gefunden (erfolgreiche Suche) 4 key(v) < k : v:= RechtesKind(v); 5 key(v) > k : v:= LinkesKind(v); 6 endcase; 7 endwhile; 8Element nicht gefunden (nicht erfolgreiche Suche) Laufzeit: O(# Elemente auf dem Suchpfad)

11WS Analyse des Suchpfads Elemente x 1, …, x n x i hat i-t kleinsten Schlüssel M sei Teilmenge der Elemente P min (M) = Element aus M mit kleinster Priorität Lemma: a)Sei i<m. x i ist Vorfahre von x m gdw P min ({x i,…,x m }) = x i b) Sei m<i. x i ist Vorfahre von x m gdw P min ({x m,…,x i }) = x i

12WS Analyse des Suchpfads Beweis: a) Verwende (*). El. werden gemäß steigenden Prioritäten eingefügt. P min ({x i,…,x m }) = x i x i wird als erstes aus {x i,…,x m } eingefügt Wenn x i eingefügt wird, enthält der Baum nur Schlüssel k mit k key(x m ) key(x i ) > k k key(x i ) < k k

13WS Analyse des Suchpfads Beweis: a) (Sei i<m. x i ist Vorfahre von x m gdw P min ({x i,…,x m }) = x i ) Sei x j = P min ({x i,…,x m }). Z.z. x i = x j Annahme: x i x j Fall 1: x j = x m Fall 2: x j x m Teil b) analog.

14WS Analyse der Suche-Operation Sei T ein Treap mit Elementen x 1, …, x n x i hat i-t kleinsten Schlüssel n-te Harmonische Zahl: Lemma: 1.Erfolgreiche Suche: Die erwartete Anzahl von Knoten auf dem Pfad nach x m ist H m + H n-m+1 – Nicht erfolgreiche Suche: Sei m die Anzahl der Schlüssel, die kleiner als der gesuchte Schlüssel k sind. Die erwartete Anzahl von Knoten auf dem Suchpfad ist H m + H n-m.

15WS Analyse der Suche-Operation Beweis: Teil 1 X m = # Knoten auf Pfad von der Wurzel nach x m (inkl. x m )

16WS Analyse der Suche-Operation i < m : Alle El. aus { Alle El. aus { x i, …, x m } haben mit gleicher WSK die kleinste Priorität i > m : Prob[P min ({x i,…,x m }) = x i ] = 1/(m- i+1)

17WS Analyse der Suche-Operation Teil 2 analog

18WS Einfügen eines neuen Elements x 1.Wähle prio(x). 2.Suche nach der Position von x im Baum. 3. Füge x als Blatt ein. 4. Stelle Heap-Eigenschaft wieder her. while prio(Elter(x)) > prio(x) do if x ist linkes Kind then RotiereNachRechts(Elter(x)) else RotiereNachLinks(Elter(x)); endif endwhile;

19WS Rotationen Die Rotationen erhalten die Suchbaum-Eigenschaft und stellen die Heap-Eigenschaft wieder her. RotationNachLinks RotationNachRechts B y C y x A A B C x

20WS Entfernen eines Elements x 1.Suche x in dem Baum. 2. while x ist kein Blatt do u := Kind mit kleinerer Priorität; if u ist linkes Kind then RotiereNachRechts(x)) else RotiereNachLinks(x); endif; endwhile; 3. Entferne x;

21WS Rotationen RotationNachLinks RotationNachRechts B x C x u A A B C u

22WS Analyse der Einfüge- u. Entferne-Operationen Lemma: Die erwartete Laufzeit einer Einfüge- bzw. Entferne-Operation ist O(log n). Die erwartete Anzahl der Rotationen ist 2. Beweis: Analyse einer Einfügung (Entfernung ist inverse Operation) #Rotationen = Tiefe von x nach Einfügung als Blatt (1) - Tiefe von x nach den Rotationen (2) Sei x = x m (2) erwartete Tiefe ist H m + H n-m+1 – 1 (1)erwartete Tiefe ist H m-1 + H n-m + 1 Baum enthält n-1 Elemente, m-1 sind kleiner. #Rotationen = H m-1 + H n-m + 1 – (H m + H n-m+1 – 1) < 2

23WS Erweiterte Operationen n = Anzahl Elemente im Treap T. Minimum(T): Finde kleinsten Schlüssel. O(log n) Maximum(T): Finde größten Schlüssel. O(log n) List(T): Gib Einträge in aufsteigender Reihenfolge aus. O(n) Vereinige(T 1,T 2 ): Vereinige T 1 und T 2. Voraussetzung: x 1 T 1, x 2 T 2 : key(x 1 ) < key(x 2 ) Spalte(T,k,T 1,T 2 ): Spalte T in T 1 und T 2. x 1 T 1, x 2 T 2 : key(x 1 ) k und key(x 2 ) > k

24WS Die Spalte-Operation Spalte(T,k,T 1,T 2 ): Spalte T in T 1 und T 2. x 1 T 1, x 2 T 2 : key(x 1 ) k und key(x 2 ) > k O.B.d.A. Schlüssel k nicht in T. Andernfalls lösche Element mit Schlüssel k und füge es nach der Spalte-Operation in T 1 ein. 1.Erzeuge neues Element x mit key(x)=k und prio(x) = - 2.Füge x in T ein. 3. Entferne die neue Wurzel. Der linke Unterbaum ist T 1, der rechte T 2.

25WS Die Vereinige-Operation Vereinige(T 1,T 2 ): Vereinige T 1 und T 2. Voraussetzung: x 1 T 1, x 2 T 2 : key(x 1 ) < key(x 2 ) 1. Ermittle Schlüssel k mit key(x 1 ) < k < key(x 2 ) für alle x 1 T 1 und x 2 T Erzeuge Element x mit key(x)=k und prio(x) = - 3.Erzeuge Treap T mit Wurzel x, linkem Teilbaum T 1 und rechtem Teilbaum T Entferne x aus T.

26WS Analyse Lemma: Die Operationen Vereinige und Spalte haben eine erwartete Laufzeit von O(log n).

27WS Praktische Realisierung Prioritäten aus [0,1) Prioritäten werden nur im direkten Vergleich benutzt, um zu entscheiden, welches Element die kleinere Priorität hat. Tritt Gleichheit auf, so würfele für beide Prioritäten weitere Bits aus, bis sie verschieden sind. p 1 = 0, p 1 = 0, p 2 = 0, p 2 = 0,