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

Ähnliche Dokumente
Übung zur Vorlesung Algorithmische Geometrie

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

13. Binäre Suchbäume

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

Algorithmen und Datenstrukturen Balancierte Suchbäume

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

Informatik II, SS 2014

14. Rot-Schwarz-Bäume

Tutorium Algorithmen & Datenstrukturen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Copyright, Page 1 of 8 AVL-Baum

Tutoraufgabe 1 (2 3 4 Bäume):

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

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

Datenstrukturen & Algorithmen

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

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

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

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Übung Algorithmen I

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Nachtrag zu binären Suchbäumen

Algorithmen und Datenstrukturen Suchbaum

Programmiertechnik II

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

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Amortisierte Analysen

Informatik II, SS 2014

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

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Datenstrukturen und Algorithmen

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Kap. 4.2: Binäre Suchbäume

Binäre Bäume Darstellung und Traversierung

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

WS 2009/10. Diskrete Strukturen

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Algorithmen und Datenstrukturen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Unterscheidung: Workflowsystem vs. Informationssystem

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

2.5.1 Binäre Suchbäume Optimale Suchbäume Balancierte Bäume Skip-Listen Union-Find-Strukturen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Vorkurs Informatik WiSe 15/16

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Datenstrukturen & Algorithmen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Suchen und Sortieren

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Kapitel 5: Dynamisches Programmieren Gliederung

11.1 Grundlagen - Denitionen

Kurs 1613 Einführung in die imperative Programmierung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Programmiertechnik II

368 4 Algorithmen und Datenstrukturen

Anmerkungen zur Übergangsprüfung

3 Quellencodierung. 3.1 Einleitung

15 Optimales Kodieren

Programmierung und Modellierung

Geordnete Binärbäume

DATENSTRUKTUREN UND ZAHLENSYSTEME

Kapitel 9 Suchalgorithmen

Grundlagen der Programmierung 2. Bäume

Sortierverfahren für Felder (Listen)

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Theoretische Grundlagen der Informatik

2. Musterlösung. Problem 1: Least Common Ancestor

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Sortierte Folgen 250

3. Entscheidungsbäume. Verfahren zum Begriffslernen (Klassifikation) Beispiel: weiteres Beispiel: (aus Böhm 2003) (aus Morik 2002)

Suchen und Sortieren Sortieren. Heaps

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Vorlesung : Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

3. Musterlösung. Problem 1: Boruvka MST

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Das Briefträgerproblem

1. Einleitung wichtige Begriffe

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

DAP2-Klausur

Transkript:

1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem (2, 3)-Baum: Zeichnen Sie den Ablauf. Lösungsvorschlag 8.1 a) Einfügen:

2 b) Löschen: Aufgabe 8.2 (P) Rot-Schwarz-Bäume Ein Rot-Schwarz-Baum ist ein binärer Suchbaum, dessen Knoten entweder rot oder schwarz gefärbt sind und die folgenden 5 Regeln erfüllt: Der Schlüssel eines Vaterknotens ist grösser als der Schlüssel seines linken und kleiner als der Schlüssel seines rechten Kindknotens. Ein Knoten ist entweder schwarz oder rot Die Wurzel ist schwarz Ein Pfad, von der Wurzel zu einem Endknoten, hat gleich viele schwarze Knoten. Ein roter Knoten, hat nur schwarze Kindknoten (d.h. es folgen niemals zwei rote Knoten aufeinander). Mehr Informationen finden Sie, zum Beispiel hier:

