8 Das Flussproblem für Netzwerke



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

3.4 Maximale Flüsse und der Algorithmus von Ford Fulkerson

Netzwerkfluß. Gegeben ist ein System von Wasserrohren: Die Kapazität jedes Rohres ist 3, 5 oder 8 l/s.

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

Flüsse, Schnitte, bipartite Graphen

Vorlesung Diskrete Strukturen Transportnetze

Algorithmentheorie Maximale Flüsse

Flüsse in Netzwerken

KAPITEL 4 FLÜSSE IN NETZWERKEN

Maximaler Fluss = minimaler Schnitt

Freie Bäume und Wälder

8 Diskrete Optimierung

Gemischt-ganzzahlige und Kombinatorische Optimierung

Maximale s t-flüsse in Planaren Graphen

Algorithmen und Datenstrukturen 2-2. Seminar -

Algorithmik. Andreas Jakoby WS 06/07. Sprechstunde: Dienstags 10:00-12:00. Algorithmik WS 06/07 1. Vorlesung,

Kürzeste-Wege-Algorithmen und Datenstrukturen

Wiederholung zu Flüssen

Der Preow-push-Algorithmus

Das Heiratsproblem. Definition Matching

Algorithmen und Datenstrukturen Kapitel 10

Kürzeste (billigste) Wege

Effiziente Algorithmen I

Algorithmen und Datenstrukturen 2

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

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

Algorithmen II Vorlesung am

ADS: Algorithmen und Datenstrukturen 2

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

Lösungen zum Aufgabenblatt Nr. 1: Konstruktion der reellen Zahlen

Das Briefträgerproblem

Flüsse in Netzwerken

Kombinatorische Optimierung

ADS: Algorithmen und Datenstrukturen 2

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Algorithmen II Vorlesung am

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

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

15. Elementare Graphalgorithmen

Datenstrukturen & Algorithmen

Kapitel IV Minimale Spannbäume

Algorithmen II Vorlesung am

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Vorlesungstermin 2: Graphentheorie II. Markus Püschel David Steurer. Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich

5. Bäume und Minimalgerüste

6. Flüsse und Zuordnungen

6 Flüsse und Matchings

4.7 Der Algorithmus von Dinic für maximalen Fluss

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

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Der Satz von Menger. und seine Anwendung auf Algorithmen zur Berechnung von Ecken und Kanten

VU Algorithmen auf Graphen Übungsblatt 2 - Aufgabe 2 Transformation einer MaxFlow- in eine MinCost Circulation Instanz

Übung zur Vorlesung Diskrete Mathematik (MAT.107) Blatt Beispiellösungen Abgabefrist:

Gliederung. Kapitel 4. Lokale Suchverfahren. Meta-Heuristiken. Simulated Annealing. Lokale Suchverfahren. Optimierungsalgorithmen

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Lösungen zu Kapitel 5

Flüsse, Schnitte, bipartite Graphen

KAPITEL 6 GANZZAHLIGE OPTIMIERUNG UND VOLLSTÄNDIG UNIMODULARE MATRIZEN

Effiziente Algorithmen I 11. Übungsblatt, Wintersemester 2015/16 Abgabetermin:

Fortgeschrittene Netzwerk- und Graph-Algorithmen

SCHNITTERHALTUNG (SPEKTRALE APPROXIMATION)

Flüsse und Zuordnungen. Kapitel 6. Peter Becker (H-BRS) Graphentheorie Wintersemester 2018/ / 296

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

Algorithmen und Datenstrukturen

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke

Kapitel 1: Flussalgorithmen

Algorithmische Graphentheorie

3 Klassifikation wichtiger Optimierungsprobleme

3 Reihen. 3.1 Konvergenz und Divergenz. Die Eindeutigkeit nach Satz 13 ergibt schließlich (5). (6) folgt aus (2) und (1) wegen. 1 a +log ba.

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

6. Flüsse und Zuordnungen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

8 Konvergenzkriterien und Häufungswerte von Folgen in R

Vorlesung Datenstrukturen

Beweis des Pumping Lemmas

Univ.-Prof. Dr. Goulnara ARZHANTSEVA

Berechnung minimaler Spannbäume. Beispiel

Ein Fragment von Pascal

2 Eulersche Polyederformel und reguläre Polyeder

