Algorithmen und Datenstrukturen 1

Ähnliche Dokumente
ADS: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1

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

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

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Software Entwicklung 1

Vorlesung Datenstrukturen

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

Motivation Binäre Suchbäume

Binäre Bäume Darstellung und Traversierung

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Algorithmen und Datenstrukturen

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

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B4.1 Definitionen und Eigenschaften. B4.2 Traversierung. B4.

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

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

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

Algorithmen und Datenstrukturen

Mehrwegbäume Motivation

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen SS07

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

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

Algorithmen und Datenstrukturen I AVL-Bäume

Algorithmen und Datenstrukturen 1

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren

Logische Datenstrukturen

Informatik II Bäume zum effizienten Information Retrieval

Kapitel 12: Induktive

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

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

Datenstrukturen & Algorithmen

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

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

2.4 Durchlaufen von Bäumen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

3 Dynamische Datenstrukturen

7. Sortieren Lernziele. 7. Sortieren

13. Binäre Suchbäume

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl:

3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen. Heapsort verfeinert die Idee des Sortierens durch Auswahl:

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

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

ADS: Algorithmen und Datenstrukturen

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Oracle 10g Einführung

Algorithmen und Datenstrukturen

Anwendungsbeispiel MinHeap

3.8 Bäume. Definition des Baumes

Algorithmen und Datenstrukturen

18. Natürliche Suchbäume

Algorithmen und Datenstrukturen 1-5. Seminar -

Datenstrukturen. einfach verkettete Liste

Informatik II, SS 2014

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstruktur Baum Software Entwicklung 1

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.

Copyright, Page 1 of 7 Heapsort

10. Hausübung Algorithmen und Datenstrukturen

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

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

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

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

ContainerDatenstrukturen. Große Übung 4

Algorithmen und Datenstrukturen 1

Bäume und der Sequence ADT

Datenstrukturen und Algorithmen

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen & Datenstrukturen

Geordnete Binärbäume

Übung zur Vorlesung Algorithmische Geometrie

Software Entwicklung 1

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 143

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

Übung Datenstrukturen. Bäume

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Bäume 1. Thomas Röfer

11. Elementare Datenstrukturen

Kap. 4.2: Binäre Suchbäume

Grundlagen der Programmierung

Einführung in die Programmierung (EPR)

9. Natürliche Suchbäume

Transkript:

Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer, G. Brewka,Uwe Quasthoff, Rald Der

Binärbäume Def.: Ein Binärbaum ist eine endliche Menge von Elementen, die entweder leer ist oder ein ausgezeichnetes Element - die Wurzel des Baumes - besitzt und folgende Eigenschaften aufweist: - Die verbleibenden Elemente sind in zwei disjunkte Untermengen zerlegt. - Jede Untermenge ist selbst wieder ein Binärbaum und heißt linker bzw. rechter Unterbaum des ursprünglichen Baumes Peter F. Stadler Algorithmen und Datenstrukturen 1 2

