Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Ähnliche Dokumente
Beispiellösung zur Prüfung Datenstrukturen und Algorithmen D-INFK

Wiederholung zu Flüssen

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Das Heiratsproblem. Definition Matching

1.Aufgabe: Minimal aufspannender Baum

Bipartite Graphen. Beispiele

Datenstrukturen und Algorithmen D-INFK

Algorithmen & Datenstrukturen Blatt 0 HS 17

Flüsse, Schnitte, bipartite Graphen

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

Algorithmen II Vorlesung am

ADS: Algorithmen und Datenstrukturen 2

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Algorithmen II Vorlesung am

Effiziente Algorithmen I

5. Musterlösung. Problem 1: Vitale Kanten * ω(f) > ω(f ). (a) Untersuchen Sie, ob es in jedem Netzwerk vitale Kanten gibt.

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Lösungen zu Kapitel 5

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

1. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2009/2010

Beispiellösung zur Prüfung Datenstrukturen und Algorithmen D-INFK

Lernmodul 7 Algorithmus von Dijkstra

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck. 10 Matching-Probleme

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap.

Kapitel 1: Flussalgorithmen

Laufzeit. Finden eines Matchings maximaler Kardinalität dauert nur O( E min{ V 1, V 2 }) mit der Ford Fulkerson Methode.

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Flüsse, Schnitte, bipartite Graphen

Algorithmische Graphentheorie

6. Flüsse und Zuordnungen

Algorithmentheorie Maximale Flüsse

Bipartites Matching. Gegeben: Ein bipartiter, ungerichteter Graph (V 1, V 2, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität.

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

Datenstrukturen & Algorithmen

Kürzeste-Wege-Algorithmen und Datenstrukturen

Algorithmische Graphentheorie

Bäume und Wälder. Definition 1

Flüsse in Netzwerken

Klausur zum Modul Einführung in die Diskrete Mathematik

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

Informatik B Sommersemester Musterlösung zur Klausur am

Graphdurchmusterung, Breiten- und Tiefensuche

Klausurvorbereitung. 1 Zentrale Begriffe. 2 Bipartite Graphen. 2.1 Begriffe. Vorlesung Graphen und Optimierung Sommersemester 2011 Prof. S.

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Inhalt. 1. Flußprobleme. 2. Matching. 3. Lineares Programmieren. 4. Ganzzahliges Programmieren. 5. NP-Vollständigkeit. 6. Approximationsalgorithmen

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Flüsse in Netzwerken. Seminar über Algorithmen SoSe Mike Rohland & Julia Schenk

Algorithmische Graphentheorie

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr)

Ausarbeitung über den Satz von Menger und den Satz von König

Vorlesung Datenstrukturen

Breitensuche BFS (Breadth First Search)

Flüsse, Schnitte, Bipartite Graphen

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 12

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

Betriebswirtschaftliche Optimierung

Beispielprüfung Datenstrukturen und Algorithmen D-INFK

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin

15. Elementare Graphalgorithmen

Zentralübung zur Vorlesung Diskrete Strukturen

Betriebliche Optimierung

KAPITEL 4 FLÜSSE IN NETZWERKEN

Lösungsvorschläge Aufgaben 14.1, 14.3, 14.4

7. Der Entwurf von Algorithmen (Fortsetzung)

Matching. Organisatorisches. VL-18: Matching. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Tanzabend

Operations Research. Flüsse in Netzwerken. Flüsse in Netzwerken. Unimodularität. Rainer Schrader. 2. Juli Gliederung.

Algorithmen und Datenstrukturen 2-1. Seminar -

Anordnungstechniken für konvektionsdominante Probleme im Ê 3. Dimensionsunabhängige Verfahren. Algorithmen für planare Graphen. Numerische Beispiele

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 4: Flüsse

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Effizienter Planaritätstest Vorlesung am

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

4.7 Der Algorithmus von Dinic für maximalen Fluss

Datenstrukturen und Algorithmen D-INFK

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

Richtig oder falsch? Richtig oder falsch? Richtig oder falsch? Mit dynamischer Programmierung ist das Knapsack- Problem in Polynomialzeit lösbar.

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