3 http://www.math.bas.bg/ nkirov/2009/netb201/slides/ch09/ch09b.html http://www.computerperception.ch/ctr/archive/project1/rbtree1/description/rbtree.html http://de.wikipedia.org/wiki/rot-schwarz-baum a) Finden Sie eine Darstellung von Rot-Schwarz-Bäumen durch geeignete (a,b)-bäume. b) Überlegen Sie sich einen Algorithmus zum Einfügen in Rot-Schwarz-Bäumen und testen sie ihn Anhand des Beispiels aus der Vorlesung zum Einfügen in (a,b)-bäumen (p42ff). c) Diskutieren Sie, welche Probleme beim Einfügen in Rot-Schwarz-Bäumen auftreten und vergleichen Sie es mit dem Löschen in (a,b)-bäumen. Lösungsvorschlag 8.2 a) Rot-Schwarz-Bäume sind eine Darstellung von (2, 4)-Bäumen, man wandelt die Knoten eines (2, 4)-Baumes nach folgendem Schema um (Kreise repräsentieren Teilbäume): a = a Grad 2 Knoten 1 2 a, b 1 2 = b a 3 Grad 3 Knoten 1 2 3 a, b, c 1 2 = b a c Grad 4 Knoten 1 2 3 4 1 2 3 4 b) Zunächst fügt man wie bei einem normalen binären Suchbaum ein und färbt den neuen Knoten (k) rot. Falls der Vaterknoten schwarz ist, bleiben alle Eigenschaften erfüllt und es ist nichts weiter zu tun. Ist der Vaterknoten rot, müssen wir eine Korrektur durchführen und unterscheiden hierzu zwei Fälle: Schwarzer Nachbar: Dies entspricht einer falschen Anordnung der Teile eines 4-Knotens und wird durch folgende Umsortierung behoben: g = k n v g v 1 1 k 4 n 2 3 4 2 3 1 1

4 Roter Nachbar: Dies entspricht dem split -Fall im (2, 4)-Baum und hat hier ein Umfärbung der Knoten zufolge und ebenfalls einen rekursiven Aufruf dieser Prozedur, sollte sich der Farbkonflikt für den Großvaterknoten (g) wiederholen. Wird bei diesem Vorgehen die Wurzel des gesamt Baumes erreicht, so wird sie nicht rot gefärbt und das Verfahren terminiert, was dem Entstehen eines neuen Wurzelknotens entspricht. g = g n v n v 1 2 k 4 1 2 k 4 3 3 3 3 Den (2, 4)-Baum aus dem Vorlesungsbeispiel kann man wie folgt darstellen: 14 5 3 10 28 19 42 Führt man auf diesem Baum Insert(8); aus erhält man: 14 5 3 10 28 19 42 8 Anschließend Insert(32); liefert: 14 5 3 10 28 19 42 8 32 Der hier entstehende Rot-Schwarz-Baum enspricht nicht der Umsetzung des Baums des Beispiels, da nicht das Element rechts der Mitte nach oben geschoben wird, sondern das Ältere. Dies wäre auch für den (2, 4)-Algorithmus eine Möglichkeit, denn welches der beiden mittleren Elemente benutzt wird, ist für die Struktur und Effizienz des Baumes nicht wichtig. Man benötigt lediglich ein deterministisches Verfahren zur Bestimmng des Elements. Welches Verfahren man schließlich wählt liegt im eigenen Ermessen. Der Rot-Schwarz-Baum zur Vorlesung wäre:

5 14 8 5 10 32 28 42 3 19 c) Bereits beim Löschen im (2, 4)-Baum werden mehrere Fälle unterschieden. Betrachtet man nun die direkte Übertragung der (2, 4)-Bäume auf Rot-Schwarz-Bäume und versucht, Remove entsprechend zu übersetzen, muss man bei Rot-Schwarz-Bäumen bei diesen Fällen zusätzlich weitere Fälle unterscheiden. Betrachten wir zum Beispiel den Fall, dass im (2, 4)-Baum zwei Knoten vereinigt werden müssen; konkret folgender Baum (links im Bild). Wird in diesem Baum die 1 gelöscht, entsteht ein Baum mit Wurzel 4, linkem Blatt 2, 3 und rechtem Blatt 5 (siehe rechter Baum). 2, 4 = 4 1 3 5 2,3 5 Der entsprechende Rot-Schwarz-Baum kann zwei Varianten haben (durch Einfügen und Löschen kann die zweite Variante entstehen). 4 2 2 5 1 4 1 3 3 5 Würde man nun das Löschen aus dem (2, 4)-Baum übertragen, muss man diese beiden Fälle unterscheiden. Entsprechend gibt es auch für die anderen Fälle des Löschens in (2, 4)-Bäumen wieder Fallunterscheidungen auf den Rot-Schwarz-Bäumen. Eine ausführliche Diskussion aller Fälle ist hier nicht verlangt. Für die konkrete Umsetzung des Löschens bei Rot-Schwarz-Bäumen finden Sie in der Literatur ausführliche Erklärungen, z.b. in dem Buch Introductions to Algorithms von T.H. Cormen et al. Aufgabe 8.3 [5 Punkte] (H) (a, b) Baum a) Fügen Sie in den folgenden (3, 6)-Baum die Elemente 2, 4 und 12 ein. Zeichnen Sie, was in jedem Schritt passiert.

