Algorithmen I - Tutorium 28 Nr. 11

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

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

Graphen: Datenstrukturen und Algorithmen

4 Greedy-Algorithmen (gierige Algorithmen)

Das Briefträgerproblem

Vorlesung 3 MINIMALE SPANNBÄUME

Algorithmen II Vorlesung am

13. Binäre Suchbäume

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

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Algorithmen und Datenstrukturen Suchbaum

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

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Datenstrukturen & Algorithmen

8 Diskrete Optimierung

Sortierte Folgen 250

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Breiten- und Tiefensuche in Graphen

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

Suchen und Sortieren Sortieren. Heaps

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

Fully dynamic algorithms for the single source shortest path problem.

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

EndTermTest PROGALGO WS1516 A

16. All Pairs Shortest Path (ASPS)

Grundlagen der Programmierung 2. Bäume

Algorithmen & Datenstrukturen 1. Klausur

Algorithmentheorie Maximale Flüsse

Anmerkungen zur Übergangsprüfung

Datenstrukturen und Algorithmen SS07

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

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

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

Algorithmen und Datenstrukturen 2

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

3. Übung Algorithmen I

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

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

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.

1 topologisches Sortieren

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

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:

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

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

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Kap. 4.2: Binäre Suchbäume

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

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Programmiertechnik II

Konzepte der Informatik

Algorithmische Methoden zur Netzwerkanalyse

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

Algorithmen und Datenstrukturen (WS 2007/08) 63

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Algorithmen und Datenstrukturen 2

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

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

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

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Punktbeschriftung in Dynamischen Karten

Sortierverfahren für Felder (Listen)

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

Datenstrukturen und Algorithmen

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

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

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

WS 2009/10. Diskrete Strukturen

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Beispielblatt VU Algorithmen und Datenstrukturen 1 VU 6.0

2 Lösungen "Peptide de novo Sequencing"

Einführung in die Informatik 1

Codierung, Codes (variabler Länge)

Algorithmen und Datenstrukturen

6. Algorithmen der Computer-Geometrie

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

Über Arrays und verkettete Listen Listen in Delphi

Kapitel 6: Graphalgorithmen Gliederung

Teil III: Routing - Inhalt I. Literatur. Geometric Routing. Voraussetzungen. Unit Disk Graph (UDG) Geometric Routing 29

Statistische Untersuchungen zu endlichen Funktionsgraphen

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

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

Algorithmische Methoden zur Netzwerkanalyse

Programmierkurs Java

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

Theoretische Grundlagen der Informatik

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

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum:

Die k kürzesten Wege in gerichteten Graphen

Seminar Komplexe Objekte in Datenbanken

Suchen und Sortieren

Alles zu seiner Zeit Projektplanung heute

Vorkurs Informatik WiSe 15/16

Fakultät Wirtschaftswissenschaft

Transkript:

Algorithmen I - Tutorium 28 Nr. 11 13.07.2017: Spaß mit Schnitten, Kreisen und minimalen Spannbäumen Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Agenda 1 Minimale Spannbäume 2 Schnitt- und Kreiseigenschaft 3 Jarnik-Prim 4 Kruskal 5 Union-Find 6 Kreativaufgabe zu Spannbäumen 7 Ende Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 2/17

Minimale Spannbäume (MST) gegeben ungerichteter Graph G = (V, E) mit Knoten V, n = V, Kanten e = (u, v) E, u, v V, m = E, Kantengewichte c(e) R + gesucht Baum (V, T ) mit minmaler Summe der Kantengewichte Σ e T c(e), der alle Knoten verbindet Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 3/17

Minimale Spannbäume (MST) MST? Welche Kanten dieses Graphen sind in T des MST? Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 4/17

Minimale Spannbäume (MST) MST! MST?! Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 5/17

Schnitteigenschaft (cut property) Satz Für S V beliebig definierte Menge C := {e = (u, v) E : u S, v V\S} Es gilt: Die leichteste Kante in C e min = min e C {c(e)} kann in einem MST verwendet werden. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 6/17

Kreiseigenschaft (cycle property) Satz Für C E beliebiger Kreis gilt: Die schwerste Kante c max = max e C {c(e)} des Kreises wird für einen MST nicht benötigt. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 7/17