9 Minimum Spanning Trees

Algorithmen und Datenstrukturen Kapitel 10

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

3. Musterlösung. Problem 1: Boruvka MST

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Formale Grundlagen der Informatik

Datenstrukturen und Algorithmen D-INFK

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme

ij. , d (k 1) + d (k 1)

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

Aufgabe 1: Berechnen Sie für den in Abbildung 1 gegebenen Graphen den. Abbildung 1: Graph für Flussproblem in Übungsaufgabe 1

Datenstrukturen & Algorithmen Lösungen zu Blatt 8 FS 16

Übung zur Vorlesung Diskrete Strukturen I

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 6: Matchings und TSP-Problem

5. Bäume und Minimalgerüste

Transkript:

Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 14. Mai 2014 Peter Widmayer Tobias Pröger Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14 Lösung 11.1 Max-Flow von Hand. Der maximale Flusswert beträgt 31. In der folgenden Abbildung ist ein maximaler Fluss dargestellt. Neben jeder Kante e sind die Kapazität c e und der Flusswert x e in der Reihenfolge x e, c e angegeben. Der minimale Schnitt ist gestrichelt eingezeichnet, und die zugehörigen Kanten sind fett dargestellt. Die folgende Abbildung zeigt den Restgraphen für den oben dargestellten Fluss. An den Kanten ist die jeweilige Restkapazität (c e x e oder x e ) notiert. Lösung 11.2 Meisterschaftsproblem. Angenommen, FCL gewinnt beide verbleibenden Spiele gegen FCZ und GCZ mit ausreichend vielen Toren. Dann hat FCL 37 Punkte. Zum Gewinn der Meisterschaft darf FCSG keine weiteren Punkte erhalten, YB maximal einen, FCB maximal zwei und FCW maximal sechs. Zentral für die Konstruktion des Netzes ist die Beobachtung, dass in jedem der verbleibenden Spiele genau zwei Punkte aufgeteilt werden: Der Gewinner erhält beide, oder jeder Teilnehmer bekommt genau einen im Fall von Unentschieden. Wir erzeugen also für jedes der Spiele FCSG-FCB, YB-

FCW, FCW-FCSG und FCB-YB einen Knoten im Netz mit einer eingehenden Kante von einer Quelle s und je zwei ausgehenden Kanten zu den Teilnehmern des entsprechenden Spiels. Diese haben jeweils eine Kapazität von 2. Von jedem Teilnehmer erzeugen wir eine Kante zu einer Senke t und wählen als Kapazität die maximal erlaubte Punktzahl, sodass FCL noch Meister wird. Dies führt zu folgendem Netz. Damit FCL noch Meister wird, muss im obigen Netz ein Fluss mit Wert 8 existieren, denn in jedem der vier Spiele werden auf jeden Fall je zwei Punkte auf die entsprechenden Teilnehmer verteilt. Das Max-Flow-Min-Cut-Theorem besagt, dass der Wert eines maximalen Flusses durch den Wert eines minimalen Schnitts nach oben beschränkt ist. Im obigen Netz existiert nun der folgende Schnitt vom Wert 7: Aus diesem Grund kann kein Fluss mit Wert 8 existieren, und daher kann FCL auch dann nicht Meister werden, wenn beide verbleibenden Spiele haushoch gewonnen werden. Lösung 11.3 Evakuierungsprobleme. a) Sei G = (V G, E G ) das ungerichtete Gitter, das als Eingabe gegeben ist. Die Knotenmenge V des Netzes N enthält neben allen Knoten aus G zusätzlich noch eine Quelle s und eine Senke t. Die Kantenmenge von N enthält nun die folgenden Kanten: Für jeden Startknoten s i enthält N die Kante (s, s i ). Für jede (ungerichtete) Kante {v, w} E G des Gitters enthält N die zwei gerichteten Kanten (v, w) und (w, v). Für jeden Randpunkt r j enthält N die Kante (r j, t). Wir konstruieren also ein Netz N = (V, E, c) mit V := V G {s} {t} (1) E := {(s, s i ) i {1,..., m}} {(v, w), (w, v) {v, w} E G } (2) {(r j, t) r j ist Randpunkt von G} 2

