Algorithmen und Datenstrukturen I AVL-Bäume

Ähnliche Dokumente
AVL-Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. AVL-Bäume 1/38

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I Bruder-Bäume

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Balancierte Suchbäume

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Datenstrukturen Teil 3. Traversierung und AVL- Bäume. Traversierung. Traversierung. Traversierung

Datenstrukturen und Algorithmen SS07

ADS 1: Algorithmen und Datenstrukturen

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

7 Weitere Baumstrukturen und Heapstrukturen

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Copyright, Page 1 of 8 AVL-Baum

Informatik II Bäume zum effizienten Information Retrieval

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Logische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Abschnitt 18: Effizientes Suchen in Mengen

Algorithmen und Datenstrukturen

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

Algorithmen und Datenstrukturen 1-5. Seminar -

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Christian Rieck, Arne Schmidt

ContainerDatenstrukturen. Große Übung 4

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Programmiertechnik II

Übung: Algorithmen und Datenstrukturen SS 2007

Fast Searching / Balanced trees

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Definition 14 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

Algorithmen und Datenstrukturen. Kapitel 4: Suchverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 11, Donnerstag, 15.

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume

Algorithmen und Datenstrukturen 13

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume. AVL-Bäume Treaps Splay-Bäume

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Datenstrukturen und Algorithmen

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

elementare Datenstrukturen

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

Informatik II, SS 2016

Übung Algorithmen und Datenstrukturen

Invarianzeigenschaft (für binären Suchbaum)

Anwendungsbeispiel MinHeap

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

Dynamische Mengen. Realisierungen durch Bäume

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Informatik II: Algorithmen und Datenstrukturen SS 2015

Informatik II Vorlesung am D-BAUG der ETH Zürich

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 143

Informatik II, SS 2014

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume B-Bäume Digitale Suchbäume

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Übung zur Vorlesung Algorithmische Geometrie

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

14. Rot-Schwarz-Bäume

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Datenstrukturen und Algorithmen (SS 2013)

Algorithmen und Datenstrukturen II

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Dynamische Datenstrukturen

10. Wiederholung Natürliche Suchbäume und Heaps

t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen.

Übung Algorithmen und Datenstrukturen

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Informatik II, SS 2014

Umstrukturierung durch Rotationen

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Übung Datenstrukturen. Bäume

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1

Informatik II Prüfungsvorbereitungskurs

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer)

Transkript:

Algorithmen und Datenstrukturen I AVL-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 01.12.2017 14:42 Algorithmen und Datenstrukturen I, AVL-Bäume 1/38

Balancierte Bäume in einem zufällig erzeugten Binärbaum haben die Algorithmen Suchen, Einfügen und Löschen im Mittel eine Laufzeit von O(log 2 N) aber im schlechtesten Fall eine lineare Laufzeit entarteter Baum das Degenerieren des Baumes soll durch eine zusätzliche Bedingung an die Struktur der Bäume verhindert werden Algorithmen und Datenstrukturen I, AVL-Bäume 2/38

AVL-Bäume ein binärer Suchbaum ist AVL-ausgeglichen oder höhenbalanciert kurz: ein AVL-Baum wenn für jeden Knoten p des Baumes gilt: die Höhe des linken Teilbaumes unterscheidet sich höchstens um 1 von der Höhe des rechten Teilbaumes Algorithmen und Datenstrukturen I, AVL-Bäume 3/38

Suchen exakt wie in natürlichem Baum Algorithmen und Datenstrukturen I, AVL-Bäume 4/38

Einfügen zunächst wie in natürlichem Baum ersetze Blatt durch inneren Knoten mit Schlüssel aber: der entstehende Suchbaum ist eventuell nicht mehr AVL-ausgeglichen dazu läuft man den Pfad von der Einfügestelle zur Wurzel entlang und überprüft für jeden Knoten ob die Höhendifferenz höchstens 1 ist ist das nicht der Fall kann man eine Rotation oder Doppelrotation ausführen erhält Sortierung der Schlüssel aber verändert die Höhendifferenz Algorithmen und Datenstrukturen I, AVL-Bäume 5/38

Balancefaktor zur Prüfung der Höhenbedingung reicht es den Balancefaktor zusätzlich in jedem inneren Knoten zu speichern es ist nicht notwendig die Höhe der Teilbäume zu speichern der Balancefaktor bal(p) ist definiert durch bal(p) = Höhe des rechten Teilbaumes von p Höhe des linken Teilbaumes von p. damit gilt für jeden inneren Knoten p: bal(p) { 1, 0, 1} Algorithmen und Datenstrukturen I, AVL-Bäume 6/38

Beispiel Algorithmen und Datenstrukturen I, AVL-Bäume 7/38

Einfügen in leeren Baum Einfügen des Schlüssel x in den leeren Baum Algorithmen und Datenstrukturen I, AVL-Bäume 8/38

