Übung Algorithmen und Datenstrukturen

Ähnliche Dokumente
Informatik II, SS 2014

Algorithmen und Datenstrukturen Suchbaum

Datenstrukturen & Algorithmen

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.

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Algorithmen und Datenstrukturen Balancierte Suchbäume

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

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

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

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

Graphen: Datenstrukturen und Algorithmen

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

Kap. 4.2: Binäre Suchbäume

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

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

Programmiertechnik II

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

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

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

13. Binäre Suchbäume

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

Algorithmen und Datenstrukturen

14. Rot-Schwarz-Bäume

4 Greedy-Algorithmen (gierige Algorithmen)

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.

Algorithmen & Datenstrukturen 1. Klausur

Breiten- und Tiefensuche in Graphen

Datenstrukturen und Algorithmen

Copyright, Page 1 of 8 AVL-Baum

Suchbäume mit inneren Knoten verschiedener Knotengrade.

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

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

Algorithmen und Datenstrukturen 2

EndTermTest PROGALGO WS1516 A

Algorithmen und Datenstrukturen 2

JAVA KURS COLLECTION

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

Klausur Datenstrukturen und Algorithmen SoSe 2012

Programmiertechnik II

Datenstrukturen in Java

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

Übung Algorithmen I

Datenstrukturen und Algorithmen

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

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

1 topologisches Sortieren

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Grundlagen der Programmierung 2. Bäume

8 Diskrete Optimierung

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

Schulinternes Curriculum im Fach Informatik

Routing Algorithmen. Begriffe, Definitionen

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

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

Algorithmen und Datenstrukturen 2

Sortierte Folgen 250

Abschnitt: Algorithmendesign und Laufzeitanalyse

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:

Bäume, Suchbäume und Hash-Tabellen

3. Musterlösung. Problem 1: Boruvka MST

WS 2009/10. Diskrete Strukturen

Suchen und Sortieren Sortieren. Heaps

Grundlagen der Künstlichen Intelligenz

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Teil V. Generics und Kollektionen in Java

Vorname:... Matrikel-Nr.:... Unterschrift:...

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

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

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

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

Algorithmen und Datenstrukturen Graphen - Einführung

Die Komplexitätsklassen P und NP

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Kapitel 6: Graphalgorithmen Gliederung

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Suchen und Sortieren (Die klassischen Algorithmen)

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Anmerkungen zur Übergangsprüfung

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

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

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

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Tutorium Algorithmen & Datenstrukturen

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

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Vorkurs Informatik WiSe 15/16

Beispielblatt VU Algorithmen und Datenstrukturen 1 VU 6.0

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

Geordnete Binärbäume

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Transkript:

Übung Algorithmen und Datenstrukturen Sommersemester 217 Marc Bux, Humboldt-Universität zu Berlin

Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 2

Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 3

Graphen und Bäume Graph: Ein Graph G = V, E besteht aus einer Menge V von Knoten und einer Menge E V V von Kanten. Für einen ungerichteten Graphen gilt: v, w E w, v E. Eine Folge von Knoten v 1, v 2,, v n, in der für aufeinanderfolgende Knoten v i, v i+1 gilt v i, v i+1 E ist ein Pfad (Weg). Ein Zyklus (Kreis) ist ein Pfad mit v 1 = v n. Ein Graph ist zusammenhängend, wenn für jedes Paar v, w V V ein Pfad von v nach w existiert. Baum: Ein Baum ist ein ungerichteter, kreisfreier und zusammenhängender Graph. Traversierung in Ο V + E für zusammenhängende Graphen in Ο E, da hier V Ο E v 5 v 1 v 2 v 4 v 6 v 3 4

Implementierung von Graphen Adjazenzlisten: Speicherbedarf Ο V + E Zugriff auf bestimmte ausgehende Kante von v in Ο out v Iteration über alle Kanten eines Knotens v in Ο out v Adjazenzmatrix: Speicherbedarf Ο V 2 Zugriff auf bestimmte ausgehende Kante von v in Ο 1 Iteration über alle Kanten eines Knotens v in Ο V Hinweise: E V 2, out v V v 1 v 2 v 3 v 4 v 5 v 6 v 1 : v 2 v 1 1 v 5 v 2 : v 1, v 3, v 4 v 2 1 1 1 v 3 : v 2 v 3 1 v 1 v 2 v 4 v 6 v 4 : v 2, v 5, v 6 v 4 1 1 1 v 5 : v 4 v 5 1 v 3 v 6 : v 4 v 6 1 5