c((s, s i )) := 1 i {1,..., m} (3) c((v, w)) := 1 {v, w} E G (4) c((r j, t)) := 2 Randpunkte r j (5) Man beachte, dass ein Randpunkt doppelt benutzt werden kann. Einerseits kann er der letzte Knoten eines Fluchtwegs sein, der im Inneren des Gitters startet. Andererseits kann es aber auch einen Fluchtweg geben, der nur aus genau diesem Randpunkt besteht. Aus diesem Grund muss als Kapazität der Kanten (r j, t) genau 2 gewählt werden (und nicht 1). Es gibt nun in G genau dann m kantendisjunkte Fluchtwege, falls es im obigen Netz N einen Fluss mit Wert mindestens m gibt. b) Wir analysieren zunächst die Grösse des Netzes in Abhängigkeit von n. Das Gitter G hat V G = n 2 viele Knoten, also ist V = 2 + V G Θ(n 2 ). Ausserdem hat G genau E G = 2n(n 1) 2n 2 viele Kanten und 2n+2(n 2) = 4n 4 viele Randpunkte. Da jede Kante von G in N doppelt vorkommt, ist E = m+2 E G +4n 4 n 2 +4n 2 +4n Θ(n 2 ). Der Wert eines Flusses ist sowohl durch m (die Anzahl der Startknoten) als auch durch 8n 8 nach oben beschränkt, da es nur 4n 4 Randpunkte gibt und wie oben gesehen maximal zwei Fluchtwege in einem gemeinsamen Randpunkt enden können (theoretisch wären mehr Fluchtwege möglich, aber jeder weitere besucht mindestens einen weiteren Randknoten und muss daher nicht berücksichtigt werden). Es gibt nun verschiedene Flussalgorithmen zur Lösung. Beispielsweise berechnet der Algorithmus von Ford und Fulkerson einen maximalen Fluss mit O( E φ ) Operationen, wenn φ der maximale Flusswert ist. Damit ist seine Laufzeit pseudopolynomiell, und im Allgemeinen existieren effizientere Methoden zur Flussmaximierung. Da aber hier E Θ(n 2 ) als auch φ = min{m, 8n 8} Θ(min{m, n}) gelten, beträgt die Laufzeit des Algorithmus von Ford und Fulkerson nur O(n 2 min{m, n}), und die Wahl dieses Verfahrens ist in diesem speziellen Fall optimal. c) Sei v V G ein Knoten des Gitters und Γ(v) = {w V G {v, w} E G } die Menge aller Nachbarknoten von v in G. Wir erzeugen nun im Netz N für v V G genau zwei Knoten v in und v out, die durch die gerichtete Kante (v in, v out ) verbunden werden. Abgesehen von dieser Kante enthält v in nur eingehende und v out nur ausgehende Kanten. Für jeden Nachbar w Γ(v) erzeugen wir jeweils die Kanten (v out, w in ) und (w out, v in ). 3