Theoretische Informatik 1

1. Transport- und Zuordnungsprobleme

Kapitel 4. Reihen 4.1. Definition und Beispiele

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2

Eulerweg, Eulerkreis. Das Königsberger Brückenproblem. Definition 3.1. Ein Weg, der jede Kante von G genau einmal

Statistik und Graphentheorie

6. Flüsse in Netzwerken Berechnung maximaler Flüsse. dann berechnet der Markierungsalgorithmus für beliebige Kapazitätsfunktionen

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

2 Spiele. 2.1 Spiele und Strategien

2.4 Starke Zusammenhangskomponenten in Digraphen

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

Randomisierte Algorithmen

Lösungshinweise 3 Vorlesung Algorithmentechnik im WS 08/09

Kapitel IV Minimale Spannbäume

bestehenden sind, weiterhin benutzt werden. Oft beleuchten unterschiedliche Formalismen Dinge nämlich von unterschiedlichen Blickwinkeln.

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Statistik und Graphentheorie

Transkript:

8 Das Flussproblem für Netzwerke 8.1 Netzwerke mit Kapazitätsbeschränkung Definition 15 Ein Netzwerk N = (V, E, γ, q, s) besteht aus einem gerichteten Graph G = (V, E), einer Quelle q V und einer Senke s V sowie einer Kapazitätsfunktion γ : E R + 0. Es sei n := V und m := E. 189

190 Andreas Jakoby Definition 15 (Teil 2) Ein Fluss in N ist eine Funktion f : E R + 0 folgenden Eigenschaften: die Kapazitätsschranken der Kanten werden eingehalten, d.h. mit e E : f (e) γ(e) für alle Knoten v V \ {q, s} wird die Kirchhoffsche Regel eingehalten, d.h. v V \ {q, s} : f ((u, v)) = f ((v, w)). (u,v) E (v,w) E

Definition 15 (Teil 3) Als Wert eines Flusses definieren wir als W (f ) := f ((q, v)) = f ((u, s)). (q,v) E (u,s) E Die Eigenschaft, dass der Ausfluss aus der Quelle identisch sein muss mit dem Abfluss in die Senke folgt unmittelbar aus der Kirchhoffschen Regel, da im Netzwerk kein Fluss verloren geht. Ein Fluss heißt maximal, falls sein Wert größtmöglich unter allen Flüssen in N ist. MAXFLOW(N) bezeichnet diesen Wert. 191

6 x q s u v w 5 6 7 3 5 6 x q s u v w 5 6 7 3 5 Ein Netzwerk und ein Fluss mit dem Wert 3. 192

Ein Fluss ist somit ein Transportproblem: Es sollen möglichst viele Einheiten einer Ware von einem Absender zu einem Empfänger zu schicken, wobei gewisse Kapazitätsschranken auf dem Transportweg eingehalten werden müssen. Beispiele für solche Transportprobleme sind: Lenkung von Verkehrsströmen (Eisenbahn, PKWs) oder Lenkung von Nachrichtenströmen (Telefonverkehr, Datenverkehr im Internet). 193

Der maximale Fluss ist beschränkt durch die Kapazität der Quelle (die Summe der Kapazitäten aller Kanten, die die Quelle verlassen) und die Kapazität der Senke (die Summe der Kapazitäten aller Kanten, die in der Senke enden). Es sei γ max := max e E γ(e). Da höchstens V 1 Kanten die Quelle verlassen, ist der maximale Fluss ist beschränkt durch V γ max. 19

195 Andreas Jakoby Definition 16 Die Zerlegung der Kontenmenge V = Q S mit Q S = nennen wir q s-schnitt, falls q Q und s S ist. Die Schnittkapazität eines q s-schnittes definieren wir als γ(q, S) := γ((u, v)). (u,v) E, u Q, v S Ein minimaler Schnitt von N ist ein q s-schnitt (Q, S), so dass γ(q, S) minimal unter allen q s-schnitten ist. MINCUT(N) bezeichnet diesen Wert. Für einen Fluss f sei der Nettofluss von f über einen Schnitt (Q, S) definiert als f (Q, S) := f ((u, v)) f ((v, u)) γ(q, S). u Q, v S u Q, v S