Traversierung von Graphen (und Bäumen) Tiefensuche a.k.a. Depth-First-Search, DFS traversiere in die Tiefe realisiert durch Stack oder Rekursion DFS(Node root) 1. if (root = null) return; 2. visit(root); root.marked = true; 3. for each neighbor of root 4. if (not neighbor.marked) 5. DFS(neighbor); Breitensuche a.k.a. Breadth-First-Search, BFS traversiere in die Breite realisiert durch Queue BFS(Node root) 1. Initialisiere Queue q; q.enqueue(root); 2. while (not q.isempty()) 3. node := q.dequeue(); 4. visit(node); 5. for each (Node neighbor of node) 6. if (not neighbor.marked) 7. neighbor.marked = true; 8. q.enqueue(neighbor); 6

Traversierung binärer (gewurzelter) Bäume In-Order-Traversierung: Besuche linken Teilbaum, dann aktuellen Knoten, dann rechten Teilbaum Pre-Order-Traversierung: Besuche aktuellen Knoten, dann linken Teilbaum, dann rechten Teilbaum Post-Order-Traversierung: Besuche linken Teilbaum, dann rechten Teilbaum, dann aktuellen Knoten bei allen o.g. Traveriserungen handelt es sich um Spezialformen der Tiefensuche 4 1 8 2 7 2 5 3 7 1 3 5 8 3 4 6 8 1 2 5 6 6 7 4 7

Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 8

Binäre Suchbäume Knoten beinhaltet Schlüssel hat Verweis auf linkes und rechtes Kind Sortierung/Sucheigenschaft alle Schlüssel des linken Teilbaums eines Knotens sind kleiner (oder gleich, falls Duplikate erlaubt sind) alle Schlüssel des rechten Teilbaums eines Knotens sind größer (oder gleich, falls Duplikate erlaubt sind) 1 6 15 1 8 13 19 Beim Löschen eines Knotens mit zwei Kindern muss mit dem symmetrischen Vorgänger oder Nachfolger getauscht werden symmetrischer Vorgänger (Nachfolger): Knoten mit dem größten (kleinsten) Schlüssel im linken (rechten) Teilbaum 9 14

Aufgabe zu Binären Suchbäumen 1

Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 11

AVL-Bäume benannt nach Erfindern Adelson-Velsky und Landis (AVL) älteste Datenstruktur für balancierte Suchbäume binärer Suchbaum mit zusätzlicher Eigenschaft: in jedem Knoten unterscheidet sich die Höhe der beiden Teilbäume um höchstens eins Höhe logarithmisch in Anzahl der Schlüssel Rebalancierung (Rotation) beim Einfügen und Löschen Definition: Sei u Knoten in binärem Baum. bal(u): Differenz zwischen Höhe des rechten Teilbaums von u und Höhe des linkes Teilbaums von u Ein binärer Baum heißt AVL-Baum, falls für alle Knoten u gilt: bal u 1 1 1 6 15 1 1 8 13 1 19 14 12

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal u = 2, bal v : Einfachrotation links(u) u +2 v +1 v u h h h+1 h+1 h+2 h+2 13

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal u = 2, bal v : Einfachrotation links(u) 2. bal u = 2, bal v : Einfachrotation Rechts(u) u -2 v -1 v u h h h+1 h+1 h+2 h+2 14

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal u = 2, bal v : Einfachrotation links(u) 2. bal u = 2, bal v : Einfachrotation Rechts(u) 3. bal u = 2, bal v = 1: Doppelrotation Rechts(v) + Links(u) u +2 w -1 v u v h h+1 w h h+1 h+2 h+2 15

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal u = 2, bal v : Einfachrotation links(u) 2. bal u = 2, bal v : Einfachrotation Rechts(u) 3. bal u = 2, bal v = 1: Doppelrotation Rechts(v) + Links(u) 4. bal u = 2, bal v = 1: Doppelrotation Links(v) + Rechts(u) u -2 w 1 v v u h h+1 w h h+1 h+2 h+2 16

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal u = 2, bal v = 1: Einfachrotation links(u) 2. bal u = 2, bal v = 1: Einfachrotation Rechts(u) 3. bal u = 2, bal v = 1: Doppelrotation Rechts(v) + Links(u) 4. bal u = 2, bal v = 1: Doppelrotation Links(v) + Rechts(u) Hinweise: nach Ausführen einer Rotationoperation sind (entlang des Suchpfades von unten nach oben) ggf. weitere Rotationoperationen notwendig es gibt Beispiele, bei denen Rotationsoperationen für alle Knoten entlang des Suchpfades durchgeführt werden müssen Laufzeit: Rotationen sind lokale Operationen, die nur Umsetzen einiger Zeiger erfordern, und in Zeit O(1) erfolgen aus logarithmischer Höhe des Baums ergibt sich Laufzeit Ο log n für das Einfügen, Suchen und Löschen 17