Einfügen mit Vorgänger (1/2) sei p der Vorgänger des Blattes an dem die Suche endet drei Fälle sind möglich Fall 1: bal(p) = +1 Algorithmen und Datenstrukturen I, AVL-Bäume 9/38

Einfügen mit Vorgänger (2/2) Fall 2: bal(p) = 1 Fall 3: bal(p) = 0 nur in diesem Fall ändert sich die Höhe des Baumes mit der Wurzel p p hat nach dem Einfügen einen Balancefaktor 1 oder -1 Algorithmen und Datenstrukturen I, AVL-Bäume 10/38

Die Prozedur upin(p) da sich der Balancefaktor von p geändert hat, haben sich eventuell auch die Balancefaktoren der Knoten auf dem Pfad von p zur Wurzel geändert aber nur diese dazu wird eine Prozedur upin(p) definiert, die den Pfad zur Wurzel zurück läuft und die Balancefaktoren anpasst Algorithmen und Datenstrukturen I, AVL-Bäume 11/38

bal(p) = 0 (1/2) Fall 3.1: bal(p) = 0 und einzufügender Schlüssel x > Schlüssel k von p anschließend Aufruf upin(p) Algorithmen und Datenstrukturen I, AVL-Bäume 12/38

bal(p) = 0 (2/2) Fall 3.2: bal(p) = 0 und einzufügender Schlüssel x < Schlüssel k von p anschließend Aufruf upin(p) Algorithmen und Datenstrukturen I, AVL-Bäume 13/38

upin(p) wenn upin(p) aufgerufen wird, ist bal(p) { 1, 1} und die Höhe des Teilbaumes mit der Wurzel p ist um 1 gewachsen diese Invariante muss vor jedem rekursiven Aufruf von upin gelten upin(p) bricht ab, wenn p die Wurzel ist Algorithmen und Datenstrukturen I, AVL-Bäume 14/38

Fall 1: p ist linker Nachfolger von φp (1/7) Fall 1.1: bal(φp) = 1 fertig Algorithmen und Datenstrukturen I, AVL-Bäume 15/38

Fall 1: p ist linker Nachfolger von φp (2/7) Fall 1.2: bal(φp) = 0 upin(φp) Algorithmen und Datenstrukturen I, AVL-Bäume 16/38

Fall 1: p ist linker Nachfolger von φp (3/7) Fall 1.3: bal(φp) = 1 der linke Teilbaum von φp war schon höher als der rechte Teilbaum da der Baum von p um 1 gewachsen ist, ist die AVL-Ausgeglichenheit nun bei φp verletzt Algorithmen und Datenstrukturen I, AVL-Bäume 17/38

Fall 1: p ist linker Nachfolger von φp (4/7) Fall 1.3.1 bal(p) = 1, anschließend fertig Algorithmen und Datenstrukturen I, AVL-Bäume 18/38

Fall 1: p ist linker Nachfolger von φp (5/7) nach Voraussetzung: Baum von p um 1 gewachsen linker Teilbaum von p um 1 höher als rechter nach Rotation ist Teilbaum mit Wurzel φp nicht gewachsen Algorithmen und Datenstrukturen I, AVL-Bäume 19/38

Fall 1: p ist linker Nachfolger von φp (6/7) Fall 1.3.2 bal(p) = +1, anschließend fertig Algorithmen und Datenstrukturen I, AVL-Bäume 20/38

Fall 1: p ist linker Nachfolger von φp (7/7) für t 2 und t 3 gilt: entweder beide leer oder einer Höhe h 1 und der andere Höhe h 2 können nicht die gleiche Höhe haben, denn rechter Teilbaum von p ist um 1 gewachsen und der rechte Teilbaum ist um 1 höher als der linke Algorithmen und Datenstrukturen I, AVL-Bäume 21/38

Fall 2: p ist rechter Nachfolger von φp (1/1) analog zu Fall 1 wenn nötig Rotation nach links oder Doppelrotation rechts links Algorithmen und Datenstrukturen I, AVL-Bäume 22/38

Zusammenfassung Einfügen im schlimmsten Fall wird upin für alle Knoten auf dem Suchpfad bis zur Wurzel aufgerufen in jedem Fall wird aber nur eine Rotation oder Doppelrotation durchgeführt damit ist klar, dass Einfügen eines neuen Schlüssels in einen AVL-Bau mit N Schlüsseln in O(logN) Schritten ausführbar ist Algorithmen und Datenstrukturen I, AVL-Bäume 23/38

Entfernen eines Schlüssels zunächst Suche des zu entfernenden Schlüssels nicht gefunden fertig sonst 3 Fälle 1. beide Nachfolger Blätter 2. ein Nachfolger innerer Knoten und einer Blatt 3. beide Nachfolger innere Knoten Algorithmen und Datenstrukturen I, AVL-Bäume 24/38