Jarnik-Prim-Algorithmus Function jpmst : Set of Edge wähle s V parent[] = null : Array of Node, d[] = : Array of N d[s] = 0; parent[s] = s; PQ.insert(s) while( PQ.isEmpty()) u = PQ.deleteMin(); d[u] = 0 foreach e = (u, v) E do if (c(e) < d[v])) then d[v] = c(e); parent[v] = u ifv PQ then PQ.decreaseKey(v) else PQ.insert(v) return {(v, parent[v]) : v V\{s}} Wo ist der Unterschied zu Dijkstras Algorithmus? Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 8/17

Jarnik-Prim: Fakten Laufzeit: O((m + n) log n) braucht irgendwie geartete Graphrepräsentation modifizierte Breitensuche Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 9/17

Kruskals Algorithmus Function kruskalmst (V, E, c) : Set of Edge T = foreach (u, v) E aufsteigend sortiert nach c((u, v)) do if u, v Element versch. Teilbäume then T = T {(u, v)} return T Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 10/17

Kruskal: Fakten Laufzeit: hm? Sortierung? Teilbaum-Unterscheidung? Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 11/17

Die Union-Find-Datenstruktur Class UnionFind(n : N) parent : Array[1..n] of 1,..., n Function find(i : 1,..., n) : 1,..., n if parent[i] == i then return i else return find(parent[i]) Procedure union(i, j : 1,..., n) if find(i) find(j) then link(find(i), find(j)) Procedure link(i, j : 1,..., n) parent[i] = j Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 12/17

Union-Find: Fakten Laufzeit: O(mα T (m, n)) für alle praktischen n ist α T (m, n) 5 wir können n Elemnte gruppieren; jedes Element ist zunächst sein eigener Herr Bedeutung für Kruskal: für dünn besetzte Graphen (m = O(n)) eine bessere Laufzeit als JP, Sortierung in O(m log m) + O(m 1) für Union-Find Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 13/17

Aufgabenstellung Wir betrachten beliebige zusammenhängende ungerichtete Graphen G = (V, E) mit V = {1,..., n}, n N, und Kantengewichten aus {1, 3}. Sei G in Form eines Adjazenzfeldes gegeben. a) Geben Sie einen Algorithmus an, der in Zeit O( E ) einen MST von G berechnet. b) Argumentieren Sie kurz, warum Ihr Algorithmus aus Teilaufgabe a) das gewünschte Laufzeitverhalten aufweist. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 14/17

Lösung a) Sei c : E {1, 3} die Gewichtsfunktion von G. Man modifiziere den Jarník-Prim-Algorithmus nun wie folgt: Ersetze die PQs durch zwei FIFO-Queues Q 1 und Q 3 (doppelt verkettete Listen). Man lässt Q.insert(u) weg, stattdessen durchläuft man alle Kanten (u, v) E. Für c(u, v) = 1 führe Q 1.pushBack(v) aus, ansonsten führe Q 3.pushBack(v) aus. Statt Q.deleteMin führt man Q 1.popFront aus, sofern Q 1 nicht leer ist. Ansonsten führt man Q 3.popFront aus. Wenn aber auch dieses leer ist, wird der Algorithmus beendet. Beim Relaxieren einer Kante (u, v) E werden Knoten v mit v Q 1 und v Q 3 in Q c(u,v) eingefügt, beim Verringern eines Gewichtes (nur von 3 nach 1 möglich) entfernt man v aus Q 3 und führt Q 1.pushBack(v) aus. Allerdings benötigt man hierzu auch ein Array A[1..n], das zu jedem v V, welches sich in Q 3 befindet, an der Stelle A[v] einen Handle auf das zugehörige Listenelement speichert. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 15/17

Lösung (ctd.) b) Jede Kante in E wird genau einmal betrachtet. Dabei wird jeweils höchstens ein pushback ausgeführt und höchstens ein remove auf einer doppelt verketteten Liste. Außerdem wird für jeden Knoten höchstens einmal popfront ausgeführt und es gilt V = O( E ). All die Operationen pushback, popfront und remove benötigen jeweils O(1) Zeit. Initialisieren von A benötigt O( V ) = O( E ) Zeit. Insgesamt braucht man also O( E ) Zeit. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 16/17

Was haben wir heute gemacht? Schnitt- und Kreiseigenschaft Minimale Spannbäume Jarnik-Prim und Kruskal Viel Erfolg und ein schönes Wochenende! Marc Leinweber Algorithmen I - Tutorium 28 Nr. 11 13.07.2017 17/17