Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11

Ähnliche Dokumente
Datenstrukturen & Algorithmen

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

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

Algorithmen und Datenstrukturen Suchbaum

Informatik II, SS 2014

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

Vorlesung Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Algorithmen und Datenstrukturen 2

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Algorithmen und Datenstrukturen

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

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

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

Binäre Bäume Darstellung und Traversierung

Tutorium Algorithmen & Datenstrukturen

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

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

Informatik II, SS 2014

13. Binäre Suchbäume

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

8 Diskrete Optimierung

Klausur Informatik B April Teil I: Informatik 3

14. Rot-Schwarz-Bäume

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

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

Grundbegriffe der Informatik

Dynamische Mengen. Realisierungen durch Bäume

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen (WS 2007/08) 63

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

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

368 4 Algorithmen und Datenstrukturen

Routing Algorithmen. Begriffe, Definitionen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

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

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Graphenalgorithmen I

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

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

Programmiertechnik II

Grundlagen der Programmierung

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

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

2. Repräsentationen von Graphen in Computern

WS 2009/10. Diskrete Strukturen

Customization (Zuschneiden)

Grundbegriffe der Informatik

Graphen: Datenstrukturen und Algorithmen

Teil XII. Datenstrukturen: Bäume, Stacks und Queues. Scientific Computing in Computer Science, Technische Universität München

Kapitel 9 Suchalgorithmen

11.1 Grundlagen - Denitionen

INTERVALLBÄUME. Tanja Lehenauer, Besart Sylejmani

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Graphen. Leonhard Euler ( )

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

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

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

Binary Decision Diagrams (Einführung)

Algorithmen und Datenstrukturen 1

Grundlagen der Programmierung 2. Bäume

Algorithmen und Datenstrukturen Balancierte Suchbäume

9. Übung Algorithmen I

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

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

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

Algorithmen und Datenstrukturen Graphen - Einführung

Kap. 4.2: Binäre Suchbäume

Bäume, Suchbäume und Hash-Tabellen

Programmierung und Modellierung

Einführung in die Graphentheorie. Monika König

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

Konzepte der Informatik

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

Algorithmen und Datenstrukturen 2

Geordnete Binärbäume

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Suchen und Sortieren Sortieren. Heaps

Übung zur Vorlesung Algorithmische Geometrie

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

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Vollständiger Graph. Definition 1.5. Sei G =(V,E) ein Graph. Gilt {v, w} E für alle v, w V,v w, dann heißt G vollständig (complete).

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

2. Übungsblatt zu Algorithmen II im WS 2016/2017

Graphalgorithmen 2. Oleksiy Rybakov. 3. Juni Betreuer: Tobias Werth, Daniel Brinkers

Programmiertechnik II

Kapitel 6: Graphalgorithmen Gliederung

Algorithmen und Datenstrukturen 2

Quadtrees. Christian Höner zu Siederdissen

Anmerkungen zur Übergangsprüfung

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Einführung in die Informatik 2

Bäume und Wälder. Bäume und Wälder 1 / 37

Transkript:

Modul: Programmierung B-PRG Grundlagen der Programmierung Teil V9/ Graphen und Bäume Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (2) Rückblick: Wichtige zusammengesetzte / aggregierte Datentypen / Datenstrukturen / Objekte linear Graph andere Liste list string tupel Stapel stack frozenset Menge Mengeset set gerichtet azyklisch Baum tree union frame dictionary Schlange queue Feld array Vorrangschlange priority queue M-Way Suchbaum search tree Halde heap binary tree quadtree octtree B-Tree 2

Unser heutiges Lernziel Die Brot und Butter Datenstruktur Baum kennen lernen. Eine spezielle Klasse Baum realisieren. Graph gerichtet azyklisch Baum tree Eine erste Zusammenfassung M-Way Suchbaum search tree Halde heap binary tree quadtree octtree B-Tree 3 Übersicht Graph Kategorisierung von Graphen Graphen als Datenstruktur Adjazenzmatrix Inzidenzmatrix Adjazenzliste Baum Heap Implementierung von Bäumen 4 2

Graph - Definition Ein Graph G ist ein geordnetes Paar zweier Mengen: G = (V, E) Dabei bezeichnet V die Menge der im Graph enthaltenen Knoten (Vertex) und E die Menge der Kanten (Edge) des Graphen. Knoten Anschaulich ist ein Graph ein Gebilde aus Knoten (auch Ecken oder Punkte), die durch Kanten verbunden sein können. Kante Achtung: verschiedene Bilder können denselben Graphen darstellen. 5 Kategorisierung von Graphen ungerichtete Graphen ohne Mehrfachkanten: E ist eine Teilmenge aller 2- elementigen Teilmengen von V schlicht oder einfach gerichtete Graphen ohne Mehrfachkanten: E ist eine Teilmenge des kartesischen Produktes V x V e Startknoten von e Digraph (Directed Graph). Startknoten von e 6 3

