7 Weitere Baumstrukturen und Heapstrukturen

Werbung
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
Herunterladen