Fall 1: beide Nachfolger Blätter (1/2) beide Nachfolger des Knotens mit dem zu entfernenden Schlüssel sind Blätter ersetzen des Knotens durch ein Blatt sei p der Vorgänger des neuen Blattes dann muss der andere Teilbaum q von p die Höhe 0, 1 oder 2 haben Algorithmen und Datenstrukturen I, AVL-Bäume 25/38

Fall 1: beide Nachfolger Blätter (2/2) q hat Höhe 1: jetzt bal(p) { 1, 1} q hat Höhe 0: jetzt bal(p) = 0 und Höhe von p hat sich um 1 verringert Aufruf einer Prozedur upout auf dem Suchpfad zur Wurzel q hat Höhe 2: zuerst Rotation oder Doppelrotation um Baum mit Wurzel p wieder auszugleichen wenn die neue Wurzel dieses Teilbaumes neuen Balancefaktor 0 hat, ist die Höhe um 1 gesunken dann Aufruf von upout Algorithmen und Datenstrukturen I, AVL-Bäume 26/38

Fall 2: ein Nachfolger innerer Knoten und einer Blatt wenn p nur einen inneren Knoten q und ein Blatt als Nachfolger hat müssen beide Nachfolger von q Blätter sein dann wird der Schlüssel von p durch den Schlüssel von q ersetzt und q durch ein Blatt da die Höhe des Teilbaumes mit Wurzel p von 2 auf 1 gesunken ist Aufruf von upout Algorithmen und Datenstrukturen I, AVL-Bäume 27/38

Fall 3: beide Nachfolger von p innere Knoten wie bei natürlichen Suchbäumen Ersetzen des Schlüssels von p durch den Schlüssel des symmetrischen Vorgängers oder Nachfolgers und Entfernen des symmetrischen Vorgängers oder Nachfolgers d.h. es wird ein Knoten entfernt, der entsprechend Fall 1 oder Fall 2 zu behandeln ist Algorithmen und Datenstrukturen I, AVL-Bäume 28/38

upout(p) wenn upout(p) aufgerufen wird, gilt: bal(b) = 0 und die Höhe des Teilbaumes mit Wurzel p ist um 1 gesunken Algorithmen und Datenstrukturen I, AVL-Bäume 29/38

Fall 1: p ist linker Nachfolger von φp (1/7) Fall 1.1: bal(φp) = 1 Aufruf von upout(φp) Algorithmen und Datenstrukturen I, AVL-Bäume 30/38

Fall 1: p ist linker Nachfolger von φp (2/7) Fall 1.2: bal(φp) = 0 fertig Algorithmen und Datenstrukturen I, AVL-Bäume 31/38

Fall 1: p ist linker Nachfolger von φp (3/7) Fall 1.3: bal(φp) = 1 der rechte Teilbaum war also schon höher als der linke, der noch um 1 niedriger wurde Algorithmen und Datenstrukturen I, AVL-Bäume 32/38

Fall 1: p ist linker Nachfolger von φp (4/7) Fall 1.3.1: bal(q) = 0 fertig Algorithmen und Datenstrukturen I, AVL-Bäume 33/38

Fall 1: p ist linker Nachfolger von φp (5/7) Fall 1.3.2: bal(q) = 1 upout(r) Algorithmen und Datenstrukturen I, AVL-Bäume 34/38

Fall 1: p ist linker Nachfolger von φp (6/7) Fall 1.3.3 bal(q) = 1 Algorithmen und Datenstrukturen I, AVL-Bäume 35/38

Fall 1: p ist linker Nachfolger von φp (7/7) Teilbaum mit Wurzel q war bereist vor dem Entfernen um 1 höher als Teilbaum mit Wurzel p d.h. Teilbaum mit Wurzel q muss die Höhe h + 2 haben wegen bal(q) = 1 hat der linke Teilbaum von q die Höhe h + 1 und der rechte die Höhe h die Teilbäume von z haben entweder beide die Höhe h oder höchstens einer die Höhe h 1 die Höhe des Teilbaumes mit der Wurzel r hat um 1 abgenommen Algorithmen und Datenstrukturen I, AVL-Bäume 36/38

Fall 2: p ist rechter Nachfolger von φp ist völlig symmetrisch zu Fall 1 Algorithmen und Datenstrukturen I, AVL-Bäume 37/38

Zusammenfassung Entfernen anders als upin, kann es sein, dass upout nach einer Rotation oder Doppelrotation erneut aufgerufen wird aber Aufwand für Rotation ist konstant und Höhe ist beschränkt Literaturhinweis Entfernen eines Schlüssels in einem AVL-Baum mit N Schlüsseln in O(logN) Schritten ausführbar Die Graphen in diesem Kapitel sind aus dem Buch Algorithmen und Datenstrukturen von Ottmann & Widmayer. Algorithmen und Datenstrukturen I, AVL-Bäume 38/38