Kategorisierung von Graphen (Eigenschaften von E) ungerichteten Graphen mit Mehrfachkanten: E ist eine Multimenge [Elemente können mehrfach vorkommen] über der Menge aller 2-elementigen Teilmengen von V gerichteten Graphen mit Mehrfachkanten: E ist eine Multimenge über dem kartesischen Produkt V x V (Multigraph) (Multigraph) Hypergraphen eine Teilmenge der Potenzmenge von V. 7 Eigenschaften von Graphen Hat eine Kante e in gerichteten Graphen die Form (v, v), so spricht man von einer Schleife (Zyklus). Ist jede Kante eines gerichteten Graphen G Element einer ungerichteten Kante von G, so nennt man G auch symmetrisch. = 8 4

Graphen als Datenstruktur Ein Graph als Datentyp sollte mindestens die folgenden Operationen sind haben Einfügen (Kante, Knoten) Löschen (Kante, Knoten) Finden eines Objekts (Kante, Knoten). Die bekanntesten Repräsentation von Graphen im Computer sind die Adjazenzmatrix (Nachbarschaftsmatrix) die Adjazenzliste (Nachbarschaftsliste) die Inzidenzmatrix (Knoten-Kanten-Matrix, seltener genutzt) 9 Adjazenzmatrix Ein Graph mit n Knoten kann durch eine n n-matrix repräsentiert werden. Dazu nummeriert man die Knoten von bis n durch und trägt in die Matrix die Beziehungen der Knoten zueinander ein. 2 3 2 3 4 2 3 4 4 Hypergraphen lassen sich nicht durch eine Adjazenzmatrix darstellen. 0 5

Adjazenzliste Die Adjazenzliste wird in ihrer einfachsten Form durch eine einfach verkettete Liste aller Knoten des Graphen dargestellt, wobei jeder Knoten eine Liste aller seiner Nachbarn (in ungerichteten Graphen) bzw. Nachfolger in gerichteten Graphen besitzt. Vielfachheiten der Kanten Knotengewichte, und Kantengewichte werden meist in Attributen der einzelnen Elemente gespeichert. Adjazenzliste (2) In der Praxis verwendet man daher meist diese Form der Repräsentation. aufwändiger zu implementieren und zu verwalten, bieten aber eine Reihe von Vorteilen gegenüber Adjazenzmatrizen. verbrauchen nur linear viel Speicherplatz, was insbesondere bei dünnen Graphen (also Graphen mit wenig Kanten) von Vorteil ist, während die Adjazenzmatrix quadratischen Platzbedarf bezüglich der Anzahl Knoten besitzt (dafür aber kompakter bei dichten Graphen, also Graphen mit vielen Kanten ist). Zum anderen lassen sich viele graphentheoretische Probleme nur mit Adjazenzlisten in linearer Zeit lösen. 2 6

Inzidenzmatrix (seltener genutzt) Ein Graph mit n Knoten und m Kanten kann auch durch eine n m- Matrix repräsentiert werden. Dazu nummeriert man die Knoten von bis n und die Kanten von bis m durch und trägt in die Matrix die Beziehungen der Knoten zu den Kanten ein. Jede Spalte der Inzidenzmatrix enthält genau zwei von Null verschiedene Einträge. In ungerichteten Graphen zweimal die und in gerichteten Graphen einmal die (Endknoten) und einmal die - (Startknoten). 3 Baum Als Wald bezeichnet man in der Graphentheorie einen ungerichteten Graphen ohne Kreis Zyklus). Ist dieser zusammenhängend, so spricht man von einem (ungerichteten) Baum. Die Zusammenhangskomponenten eines Waldes stellen in diesem Sinne für sich einen Baum dar, so dass ein Wald aus einem oder mehreren Bäumen besteht. Jeder ungerichtete Baum ist also auch ein Wald. Betrachtungen über Wälder lassen sich damit auch auf ungerichtete Bäume übertragen. Umgekehrt sind aber auch Betrachtungen über ungerichtete Bäume häufig leicht auf Wälder übertragbar. 4 7

Gewurzelte Bäume Neben ungerichteten Bäumen betrachtetet man auch gerichtete Bäume, die häufig auch als gewurzelte Bäume bezeichnet werden und sich weiter in In-Trees und Out-Trees unterscheiden lassen. Es gibt einen ausgezeichneten Knoten, den man Wurzel nennt und für den die Eigenschaft gilt, dass alle Kanten von diesem wegzeigen (Out-Tree) oder zu diesem hinzeigen (In-Tree). 5 Eigenschaften die lineare Struktur der Liste wird aufgebrochen. Der maximale Ausgangsgrad wird als Ordnung eines Out-Trees bezeichnet alle Knoten mit Ausgangsgrad 0 bezeichnet man als Blätter. alle Knoten, die kein Blatt sind, als innere Knoten. (Manchmal schließt man die Wurzel dabei aber aus.) Als Tiefe einen Knotens bezeichnet man die Länge des Pfades von der Wurzel zu ihm und als Höhe des Out-Trees die Länge eines längsten Pfades. 6 8

