ADS: Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen 1

Binäre Bäume Darstellung und Traversierung

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

Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

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

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

Algorithmen und Datenstrukturen

13. Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume

Datenstrukturen und Algorithmen

Datenstrukturen. einfach verkettete Liste

Datenstrukturen & Algorithmen

7. Sortieren Lernziele. 7. Sortieren

Tutorium Algorithmen & Datenstrukturen

Grundlagen der Programmierung

Kap. 4.2: Binäre Suchbäume

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

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

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

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

Klausur Informatik B April Teil I: Informatik 3

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Algorithmen zur Visualisierung von Graphen

Leitprogramm der Informatik Binäre Suchbäume

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

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

Binärbäume. Prof. Dr. E. Ehses,

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

Algorithmen und Datenstrukturen Suchbaum

Binärbäume: Beispiel

Beispiel zu Datenstrukturen

Bäume, Anwendung und Begriffe

Algorithmen und Datenstrukturen Balancierte Suchbäume

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am

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

Graphen und Bäume. A.1 Graphen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik II, SS 2014

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Verkettete Datenstrukturen: Bäume

ADS: Algorithmen und Datenstrukturen 2

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Zeichnen von Graphen. graph drawing

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Bäume, Suchbäume und Hash-Tabellen

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

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

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

Bäume als spezielle Graphen

11. Elementare Datenstrukturen

Geometrische Algorithmen

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

Programmiertechnik II

Algorithmen und Datenstrukturen SS09

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

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

Algorithmen, Datenstrukturen und Programmieren II SS 2001

14. Rot-Schwarz-Bäume

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

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen

Einführung in (Binäre) Bäume

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester Robert Marti

C- Kurs 09 Dynamische Datenstrukturen

Suchbäume mit inneren Knoten verschiedener Knotengrade.

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

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Schulinterner Lehrplan für das Fach Informatik der Sekundarstufe II an der Bettine von Arnim Gesamtschule

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

11.1 Grundlagen - Denitionen

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

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

Kompaktübersicht Bäume

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

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.

Kapitel 9 Suchalgorithmen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Kurs 1613 Einführung in die imperative Programmierung

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

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

Sortierverfahren für Felder (Listen)

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

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

INTERVALLBÄUME. Tanja Lehenauer, Besart Sylejmani

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

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

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 )

Transkript:

ADS: Algorithmen und Datenstrukturen Teil VII Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 08. Dezember 2010 1 / 14

Speicherung in Binärbäumen Vereinbarung: In jedem Knoten des Baumes wird genau ein Schlüssel gespeichert. Der Baum enthält also so viele Knoten wie Schlüssel. Anordnung der Schlüssel in binären Suchbäumen (kommen später) Für jeden Knoten gilt: Die Schlüssel im linken Teilbaum sind sämtlich kleiner als der in der Wurzel und dieser ist wiederum kleiner als die Schlüssel im rechten Teilbaum. 2 / 14

Speicherung von Binärbäumen (1) Verkettete Speicherung: Freispeicherverwaltung der Struktur wird von der Speicherverwaltung des Programmiersystems übernommen. (2) Feldbaum-Realisierung: Simulation einer dynamischen Struktur in einem statischen Feld Eigenschaften: - statische Speicherplatzzuordnung - explizite Freispeicherverwaltung Beispiele: Tafel 3 / 14

Sequenzielle Speicherung von Binärbäumen (3) Sequentielle Speicherung: Methode kommt ohne explizite Verweise aus. Für fast vollständige oder zumindest ausgeglichene Binärbäume bietet sie eine sehr elegante und effiziente Darstellungsform an. Ein fast vollständiger Baum mit n Knoten wird sequentiell nach folgendem Numerierungsschema gespeichert. Für jeden Knoten mit Index i, 1 i n, gilt: Vater(i) hat Nummer i/2 für i > 1 Lsohn(i) hat Nummer 2i für 2i n Rsohn(i) hat Nummer 2i + 1 für 2i + 1 n 4 / 14

Durchlaufen eines Binärbaums Baumdurchlauf (Traversierung) = Verarbeitung aller gespeicherten Schlüssel in einer Reihenfolge, die durch die Baumstruktur gegeben ist. Rekursiv anzuwendende Schritte Verarbeite Wurzel: W Durchlaufe linken UB: L Durchlaufe rechten UB: R Durchlaufprinzip impliziert sequentielle, lineare Ordnung auf der Menge der Knoten Es gibt 6 Möglichkeiten, W, L und R anzuordnen, aber Konvention: linker UB vor rechtem UB Verbleibende 3 Möglichkeiten: Vorordnung (preorder): WLR Zwischenordnung (inorder): LWR Nachordnung (postorder): LRW 5 / 14