G γ(e 1 ) Q γ(e 2 ) S q γ(e r ) s q s-schnitt (Q, S) mit Schnittkapazität γ(q, S). 196

Lemma 9 Für jeden q s-schnitt (Q, S) gilt f (Q, S) = W (f ). Beweis von Lemma 9 Der Beweis erfolgt per Induktion über die Mächtigkeit von Q. Für Q = 1, d.h. für Q = {q} folgt die Behauptung aus der Definition von W (f ). Sei Q > 1 und v Q mit v q. Nach Voraussetzung gilt f (Q \ {v}, S {v}) = W (f ). 197

Beweis von Lemma 9 (Teil 2) G Q S q f 1 v f s f 3 f 2 198

Beweis von Lemma 9 (Teil 3) Sei f 1 der Gesamtfluss nach v von Knoten aus Q \ {v} und f 2 der Gesamtfluss nach v von Knoten aus S. Sei f 3 der Gesamtfluss aus v nach Q \ {v} und f der Gesamtfluss von v nach S. Die Flussbedingung garantiert f 1 + f 2 = f 3 + f oder f f 2 + f 3 f 1 = 0. f (Q, S) lässt sich darstellen als f (Q, S) = f (Q \ {v}, S {v}) + f f 2 + f 3 f 1 = f (Q \ {v}, S {v}) = W (f ). 199

Definition 17 Der Restgraphen G = (V, E ) für einen Fluss f definieren wir über die Kantenmenge E, wobei: Für jede Kante e E mit f (e) < γ(e) ist e E mit Kapazität γ(e) f (e). Für jede Kante e = (u, v) E mit 0 < f (e) ist die Rückwärtskante ẽ = (v, u) in E mit Kapazität f (e). u v u v q 5 7 3 5 s 5 3 = 2 q 3 7 3 3 = 0 5 3 s 6 w x 6 6 w 3 x 6 3 = 3 200

201 Andreas Jakoby Definition 17 (Teil 2) Sei G = (V, E ) der Restgraph von G für einen Fluss f, dann ist REST(N, f ) := (V, E, q, s, r) mit γ(e) f (e) falls e E und γ(e) > f (e) r(e) := f ((v, u)) falls e = (u, v), (v, u) E und f ((v, u)) > 0. Ein Weg von der Quelle zur Senke im Restgraphen heißt zunehmender Weg.

Sei f ein Fluss in N = (V, E, q, s, γ) und π ein zunehmender Weg in N f = REST(N, f ) = (V, E, q, s, γ). Wir gehen im folgeden davon aus, dass ein zunehmender Weg jeden Knoten maximal einmal besucht. Der nachfolgende Algorithmus modifiziert f : Algorithmus modify-flow(n, f, π) Eingabe: Netzwerk N, Fluss f in N und zunehmender Weg π in N f Ergebnis: um π erhöhter Fluss f in N 1: ρ := min{r(e i ) e i π} 2: for e i π do 3: if e i ist Vorwärtskante in N f, d.h. e i E then : f (e i ) := f (e i ) + ρ 5: else if e i ist Rückwärtskante in N f, d.h. e i E \ E then 6: f (e i ) := f (e i ) ρ 7: end if 8: end for 9: Return(f ) 202

Lemma 10 Ist f ein Fluss in N und π ein zunehmender Weg in N f, dann ist modify-flow(n, f, π) auch ein Fluss in N. Beweis von Lemma 10: Wir müssen zunächst zeigen, dass f := modify-flow(n, f, π) die Kapazitätsschranken γ einhält. Da wir nur den Fluss auf dem Weg π verändern, genügt es, wenn wir für alle Kanten e π zeigen, dass 0 f (e) γ(e) gilt. Ist e eine Vorwärtskante, dann gilt 0 f (e) f (e) + ρ f (e) + r(e) = γ(e). Ist e eine Rückwärts Kante, dann gilt 0 = f (e) f (e) f (e) ρ f (e) γ(e). 203

20 Andreas Jakoby Beweis von Lemma 10 (Teil 2): Als zweites müssen wir nun zeigen, dass die Kirchhoffsche Regel für jeden Knoten v auf π (bis auf q und s) erfüllt ist: f ((u, v)) = f ((v, w)) (u,v) E (v,w) E Betritt und verlässt π den Knoten v auf jeweils einer Vorwärtskante, dann erhöhen wir beide Summen um den Wert ρ. Die Kirchhoffsche Regel bleibt somit erfüllt. Betritt und verlässt π den Knoten v auf jeweils einer Rückwärtskante, dann verringern wir beide Summen um den Wert ρ. Die Kirchhoffsche Regel bleibt somit erfüllt.