Aufgabe zu AVL-Bäumen Sei T folgender AVL-Baum: 3 1 22-1 55-1 2 44-1 66 33 Fügen Sie nacheinander die Schlüssel 39, 42 in T ein und zeichnen Sie den jeweiligen AVL-Baum nach jeder insert-operation. 18

Einfügen von 39 bal u = 2, bal v = 1: Doppelrotation Links(v) + Rechts(u) 3 1 3 22-1 55-1 22 55 2 44-1 66 33 2 44 66 39 33 3 2 3 1 22-1 55-2 22-1 55-1 2 44-2 66 2 39 66 33 1 33 44 39 19

Einfügen von 42 bal u = 2, bal v = 1: Doppelrotation Links(v) + Rechts(u) 3 1 3 22-1 55-1 22 55 2 39 66 2 44 66 33 44 39 33 42 3 2 3 1 22-1 55-2 22-1 44 2 39 1 66 2 39 55 1 33 44-1 33 42 66 42 2

Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 21

Datenstrukturen Datenstruktur Einfügen Suchen Besonderheit Java- Interface Java-Klassen (Auswahl) Array / String N/A Ο(n) Indexbasierter Zugriff in Ο(1) [], String Liste Ο(1) Ο(n) List LinkedList, ArrayList Stack Ο(1) Ο(n) Zugriff auf zuletzt eingefügtes Element in O(1) Stack Queue Ο(1) Ο(n) Zugriff auf zuerst eingefügtes Element in O(1) Queue LinkedList Binärer Heap Ο(log n) Ο(n) Zugriff auf Min / Max in O(1) PriorityQueue Hash-Tabelle Ο 1 * Ο 1 * Konstante Laufzeit nur im Average Case HashMap, HashSet balancierter Suchbaum Ο(log n) Ο(log n) TreeMap, TreeSet 22

& Algorithmen Allgemeine Sortierverfahren: SelectionSort, InsertionSort, BubbleSort, QuickSort, MergeSort, (HeapSort) Lineare Sortierverfahren: RadixSort, BucketSort Suche in sortierten Arrays: Binäre Suche, Fibonacci-Suche, Interpolationssuche, Exponentielle Suche Traversierung von Graphen: DFS, BFS Traversierung von Bäumen: In-Order, Pre-Order, Post-Order Kürzeste Pfade in Graphen: Dijkstra (Single-Source), Floyd (All- Pairs) (starke) Zusammenhangskomponenten: Kosaraju Minimaler Spannbaum: Prim, Kruskal, Boruvka 23

Weitere Themenkomplexe (ohne Anspruch auf Vollständigkeit) Landau-Notation und Laufzeitanalysen Selbstorganisierende Listen Amortisierte Analyse Optimale Suchbäume Präfixbäume / Tries 24

Ausblick nächste Woche: Aufgabenblatt 5 durchrechnen zu nächster Woche: mit Aufgabenblatt 6 auseinandersetzen Generics in Java: https://docs.oracle.com/javase/tutorial/java/generics/ Function-Interface und Lambda-Ausdrücke in Java 8: https://www.codementor.io/eh3rrera/using-java-8-method-reference-du1866vx falls noch nicht vorgerechnet: zum Vorrechnen eintragen Aufgabenblatt 5, Montag: https://dudle.inf.tu-dresden.de/algodat25 Aufgabenblatt 5, Dienstag: https://dudle.inf.tu-dresden.de/algodat35 Aufgabenblatt 6, Montag: https://dudle.inf.tu-dresden.de/algodat26 Aufgabenblatt 6, Dienstag: https://dudle.inf.tu-dresden.de/algodat36 (first-come-first-served) Vorrechnen ist Voraussetzung für Erhalt des Übungsscheins (der Prüfungszulassung) 25