6 b) Löschen Sie aus dem resultierenden Baum die Elemente 2, 17, 3 und 21. Zeichnen Sie, was in jedem Schritt passiert. Lösungsvorschlag 8.3 a) insert 2: insert 4: Das linke Blatt hat zuviele Schlüssel, es wird aufgeteilt. insert 12:

7 Das Blatt hat zuviele Schlüssel, es wird aufgeteilt. Der innere Knoten hat zuviele Schlüssel, er wird aufgeteilt. b) remove 2: remove 17:

8 Das Blatt hat zuwenig Schlüssel, es klaut einen Schlüssel beim linken Nachbarn. Um die Suchbaumeigenschaft zu erhalten, werden die Schlüssel 13 und 15 rotiert. remove 3: Das Blatt hat zuwenig Schlüssel, der einzige Nachbar hat genau a 1 = 2 Schlüssel, kann also keinen mehr abgeben. Die beiden Knoten werden gemergt. Da der Vater dann ein Kind weniger hat, wandert ein Schlüssel (4) runter.

9 remove 21: Da der Schlüssel im inneren Knoten steht, wird er durch den größten Schlüssel (19), der kleiner ist als er selbst, ersetzt. Das Blatt, in dem der Schlüssel 19 stand, hat zuwenig Schlüssel, der einzige Nachbar hat genau a 1 = 2 Schlüssel, kann also keinen mehr abgeben. Die beiden Knoten werden gemergt. Da der Vater dann ein Kind weniger hat, wandert ein Schlüssel (13) runter. Der Vater hat nun auch zuwenig Schlüssel.Es muss wieder gemergt werden. Da der Vater dann ein Kind weniger hat, wandert ein Schlüssel (19) runter. Der resultierende Baum hat eine Wurzel mit nur 2 Kindern. Dies ist in einem (3, 6)- Baum nur der Wurzel erlaubt. Für andere innere Knoten wäre die Grad-Invariante verletzt.

10 Aufgabe 8.4 [5 Punkte] (H) (2,3)-Baum Beweisen Sie folgende Aussage: Für einen (2, 3)-Baum gibt es eine Folge von n insert bzw. remove-operationen, so dass die Anzahl der nötigen Aufspaltungen und Vereinigungen in Ω(n log n) ist. Lösungsvorschlag 8.4 Zunächst sorgen wir dafür, dass der (anfangs leere) (2,3)-Baum eine gewisse Anzahl von Blättern enthält. Wir berechnen dazu die größte Zweierpotenz, die kleiner oder gleich n/2 ist. Dazu sei bemerkt, dass diese Größe n = 2 log 2 (n/2) höchstens um den Faktor 1/4 kleiner als n ist, also Ω(n). Wir fügen also erstmal die Schlüssel von 1 bis n in den (2, 3)-Baum ein. Die restlichen n n Operationen verwenden wir, um abwechselnd immer wieder denselben Schlüssel mit remove zu entfernen und mit insert wieder einzufügen. Die Anzahl dieser Operationen ist natürlich auch mindestens halb so groß wie n, also natürlich auch in Ω(n). Bei jeder remove-operation wird ein Blatt entfernt, so dass der entsprechende Vater-Knoten nur noch ein Kind hat. Dieser Knoten muss also mit einem anderen Knoten vereinigt werden. Der gemeinsame Vater-Knoten hatte vorher jedoch auch nur diese zwei Kinder und muss nun ebenfalls mit seinem einzigen Bruder verschmolzen werden usw. Dieser Prozess endet erst an der Wurzel. Umgekehrt wird bei jeder darauffolgenden insert-operation ein Knoten mit drei Kindern in zwei Knoten mit je zwei Kindern aufgespalten, was sich auch wieder bis zur Wurzel fortsetzt. Da die Höhe des Baums mit n Ω(n) Blättern gleich log 2 (n ) Ω(log 2 n ) ist, beträgt der Gesamtaufwand Ω(n log 2 n).