Praktische Informatik I – Algorithmen und Datenstrukturen 7 Wintersemester 2006/07 Weitere Baumstrukturen und Heapstrukturen Man kann kurze Suchzeiten in Baumstrukturen erreichen durch Rebalancierung bei Einfügungen und Löschungen (AVL–Bäume, gewichtsbalancierte Bäume, Bruderbäume, B–Bäume), Randomisierung der Einfügungen (Treaps), oder Rebalancierung aufgrund von Suchoperationen (Splay–Bäume). Binomial Queues sind Vorrangswarteschlangen, die ein effizientes Verschmelzen ermöglichen. Prof. Dr. Dietmar Seipel 378 Praktische Informatik I – Algorithmen und Datenstrukturen 7.1 Wintersemester 2006/07 Weitere Klassen balancierter Binärbäume globale Balancierungsbedingungen: AVL–Bäume setzen die Höhen und gewichtsbalancierte Bäume setzen die Anzahl der Blätter der Teilbäume eines jeden Knotens in Beziehung. lokale + globale Balancierungsbedingungen: Bruderbäume setzen die Anzahl der direkten Nachfolger eines Knotens und seines Bruders in Beziehung und B–Bäume beschränken die Anzahl der direkten Nachfolger eines Knotens; außerdem müssen alle Blätter dieselbe Höhe haben (globale B.). Prof. Dr. Dietmar Seipel 379 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 7.1.1 Bruderbäume Ein Bruderbaum ist ein (binärer) Suchbaum mit folgenden Zusatzbedingungen: Struktur: Innere Knoten können 1 oder 2 Söhne haben, aber jeder unäre Knoten muß einen binären Bruder haben. Alle Blätter haben dieselbe Höhe. Schlüsselwerte: Die Schlüsselwerte sind in den binären Knoten bzw. den Blättern gespeichert. Die unären Knoten enthalten keine Schlüsselwerte. Eine andere Variante speichert die Schlüsselwerte ausschließlich in den Blättern (Blattsuchbäume). Die binären inneren Knoten enthalten dann nur Wegweiser zum Auffinden der Schlüsselwerte; die unären inneren Knoten sind leer. Prof. Dr. Dietmar Seipel 380 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 381 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 382 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Blätterminimale Bruderbäume der Blätter eines blätterminimalen Bruderbaums der Höhe Für die Zahl gilt: Dann kann man zeigen, daß gilt. Prof. Dr. Dietmar Seipel 383 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Beweis per Induktion: Prof. Dr. Dietmar Seipel 384 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 3 4 5 1 1 2 3 5 2 3 5 8 13 2 1 Blätter, bei Blättern haben wir Bei Höhe erhalten wir binäre, innere Knoten Also gilt für die Höhe eines Bruderbaumes : bei Schlüsselwerten in den Blättern. Prof. Dr. Dietmar Seipel für alle Wörterbuchoperationen Außerdem ist 385 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 7.1.2 Gewichtsbalancierte Bäume die Anzahl der Blätter in . ein binärer Wurzelbaum, und sei Sei Dann ist die Wurzelbalance von gegeben durch der linke Teilbaum der Wurzel Prof. Dr. Dietmar Seipel wobei ist. 386 Praktische Informatik I – Algorithmen und Datenstrukturen Dann ist ein BB[ ]–Baum Sei Wintersemester 2006/07 ein (binärer) Suchbaum : für alle Teilbäume mit einer beschränkten Balance Diese Definition ist „symmetrisch“ bezüglich des linken bzw. rechten der Wurzel: Teilbaums bzw. Prof. Dr. Dietmar Seipel gilt denn wegen 387 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Beispiel: Prof. Dr. Dietmar Seipel 388 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Wurzelbalancen: Knoten mit Balance Schlüssel 6 11 4 2 5 3 8 Prof. Dr. Dietmar Seipel 389 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 390 Praktische Informatik I – Algorithmen und Datenstrukturen mit eines BB[ ]–Baums Für die Höhe Wintersemester 2006/07 Schlüsseln gilt für alle Wörterbuchoperationen Genau wie bei den höhenbalancierten AVL–Bäumen erfolgt die Rebalancierung von BB[ ]–Bäumen mit Rotationen und Doppelrotationen. Prof. Dr. Dietmar Seipel 391 Praktische Informatik I – Algorithmen und Datenstrukturen 7.2 Wintersemester 2006/07 Randomisierte Suchbäume: Treaps (Aragon und Seidel, 1989) Treaps sind eine Mischung aus Trees und Heaps für spezielle hat zwei Komponenten: Schlüsselwertmengen . Jedes Element : Schlüsselkomponente, : Prioritätskomponente (zufällig gewählte Zeitmarke). Ein Treap ist ein (binärer) Suchbaum für Prof. Dr. Dietmar Seipel Min–Heap für 392 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Speichert ein Knoten das Element , so gelten für jedes Element bzw. im linken bzw. rechten Teilbaum von die folgenden Bedingungen: Suchbaumbedingung: . , – – Heapbedingungen: . Prof. Dr. Dietmar Seipel , – – 393 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Beispiel (Treap): Folgende Abbildung zeigt einen Treap, der die Schlüsselwertmenge speichert. Dabei soll die erste Zahl den Schlüssel und die zweite die Priorität bezeichnen. Prof. Dr. Dietmar Seipel 394 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 395 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Eindeutigkeit: Für jede Menge S von Elementen mit paarweise verschiedenen Schlüsselwerten und Prioritäten gibt es genau einen Treap! In der Wurzel muß das eindeutig bestimmte Element Priorität stehen: mit minimaler linker Teilbaum rechter Teilbaum und für und Per Induktion folgt, dass die beiden Teilbäume eindeutig sind, und somit der Baum für . Prof. Dr. Dietmar Seipel 396 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Wörterbuchoperationen Suchen: wie im Suchbaum Einfügen: Zunächst Einfügen als neues Blatt entsprechend der Suchbaumstruktur. Dann Herstellung der Heapstruktur durch Rotation. Merke: (Korrekte) Treaps können weiter nicht rebalanciert werden, da sie ja für gegebenes eindeutig sind! Prof. Dr. Dietmar Seipel 397 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Beispiel: Prof. Dr. Dietmar Seipel in den Treap ein. Wir fügen das neue Element 398 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 399 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 400 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Entfernen: invers zum Einfügen wird das zu entfernende Element zuerst durch Rotation auf die Blattebene abgesenkt; dabei bleibt die Suchbaumeigenschaft erhalten und die Heapeigenschaft ist jeweils nur lokal in dem Knoten mit verletzt; im Blatt angekommen kann gelöscht werden. , maximal: . Schls̈seln gilt: mit Für die Höhe eines Treaps Der Aufwand für die Wörterbuchoperationen ist in durchschnittlich: , bei Annahme zufälliger Prioritäten. Prof. Dr. Dietmar Seipel 401 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Ein Treap hat die Struktur des natürlichen, binären Suchbaumes, den man für die Menge erhalten würde, wenn man die Schlüssel in der zeitlichen Reihenfolge ihrer Prioritäten einfügen würde. Prof. Dr. Dietmar Seipel 402 Praktische Informatik I – Algorithmen und Datenstrukturen 7.3 Wintersemester 2006/07 Selbstanordnende Bäume: Splay–Bäume engl. splay: verbreitern Splay–Bäume sind (binäre) Suchbäume, welche aufgrund von Suchoperationen rebalanciert werden. Splay–Operation: Nach einer Suche wird durch eine geschickte Folge von Rotationen erreicht, daß sich die Längen sämtlicher Pfade zu Schlüsseln auf dem Suchpfad etwa halbieren. Eine künftige Suche nach demselben Schlüssel wird also schneller. Prof. Dr. Dietmar Seipel 403 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Operationen zur Rebalancierung: zig: Prof. Dr. Dietmar Seipel 404 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 zig–zig: zig–zag: Prof. Dr. Dietmar Seipel 405 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 zig–zig im Detail: Prof. Dr. Dietmar Seipel 406 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Satz (Amortisierte Worst–Case–Analyse): 1. Das Ausführen einer beliebigen Folge von Wörterbuchoperationen, in der höchstens mal die Operation Einfügen vorkommt und die mit dem anfangs leeren Splay–Baum beginnt, benötigt höchstens Schritte. 2. Führt man für einen beliebigen Splay–Baum mit Schlüsseln -mal die Operation Suchen aus, so ist die dafür insgesamt benötigte Zeit von . der Größenordnung Die Kosten pro Suche sind dann in . Prof. Dr. Dietmar Seipel 407 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Beispiel: Prof. Dr. Dietmar Seipel 408 Praktische Informatik I – Algorithmen und Datenstrukturen 7.4 Wintersemester 2006/07 Vorrangswarteschlangen (Priority Queues): Binomial Queues Binomial Queue : eine Schlüsselwertmenge der Größe Sei Dann wird repräsentiert durch eine Binomial Queue, bestehend aus je , für alle mit . einem Binomialbaum vom Typ Jeder Binomialbaum hat Heap–Struktur; d.h. insbesondere steht das Minimum in der Wurzel. Prof. Dr. Dietmar Seipel 409 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 besteht aus genau einem Knoten. vom Typ Ein Binomialbaum Binomialbäume vom Typ Ein Binomialbaum vom Typ besteht aus zwei Binomialbäumen und vom Typ . bzw. die Wurzeln von bzw. . Dann ist die Wurzel Seien wird als linken Sohn von von , und man erhält indem man in einhängt. Prof. Dr. Dietmar Seipel 410 Praktische Informatik I – Algorithmen und Datenstrukturen , für Prof. Dr. Dietmar Seipel Binomialbäume vom Typ Wintersemester 2006/07 : 411 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Folgerung besteht aus genau Knoten. hat die Höhe . Knoten auf der Ebene . hat 3. 2. 1. hat genau Söhne. sind Teilbäume der Wurzel von Prof. Dr. Dietmar Seipel 5. Die 4. Die Wurzel von . 412 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Wörterbuchoperationen Binomialbäume Minimum Suchen: steht in der Wurzel von einem der maximal Aufwand Minimum Löschen: steht in der Wurzel von einem der Binomialbäume , welcher nach zerfällt. Diese müssen mit dem Rest der dem Löschen in Binomial Queue verschmolzen werden. Aufwand . Verschmelzen zweier Binomial Queues: entsprechend der Dualaddition. Aufwand Einfügen: Verschmelzen mit einem einelementigen Binomialbaum Aufwand Prof. Dr. Dietmar Seipel 413 Praktische Informatik I – Algorithmen und Datenstrukturen Wintersemester 2006/07 Beispiel: Verschmelzen zweier Binomial Queues Elementen Elementen bzw. mit und mit Die Binomial Queues sollen zu einer neuen Binomial Queue verschmolzen werden. Übertrag 1 1 1 0 Ergebnis 1 1 0 0 1 1 und 1 1 0 Prof. Dr. Dietmar Seipel 1 Das Verschmelzen erfolgt analog zur Dualaddition von und , , und Also besteht aus je einem Binomialbaum der Typen und besteht aus je einem Binomialbaum der Typen . : 414 Praktische Informatik I – Algorithmen und Datenstrukturen Prof. Dr. Dietmar Seipel Wintersemester 2006/07 415