Eigenschaften Für einen von der Wurzel verschiedenen Knoten v bezeichnet man den Knoten, durch den er mit einer eingehenden Kante verbunden ist als Vater, Vaterknoten, Elternknoten oder Vorgänger von v. Als Vorfahren von v bezeichnet man alle Knoten, die entweder Vater von v oder Vorgänger des Vaters sind. Umgekehrt bezeichnet man alle Knoten, die von einem beliebigen Knoten v aus durch eine ausgehende Kante verbunden sind als Kinder, Kinderknoten, Sohn oder Nachfolger von v. Als Nachfahren von v bezeichnet man Kinder von v oder deren Nachfahren. Als Geschwister oder Geschwisterknoten werden in einem Out-Tree Knoten bezeichnet, die den gleichen Vater besitzen. 7 Spezielle Bäume Bei Binärbäumen ist die Anzahl der Kinder höchstens zwei. In balancierten Bäumen gilt zusätzlich, dass sich die Höhen des linken und rechten Teilbaums an jedem Knoten höchstens um eins unterscheiden. Bei Suchbäumen sind die Elemente in der Baumstruktur geordnet abgelegt, so dass man schnell Elemente im Baum finden kann. 8 9

Man unterscheidet hier weiter in binäre Suchbäume mit AVL-Bäumen als balancierte Version und B-Bäumen sowie diversen Varianten, den B*-Bäumen (die Blattknoten in einer Liste miteinander verkettet). (Spezielle Suchbäume in Datenbanksystemen Achtung: B steht nicht für binär!) In B*-Bäumen wird neben der effizienten Suche einzelner Datenelemente auch das schnelle sequenzielle Durchlaufen aller Datenelemente unterstützt). Diskussion würde hier zu weit führen! 9 Heap Der Heap (Haufen, Halde) vereint die Datenstruktur eines Baums mit den Operationen einer Vorrangwarteschlange. Häufig hat der Heap neben den minimal nötigen Operationen wie insert, remove und extractmin auch noch weitere Operationen wie merge oder changekey. Je nach Reihenfolge der Priorität in der Vorrangwarteschlange wird ein Min-Heap oder ein Max-Heap verwendet. In einem Heap können Objekte oder Elemente abgelegt und aus diesem wieder entnommen werden. Sie dienen damit der Speicherung von Mengen. Den Elementen ist dabei ein Schlüssel zugeordnet, der die Priorität der Elemente festlegt. Häufig werden auch die Elemente selbst als Schlüssel verwendet. 20 0

Übersicht Graph gerichtet azyklisch Baum tree M-Way Suchbaum search tree Halde heap binary tree quadtree octtree B-Tree 2 Ein Beispiel für die Implementierung eines binären Suchbaums class Node: def init (self, data=none): self.data = data self.left = None self.right = None def str (self): return "[%s, %i, %i]" % (str(self.data), id(self.left), id(self.right)) class BTree: def init (self): self.root = None 22

Ein Beispiel für die Implementierung eines binären Suchbaums (2) def add(self, data): if self.root == None: self.root = Node(data) else: curnode = self.root lastnode = self.root while curnode!= None: lastnode = curnode if data < curnode.data: curnode = curnode.left direction = - # links einfügen else: curnode = curnode.right direction = + # rechts einfügen if direction == -: lastnode.left = Node(data) else: lastnode.right = Node(data) 23 Ein Beispiel für die Implementierung eines binären Suchbaums (3) def _prchilds(self, node): if node!= None: return "(%s; %s; %s)" % (self._prchilds(node.left), node, self._prchilds(node.right)) else: return "nil" 24 2

Zusammenfassung der ersten 2 Vorlesungen Daten Informationen Wissen Computer Algorithmen Programme Variablen Datentypen Objekte Elementare numerische Datentypen Zeichenketten Kontrollstrukturen Prozeduren Funktionen Methoden Aggregierte (zusammengesetzte) Datenstrukturen Klassen Graphen und Bäume 25 Was haben wir (noch) nicht gemacht? Algorithmenkonstruktion... macht Prof. Drobnik Interaktive Programme mit graphischer Oberfläche... das tut mir etwas weh! ein Teil des Skripts fehlt noch V2... wird bald nachgeliefert und auch eine Überarbeitung (insbesondere Fehlerkorrektur) Sie erkennen das an einer Versionsnummer (-X) auf dem Server Möglichkeiten zum Selbsttest (Multiple-Choice Fragen, demnächst!) 26 3

Fragen und (hoffentlich) Antworten 27 Ausblick [Teil 2-Drobnik] Elemente des Softwareengineerings: Entwicklungszyklen, Modularisierung, Anforderungen, Spezifikation, Korrektheit, Testen, Dokumentation. und Algorithmenkonstruktion Danke für Ihre Aufmerksamkeit! Es hat Spaß gemacht! 28 4