WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.

Slides:



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

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Eine dynamische Menge, die diese Operationen unterstützt,
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
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
Gewichtsbalancierte Suchbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortieren mit Binären Bäumen
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (16 – Fibonacci-Heaps) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (25 – Fibonacci-Heaps – Analyse) T. Lauer.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (24 – Fibonacci-Heaps) T. Lauer.
Sortieren vorsortierter Daten
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (24 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? 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.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 –Relaxiertes Balanzieren) 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 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
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.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps) 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.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
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-
Heaps und Priority Queues
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 2: Datenstrukturen
Diskrete Mathe 9 Vorlesung 9 SS 2001
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Auslegung eines Vorschubantriebes
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Kapitel 6: Suchbäume und weitere Sortierverfahren
 Präsentation transkript:

WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann

2WS03/04 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q Struktur zur Speicherung von Elementen, für die eine Prioritätsordnung definiert ist, und für die folgende Operationen ausführbar sind: Operationen: Q.initialize(): erstellt die leere Schlange Q Q.isEmpty(): liefert true gdw. Q ist leer Q.insert(e): fügt Eintrag e in Q ein und gibt einen Zeiger auf den Knoten, der Eintrag e enthält, zurück Q.deletemin(): liefert den Eintrag aus Q mit minimalen Schlüssel und entfernt ihn Q.min(): liefert den Eintrag aus Q mit minimalen Schlüssel Q.decreasekey(v,k): verringert den Schlüssel von Knoten v auf k

3WS03/04 Vorrangswarteschlangen:Operationen Zusätzliche Operationen: Q.delete(v): entfernt Knoten v mit Eintrag aus Q (ohne v zu suchen) Q.meld(Q´): vereinigt Q und Q´ (concatenable queue) Q.search(k): sucht den Eintrag mit Schlüssel k in Q (searchable queue) u.v.a., z.B. predecessor, successor, max, deletemax

4WS03/04 Vorrangswarteschlangen Implementationen ListeHeapBin. – Q.Fib.-Hp. insertO(1)O(log n) O(1) minO(n)O(1)O(log n)O(1) delete- min O(n)O(log n) O(log n)* meld (m n) O(1) O(n) od. O(m log n) O(log n)O(1) decr.-keyO(1)O(log n) O(1)* * = amortisierte Kosten delete(e,Q) = decreasekey(e,, Q) + deletemin(Q)

5WS03/04 Definition n-ter Binomialbaum B n, n 0 B 0 = B n+1 = BnBn BnBn

6WS03/04 Binomial Bäume B1B1 B2B2 B3B3 B0B0

7WS03/04 Binomial Bäume B4B4

8WS03/04 Folgerung 1. B n hat 2 n Knoten 2. B n hat Höhe n 3. Wurzel von B n hat Grad n ( = Ordnung) 4. B n = 5. Es gibt genau Knoten mit Tiefe i in B n.....

9WS03/04 Exkurs: Binomialkoeffizienten = # Möglichkeiten, i aus n Objekten zu wählen Pascalsches Dreieck:

10WS03/04 Anzahl Knoten mit Tiefe i in B n Es gibt genau Knoten mit Tiefe i in B n

11WS03/04 Binomial Queues Binomialqueue Q: Vereinigung heapgeordneter Binomialbäume verschiedener Ordnung zur Speicherung von Schlüsseln n Schlüssel: B i Q i-tes Bit in (n) 2 = 1 9 Schlüssel: {2, 4, 7, 9,12, 23, 58, 65, 85} 9 = (1001) 2

12WS03/04 Binomial Queues: Beispiel 1 Min bestimmen in Zeit: O(log n) 23 B0B B3B3 9 Schlüssel: {2, 4, 7, 9,12, 23, 58, 65, 85} 9 = (1001) 2

13WS03/04 Binomial Queues: Beispiel 2 11 Schlüssel: {2, 4, 6, 8, 14, 15, 17, 19, 23, 43, 47} 11 = (1011) 2 3 Binomialbäume B 3, B 1, und B Q 11 : 2 6 8

14WS03/04 Child - Sibling Darstellung Knotenformat: B0B0 B2B2 B1B1 parent entrydegree childsibling

15WS03/04 Binomialbäume: Vereinigung (Link) Vereinigung zweier Binomialbäume B, B´ von gleicher Ordnung B n + B n B n+1 Link-Operation: B.Link(B´) /*Mache Wurzel des Baumes mit größerem Schlüssel zum Sohn des Baumes mit kleinerem Schlüssel */ 1 if B.key > B´.key 2 then B´.Link(B) 3 return /* B.key B´.key*/ 4 B´.parent = B 5 B´.sibling = B.chlid 6 B.child = B 7 B.degree = B.degree +1 konstante Zeit

16WS03/04 Beispiel zur Link-Operation B B2B2 B2B2 B´

17WS03/04 Binomial Queues: Vereinigung (Meld) Zeit: O (log n) B 0 B 5 B 6 B 9 B 10 B 11 Q1Q1 B 0 B 5 B 8 B 10 B 11 Q2Q2 Q 1 Q 2 B 1 B 7 B 8 B 9 B 11 B 12

18WS03/04 Binomial Queues: Operationen Q.initialize: Q.root = null Q.insert(e): new B 0 B 0.entry = e Q.meld(B 0 ) Zeit = O(log n) Q1Q1 B 0 B 5 B 6 B 9 B 10 B 11 Q2Q2 B0B0

19WS03/04 Binomial Queues: Deletemin Q.deletemin(): 1. Bestimme B i mit minimalen Schlüssel in der Wurzelliste und entferne B i aus Q (liefert Q´) 2. Drehe die Reihenfolge der Söhne von B i um, also zu B 0, B 1,....., B i-1 Q´´ 3. Q´.meld(Q´´) Zeit: O(log n)

20WS03/04 Binomial Queues: Deletemin Beispiel Q 11 : 4 6 8

21WS03/04 Binomial Queues: Deletemin Beispiel 2 B2B2 B3B3 B4B4 B5B5 B0B0 Q B2B2 B3B3 B0B0 B5B5 Q´ B0B0 B1B1 B2B2 B3B3 Q´´

22WS03/04 Binomialqueues: Decreasekey Q.decreasekey(v, k): 1. v.entry.key := k 2. v.entry nach oben steigen lassen in dem geg. Baum, bis die Heapbedingung erfüllt ist. Zeit: O (log n ) B3B3

23WS03/04 Binomial Queues: Worst Case Folge von Operationen Q.deletemin(): B6B6 B0B0 B1B1 B2B2 B3B3 B4B4 B5B5 Zeit: O(log n) Q Q

24WS03/04 Binomialqueues Worst Case Folge von Operationen B6B6 Zeit: O(log n) (Q) = # Bäume in Q insert(e, Q):