Für alle Startknoten s i erzeugen wir ausgehend von der Quelle s eine Kante (s, s in i ). Ausserdem erzeugen wir für jeden Randpunkt r j eine Kante (rj out, t) zur Senke t. Allen Kanten wird Kapazität 1 zugewiesen. Im Vergleich zu a) wird die Anzahl der Knoten nahezu verdoppelt (nur die Quelle und die Senke werden nicht doppelt angelegt). Pro Knoten v V G wird dabei nur eine weitere Kante angelegt, nämlich die innere Kante (v in, v out ). Damit sind wie vorher V Θ(n 2 ) und E Θ(n 2 ), und die Laufzeit verändert sich nicht. Lösung 11.4 Matchings. a) Seien M ein Matching maximaler Kardinalität und M ein beliebiges inklusionsmaximales Matching. Nach Definition hat M maximale Kardinalität, also folgt direkt M M. Zum Beweis von M 2 M nehmen wir o.b.d.a. an, es sei M = {e 1,..., e k } mit Kanten e i = {v i, w i } für alle i, 1 i k. In jedem inklusionsmaximalen Matching M muss für jedes i, 1 i k, eine Kante e M existieren, die zu v i, zu w i oder zu beiden inzident ist (gäbe es keine solche Kante, dann könnte e i = {v i, w i } zu M hinzugefügt werden und M wäre nicht inklusionsmaximal). Da jede Kante zu genau zwei Knoten inzident ist, muss M folglich mindestens k/2 Kanten besitzen, also ist M k/2 = M /2 M 2 M. b) Im folgenden Graphen ist M = {{a, e}, {b, f}, {c, g}, {d, h} ein Matching mit maximaler Kardinalität, während M = {{a, f}, {c, h}} ein inklusionsmaximales Matching ist. c) Diese Aufgabe kann mit dem folgenden sehr einfachen Greedy-Algorithmus gelöst werden: MaximalMatching(G) Eingabe: Ungerichteter Graph G = (V, E) Ausgabe: Inklusionsmaximales Matching M E 1 M 2 while G hat noch mindestens eine Kante do 3 Wähle eine beliebige Kante e aus G. 4 M M {e} 5 Entferne alle Kanten aus G, die mindestens einen Knoten mit e gemeinsam haben. 6 return M Obwohl die Korrektheit offensichtlich ist, beweisen wir sie der Vollständigkeit halber. Wir zeigen zunächst, dass M zu jedem Zeitpunkt des Algorithmus ein Matching ist. Wäre dem nicht so, dann gäbe es in M zwei Kanten e und e mit einem gemeinsamen Knoten. Angenommen, e wäre vom Algorithmus zuerst gewählt worden. Dann wäre aber e in Schritt 5 aus G entfernt worden. Das gleiche Argument kann angewendet werden, wenn e als erstes gewählt würde. Es verbleibt zu zeigen, dass M nach der Terminierung des Algorithmus inklusionsmaximal ist. Angenommen, M wäre nicht inklusionsmaximal. Dann gäbe es eine Kante e M, sodass M {e } ein Matching wäre. Da e vom Algorithmus nicht gewählt wurde, wurde sie zuvor in Schritt 5 entfernt. Dies geschieht aber nur, wenn 4

e einen gemeinsamen Knoten mit einer Kante e M hätte. Folglich wäre M {e } kein Matching. Man überlegt sich leicht, dass der Algorithmus eine Laufzeit von O( E ) besitzt, wenn der Graph als Adjazenzliste gespeichert ist und alle Kanten zusätzlich in einer doppelt verketteten Liste L gespeichert werden. Jede Kante e = {v, w} aus L wird desweiteren mit den entsprechenden Einträgen in den Adjazenzlisten von v bzw. w ebenfalls doppelt verkettet. Dann sind die Schritte 1, 3 und 4 sowie der Test in Zeile 2, ob der Graph noch eine Kante besitzt, in Zeit O(1) durchführbar. Desweiteren wird jede Kante nur genau einmal betrachtet und direkt danach entfernt; da die Entfernung in Zeit O(1) möglich ist, erhalten wir eine Gesamtlaufzeit von O( E ). Hinweis: Ist lediglich eine Adjazenzlistendarstellung von G gegeben, dann kann L aus G in Zeit O( V + E ) aufgebaut werden, indem alle Adjazenzlisten aus G durchlaufen und die entsprechenden Kanten in L eingefügt werden. d) Der Satz von Hall besagt, dass es kein perfektes Matching in einem bipartiten Graphen gibt, falls eine Menge M von Knoten einer Partition existiert mit Γ(M) < M, wobei Γ(M) die Nachbarn der Knoten in M in der anderen Partition bezeichnet. In unserem Beispiel existiert eine solche Menge, zum Beispiel M = {a, c, e} mit Γ(M) = {h, i}. Eine andere Möglichkeit ist die Wahl von M = {f, g, j} mit Γ(M) = {b, d}. Jede dieser Mengen beweist mit dem Satz von Hall, dass der Graph kein perfektes Matching besitzt. 5