Formale ADT-Spezifikation: BINTREE Datentyp BINTREE, Basistyp ELEM Operationen: CREATE: BINTREE EMPTY: BINTREE {TRUE, FALSE} BUILD: BINTREE x ELEM x BINTREE BINTREE LEFT: BINTREE - {b 0 } BINTREE ROOT: BINTREE - {b 0 } ELEM RIGHT: BINTREE - {b 0 } BINTREE Axiome: CREATE = b 0 ; EMPTY (CREATE) = TRUE; l, r BINTREE, d ELEM: EMPTY (BUILD (l, d, r)) = FALSE; LEFT (BUILD (l, d, r)) = l; ROOT (BUILD (l, d, r)) = d; RIGHT (BUILD (l, d, r) = r; Peter F. Stadler Algorithmen und Datenstrukturen 1 3

Testfrage Welche Binärbäume (geordneten Bäume) entstehen durch BUILD (BUILD (0, b, BUILD (0, d, 0)), a, BUILD (0, c, 0)) b a d c BUILD (BUILD (BUILD (0, d, 0), b, 0), a, BUILD (0, c, 0)) a b c Peter F. Stadler Algorithmen und Datenstrukturen 1 4 d

Eigenschaften von Binärbäumen I Satz: Die maximale Anzahl von Knoten eines Binärbaumes (1) auf Stufe i ist 2 i, i 0 (2) der Höhe h ist 2 h -1, h 0 (Der leere Baum hat Höhe 0) Def.: Ein vollständiger Binärbaum der Stufe k hat folgende Eigenschaften: - Jeder Knoten der Stufe k ist ein Blatt. - Jeder Knoten auf einer Stufe < k hat nicht-leere linke und rechte Unterbäume. Def.: In einem strikten Binärbaum besitzt jeder innere Knoten nicht-leere linke und rechte Unterbäume Peter F. Stadler Algorithmen und Datenstrukturen 1 5

Eigenschaften von Binärbäumen II Def.: Ein fast vollständiger Binärbaum ist ein Binärbaum, so daß gilt: (1) Jedes Blatt im Baum ist auf Stufe k oder k+1 (k 0) (2) Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume (3) Falls ein innerer Knoten einen rechten Nachfolger auf Stufe k+1 besitzt, dann ist sein linker Teilbaum vollständig mit Blättern auf Stufe k+1 Def.: Ein ausgeglichener Binärbaum ist ein Binärbaum, so daß gilt: (1) Jedes Blatt im Baum ist auf Stufe k oder k+1 (k 0) (2) Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume Zwei Binärbäume werden als ähnlich bezeichnet, wenn sie dieselbe Struktur besitzen. Sie heißen äquivalent, wenn sie ähnlich sind und dieselbe Information enthalten. Peter F. Stadler Algorithmen und Datenstrukturen 1 6

Veranschaulichung der Definitionen a b c Peter F. Stadler Algorithmen und Datenstrukturen 1 7 d

Veranschaulichung der Definitionen a b c Peter F. Stadler Algorithmen und Datenstrukturen 1 8 d

Speicherung in Binärbäumen Vereinbarung: Schlüssel in den Knoten des Baumes gespeichert. Dieser hat also so viele Knoten wie Schlüssel. Für jeden Knoten gilt: Die Schlüssel im li. Teilbaum sind sämtlich kleiner als der in der Wurzel und dieser ist wiederum kleiner als die Schlüssel im re. Teilbaum. Peter F. Stadler Algorithmen und Datenstrukturen 1 9

Speicherung von Binärbäumen I 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 4 2 8 6 9 1 + 2 10!= 4 8? 5-1 a? -1 12-1 -1? -1-1 Peter F. Stadler Algorithmen und Datenstrukturen 1 10 10 11 7

Speicherung von Binärbäumen II 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. Satz: Ein fast vollständiger Baum mit n Knoten sei sequentiell nach folgendeem Nummerierungsschema 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 1 2 3 4 5 6 7 a b c d Wie sieht der entartete Fall aus? Peter F. Stadler Algorithmen und Datenstrukturen 1 11

Suchen in Binärbäumen Die Suche nach einem Schlüssel x in einem Baum (Teilbaum) läuft nach folgendem rekursiven Schema ab: Man inspiziere den Wurzelknoten des Baumes. Falls x = Schlüssel des inspizierten Knotens: Suche beendet. Sonst: Falls x < Schlüssel des inspizierten Knotens: Setze Suche im linken Teilbaum fort. Falls x > Schlüssel des inspizierten Knotens: Setze Suche im rechten Teilbaum fort. Maximale Anzahl inspizierter Knoten: Tiefe des Baumes. Suche innerhalb der Knoten etwa durch lineares oder binäres Suchen zu realisieren. Da l m, ist Aufwand dafür konstant. Peter F. Stadler Algorithmen und Datenstrukturen 1 12

Aufbau von Binärbäumen Operationen zum Aufbau eines Binärbaums (Einfügen von Knoten) sowie dem Entfernen von Knoten sind relativ einfach: Einfügen: Eingefügt wird immer bei Blättern. Zunächst wird das einzufügende Element gesucht (und nicht gefunden). An der Stelle, wo die Suche endet, wird das Element angefügt. Löschen (simple Lösung): Das zu löschende Element wird gesucht. Es wird eine Löschmarkierung angebracht, die aussagt, dass das Element gelöscht ist. Trotzdem wird der Knoten wie bisher zur Navigation im Baum genutzt. Nachteil: Beim Löschen wird kein Speicher frei. Deshalb gelegentlich den ganzen Baum reorganisieren, d.h. ohne gelöschte Elemente neu aufbauen. Peter F. Stadler Algorithmen und Datenstrukturen 1 13

Durchlaufen eines Binärbaums Baumdurchlauf (Traversierung): Verarbeitung aller Baumknoten gemäß vorgegebener Strukturierung Rekursiv anzuwendende Schritte 1. Verarbeite Wurzel: W 2. Durchlaufe linken UB: L 3. Durchlaufe rechten UB: R Durchlaufprinzip impliziert sequentielle, lineare Ordnung auf der Menge der Knoten 3 Strategien verbleiben aufgrund Konvention: linker UB vor rechtem UB 1. Vorordnung (preorder): WLR 2. Zwischenordnung (inorder): LWR 3. Nachordnung (postorder): LRW 6 Möglichkeiten: Peter F. Stadler Algorithmen und Datenstrukturen 1 14

Durchlaufmöglichkeiten I Referenzbeispiel WLR: + * a - LWR: a * b - b c / d e c + d / e LRW: Peter F. Stadler Algorithmen und Datenstrukturen 1 15

Durchlaufmöglichkeiten II Anschauliche Darstellung Ausgabe bei Passage des Turms (Knoten) im Fall WLR: in Richtung Süden + * a - LWR: an seiner Südseite a * b - b c / d e c + d / e LRW: in Richtung Norden a b c - * d e / + Peter F. Stadler Algorithmen und Datenstrukturen 1 16

Rekursive Realisierung Rekursive Version für Inorder-Traversierung (LWR) DurchlaufInOrder(Baum) Fall Baum leer, dann fertig sonst DurchlaufInOrder(LinkeTochter(Baum)) Drucke Inhalt des aktuellen Knotens DurchlaufInOrder(RechteTochter(Baum)) Peter F. Stadler Algorithmen und Datenstrukturen 1 17

Iterative Realisierung Iterative Version: LWR 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). Peter F. Stadler Algorithmen und Datenstrukturen 1 18

Iterative Version: Durchlaufbeispiel Stapel cuurent Aktion Ausgabe + + 1 - + * * 1 - + * a a 1 - + * O 2 a + O 2 * + - - 1 - + - b b 1 - + - O 2 b Peter F. Stadler Algorithmen und Datenstrukturen 1 19