Durchlaufmöglichkeiten I b 1 c 2 3 a d 4 5 Vorordnung, preorder, WLR: a b 1 c 2 3 d 4 5 Zwischenordnung, inorder, LWR: 1 b 2 c 3 a 4 d 5 Nachordnung postorder, LRW: 1 2 3 c b 4 5 d a 6 / 14

Durchlauf: Anschauliche Darstellung Wanderung um den Baum, Knoten werden aufgerufen bei bestimmter relativer Bewegung: Norden b 1 c 2 3 a d 4 5 bei Passage Richtung Süden, WLR: a b 1 c 2 3 d 4 5 an Südseite, inorder, LWR: 1 b 2 c 3 a 4 d 5 bei Passage Richtung Norden, LRW: 1 2 3 c b 4 5 d a 7 / 14

Rekursive Realisierung Rekursive Version für Inorder-Traversierung (LWR) DurchlaufInOrder(Baum) Falls Baum leer, dann fertig sonst { DurchlaufInOrder(LinkeTochter(Baum)) Drucke Inhalt des aktuellen Knotens DurchlaufInOrder(RechteTochter(Baum)) } 8 / 14

Iterative Realisierung Iterative Version von LWR (inorder) Ziel: effizientere Ausführung durch eigene Stapelverwaltung Vorgehensweise: Nimm, solange wie möglich, linke Abzweigung und speichere die Knoteninhalte des zurückgelegten Weges auf einem Stapel (Aktion 1). Wenn es links nicht mehr weitergeht, wird der oberste Knoten des Stapels ausgegeben und vom Stapel entfernt. Der Durchlauf wird mit dem rechten Unterbaum des entfernten Knotens fortgesetzt (Aktion 2). 9 / 14

Beispiel für iteratives LWR b 1 c 2 3 a d 4 5 10 / 14

Gefädelte Binärbäume I Ziel: Weitere Verbesserung von iterativen Durchlaufalgorithmen Problem: Es gibt in vielen Fällen keinen Zeiger auf den Nachfolger oder Vorgänger einer Traversierung im Baum Methode benutzt einen Faden, der die Baumknoten in der Folge der Durchlaufordnung verknüpft. Zwei Typen von Fäden: Rechtsfaden verbindet jeden Knoten mit seinem Nachfolgerknoten in Durchlaufordnung Linksfaden stellt Verbindung zum Vorgängerknoten in Durchlaufordnung her. Lösung 1: Explizite Speicherung von 2 Fäden 11 / 14

Gefädelte Binärbäume II Lösung 2: Vermeidung von Redundanz Eine zweite Art der Fädelung kommt ohne zusätzliche Zeiger aus und erfordert daher geringeren Speicherplatzaufwand. Die Algorithmen werden lediglich geringfügig komplexer. Beobachtung 1: Binärbaum mit n Knoten hat n+1 freie Zeiger (null) Beobachtung 2: für die Zwischenordnung können Fadenzeiger in inneren Knoten durch Folgen von Baumzeigern ersetzt werden Idee: Benutze freie Zeiger und Baumzeiger für Fädelung pro Knoten zusätzliche Variablen Lfaden, Rfaden statt Lchild, Rchild zeigen auf linken bzw. rechten Nachbarn in Durchlaufreihenfolge. Achtung: Normale Baumzeiger müssen von Fädelzeigern unterschieden werden. 12 / 14

Gefädelte Binärbäume III Algorithmus für die Inorder-Traversierung Start bei Wurzelknoten Schleife bis der Knoten rechts außen erreicht ist: Solange wie möglich nach links verzweigen Knoten ausgeben Falls Knoten Rfaden hat: Rfaden einen Schritt folgen Knoten ausgeben Sonst falls Knoten rechten Sohn hat: einen Schritt nach rechts verzweigen 13 / 14

Zusammenfassung Definitionen Baum, orientierter Baum (Wurzel-Baum), Binärbaum vollständiger, fast vollständiger, strikter, ausgeglichener Binärbaum Höhe, Grad, Stufe / Pfadlänge Speicherung von Binärbäumen verkettete Speicherung Feldbaum-Realisierung sequentielle Speicherung Baum-Traversierung Preorder (WLR): Vorordnung Inorder (LWR): Zwischenordnung Postorder (LRW): Nachordnung Gefädelte Binärbäume: Unterstützung der (iterativen) Baum-Traversierung durch Links/Rechts-Zeiger auf Vorgänger/Nachfolger in Traversierungsreihenfolge. 14 / 14