7.4 Traversieren von Bäumen

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Der k-d-Baum Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Imperative Programmierung
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Baumstrukturen Richard Göbel.
Suche in Texten: Suffix-Bäume
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 – Graphen)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26 - Graphen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Informatik II – Kapitel 13
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
6 Folgen (Teil II - Datenstrukturen und Algorithmen)
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
1 Inhaltsverzeichnis 1. Einleitung 1.1 Architektur von IV-Systemen 1.2 Anwendungsbeispiel OMNIS/Myriad 1.3 Vorlesungsziel 1.4 Abbildung E/R und objektorientierte.
IKG - Übung Diskrete Mathe I – Jörg Schmittwilken
Katja Losemann Chris Schwiegelshohn
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Zurück zur ersten Seite SEP Entwurf und Implementierung einer effizienten Rechenstruktur zur Baumdarstellung mittels Java-Texteditoren Betreuer : Matthias.
Rekursion Richard Göbel.
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Animationen zu Kap. 4.3: AVL-Bäume
2. Die rekursive Datenstruktur Baum 2
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Binärbäume Klaus Becker 2003.
Einführung in die Programmiersprache C 4
Ch. Turnheer/ M. Vilanova 2002
Binäre Bäume Louis Moret und Reto Huber, 5. 11
Vorlesung Binärer Suchbaum II-
Graphen und Bäume.
Algorithmen und Datenstrukturen Übungsmodul 8
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung
10 Graphen gerichtete und ungerichtete, mit Marken an Ecken und/oder Kanten Anwendungsgebiete: Verkehrsnetze, Kommunikationsnetze, Netzpläne, Spiele,...
Algorithmen und Datenstrukturen 1 SS 2002
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Binärer Baum, Binärer Suchbaum I
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Binärbäume.
Klausur „Diskrete Mathematik II“
Laufzeitverhalten beim Sortieren
Suchbäume.
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
2.4 Durchlaufen von Bäumen
Heapsort-Algorithmus
 Präsentation transkript:

7.4 Traversieren von Bäumen für Konstruktion/Auswertung, Ein/Ausgabe, Umwandlung zwischen linearer und nichtlinearer Repräsentation, . . . . . Traversieren = „mit jedem Knoten wird etwas gemacht“ oder „alle Knoten werden linear angeordnet“ oder „alle Knoten werden in bestimmter Reihenfolge manipuliert“

(vgl. Traversieren von Listen ! ) data Tree t = E | N(Tree t)t(Tree t) ohne bestimmte Reihenfolge: z.B. instance Functor Tree where fmap f E = E fmap f(N l x r) = N(fmap f l)(f x)(fmap f r) Tiefendurchlauf (Tiefensuche, depth-first traversal) preorder, inorder, postorder :: Tree t -> [t] Breitendurchlauf (Breitensuche, breadth-first traversal)

Tiefendurchlauf in Präordnung (preorder traversal) für Binärbäume: erst Wurzel, dann linker Teilbaum, dann rechter Teilbaum preorder E = [] preorder(N l x r) = [x] ++ preorder l ++ preorder r Entsprechend Inordnung (inorder traversal), erst linker Teilbaum, dann Wurzel, dann rechter Teilbaum und Postordnung (postorder traversal): erst linker Teilbaum, dann rechter Teilbaum, dann Wurzel Beispiel Operatorbaum: Präordnung liefert Präfix- (Polnische) Notation Inordnung liefert Infix-Notation (ohne Klammern!) Postordnung liefert Postfix- (umgekehrte Polnische) Notation

Externe Iteratoren für Baumtraversierung mit Tiefendurchlauf: class LinkedList ... class LinkedTree ... ... ... Iterator iterator(){.....} Iterator preorder() {.....} Iterator inorder() {.....} Iterator postorder(){.....} } } Interne Iteratoren: void iterate(Op op){.....} void preorder(Op op) {....} void inorder(Op op) {....} void postorder(Op op){....} Typische Implementierung mit nichtlinearer Rekursion

Iteratives Traversieren (Tiefendurchlauf) bei linearer Präfix-Darstellung: trivial; sonst mittels Keller: nicht sofort behandelte Abzweigungen werden gekellert; mit aufwendigerer Repräsentation, z.B. gefädelte Darstellung: + * / a - d e b c

Beachte: Tiefendurchlauf nicht anwendbar auf unendliche Bäume ! Breitendurchlauf eines Mehrwegwaldes : „erst alle Wurzeln des Waldes (Ebene 0), dann Breitensuche auf Ebene 1“ data Tree t = N t [Tree t] root(N r s) = r subt(N r s) = s list :: [Tree t] -> [t] list[] = [] list forest = roots ++ list branches where roots = map root forest branches = concat(map subt forest) Typischer Aufruf: list[mytree]

Iterativer Breitendurchlauf: bei ebenenweiser Darstellung: trivial; sonst: unter Verwendung einer Schlange zum Speichern der nicht sofort behandelten Abzweigungen: Baum in leere Schlange einfügen. Wiederholen: Baum aus Schlange entnehmen; Wurzel manipulieren; Teilbäume an Schlange anhängen; bis Schlange leer.

7.5 Beispiel Übersetzung von Programmiersprachen 1. Lexikalische Analyse: Quellenprogramm in interne Darstellung umwandeln. Symboltabelle aufbauen. 2. Syntaktische Analyse: Quellenprogramm auf syntaktiche Korrektheit prüfen. Syntaxbaum aufbauen. 3. Semantische Analyse: Syntaxbaum traversieren zwecks statischer Typprüfung 4. Codeerzeugung: zwecks Erzeugung der Instruktionsfolge des Objektprogramms