205 Andreas Jakoby Beweis von Lemma 10 (Teil 3): Betreten wir v über eine Vorwärtskante (u, v) und verlassen wir v auf einer Rückwärtskante (v, w ), dann f ((u, v)) = f ((u, v)) f ((u, v)) f ((w, v)) (u,v) E = = (u,v) E +f ((u, v)) + f ((w, v)) f ((u, v)) f ((u, v)) f ((w, v)) (u,v) E +f ((u, v)) + ρ + f ((w, v)) ρ f ((v, w)). (v,w) E Die Kirchhoffsche Regel bleibt somit erfüllt.

206 Andreas Jakoby Beweis von Lemma 10 (Teil ): Betreten wir v über eine Rückwärtskante (u, v) und verlassen wir v auf einer Vorwärtsskante (v, w ), dann f ((v, w)) = f ((v, w)) f ((v, u )) f ((v, w )) (v,w) E = = (v,w) E +f ((v, u )) + f ((v, w )) f ((v, w)) f ((v, u )) f ((v, w )) (v,w) E +f ((v, u )) ρ + f ((v, w )) + ρ f ((u, v)). (u,v) E Die Kirchhoffsche Regel bleibt somit erfüllt. Wir haben somit bewiesen, dass f ein Fluss ist, wenn f ein Fluss ist.

Aus der Konstruktion von REST(N, f ) folgt, dass jeder zunehmende Weg q immer über eine Vorwärtskante verlässt, und dass jeder zunehmende Weg s über eine Vorwärtskante erreicht. Es folgt somit: Lemma 11 Führen wir modify-flow(n, f, π) für einen Fluss f und einen zunehmenden aus, so gilt für den resultierenden Fluss f : W (f ) < W (f ). Existiert somit in REST(N, f ) ein zunehmender Weg, dann ist f kein maximaler Fluss. 207

Satz 1 [MAXFLOW-MINCUT-Theorem] Für jedes Netzwerk N gilt: MAXFLOW(N) = MINCUT(N). Beweis von Satz 1: Nach Lemma 9 gilt für einen maximalen Fluss f und für jeden q s-schnitt (Q, S) MAXFLOW(N) = W (f ) = f (Q, S) γ(q, S). Insbesondere gilt für den minimalen q s-schnitt (Q, S) MAXFLOW(N) γ(q, S) = MINCUT(N). 208

Beweis von Satz 1 (Teil 2): Es verbleibt zu zeigen, dass Sei f ein maximaler Fluss in N. MAXFLOW(N) MINCUT(N). Aus Lemma 10 folgt, dass es in REST(N, f ) = (V, E, q, s, r) keinen zunehmenden Weg gibt, d.h. es gibt in G = (V, E ) keinen Weg von q nach s. Sei Q die Menge der Knoten, die von q aus in G erreichbar sind, und sei S := V \ Q. (Q, S) ist ein q s-schnitt. 209

Beweis von Satz 1 (Teil 3): Insbesondere gilt für den q s-schnitt (Q, S): Es gibt keine Vorwärtskanten von Q nach S in G. Somit gilt für jede Kante e Q S: f (e) = γ(e). Es gibt keine Rückwärtskanten von Q nach S in G. Somit gilt für jede Kante e S Q: f (e) = 0. Wir erhalten MINCUT(N) γ(q, S) = f (Q, S) = W (f ) = MAXFLOW(N). 210

Aus den bisher angestellten Beobachtungen (Lemma 11 und Satz 1) können wir den folgenden Algorithmus für das MAXFLOW-Problem herleiten Algorithmus General-MAXFLOW(N) Eingabe: Netzwerk N Ergebnis: maximaler Fluss f in N 1: for e E do f (e) := 0 end for 2: while es existiert ein zunehmender Weg in REST(N, f ) do 3: sei π ein zunehmender Weg in REST(N, f ) : f :=modify-flow(n, f, π) 5: end while 6: Return(f ) 211