Algorithmentheorie. 13 - Maximale Flüsse



Ähnliche Dokumente
Das Briefträgerproblem

WS 2013/14. Diskrete Strukturen

Kombinatorische Optimierung

Kombinatorische Optimierung

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

Grundlagen der Theoretischen Informatik, SoSe 2008

Algorithmische Mathematik

8 Diskrete Optimierung

Algorithmen II Vorlesung am

Algorithmen und Datenstrukturen 2

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

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

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

Guten Morgen und Willkommen zur Saalübung!

Die Komplexitätsklassen P und NP

7 Rechnen mit Polynomen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Einführung in die Algebra

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Konzepte der Informatik

6.2 Scan-Konvertierung (Scan Conversion)

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Gleichungen und Ungleichungen

WS 2009/10. Diskrete Strukturen

Übung Theoretische Grundlagen

ADS: Algorithmen und Datenstrukturen 2

Kapitel 6: Graphalgorithmen Gliederung

1 topologisches Sortieren

Korrelation (II) Korrelation und Kausalität

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Bin Packing oder Wie bekomme ich die Klamotten in die Kisten?

Informationsblatt Induktionsbeweis

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

Informatik I WS 07/08 Tutorium 24

Verkehrsstauspiel: Wieviel Prozent der Autos fahren über blau/grün? Jörg Rambau

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Wiederholung zu Flüssen

Expander Graphen und Ihre Anwendungen

Anmerkungen zur Übergangsprüfung

Grundlagen der Theoretischen Informatik

Primzahlen und RSA-Verschlüsselung

Bestimmung einer ersten

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Lösungen zu Kapitel 7

Bruchrechnung Wir teilen gerecht auf

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

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

Musterlösungen zur Linearen Algebra II Blatt 5

PROSEMINAR ONLINE ALGORITHMEN

Information Systems Engineering Seminar

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Kompetitive Analysen von Online-Algorithmen

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Theoretische Grundlagen der Informatik

Übungsaufgaben Tilgungsrechnung

Stackelberg Scheduling Strategien

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Mathematischer Vorbereitungskurs für Ökonomen

Grundbegriffe der Informatik

Erwin Grüner

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

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Statistische Untersuchungen zu endlichen Funktionsgraphen

Repetitionsaufgaben Wurzelgleichungen

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

WS 2008/09. Diskrete Strukturen

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Software-Engineering SS03. Zustandsautomat

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Lange Nacht der Wissenschaft. Ein Klassiker. Die Mathematik der Kürzesten Wege

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

Quadratische Gleichungen

Abiturprüfung Mathematik 2008 (Baden-Württemberg) Berufliche Gymnasien ohne TG Analysis, Aufgabe 1

1 C H R I S T O P H D R Ö S S E R D E R M A T H E M A T I K V E R F Ü H R E R

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

Definition 3.1: Ein Differentialgleichungssystem 1. Ordnung

7.3 Einrichtung 13. Monatslohn. Auszahlung Ende Jahr / Ende der Beschäftigung

Kosten-Leistungsrechnung Rechenweg Optimales Produktionsprogramm

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle

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

W-Rechnung und Statistik für Ingenieure Übung 11

Aufgabe 1 Berechne den Gesamtwiderstand dieses einfachen Netzwerkes. Lösung Innerhalb dieser Schaltung sind alle Widerstände in Reihe geschaltet.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Definition und Begriffe

Approximation durch Taylorpolynome

4. Versicherungsangebot

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet

Professionelle Seminare im Bereich MS-Office

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Wasserfall-Ansätze zur Bildsegmentierung

Erstellen von x-y-diagrammen in OpenOffice.calc

Der Zwei-Quadrate-Satz von Fermat

Transkript:

Algorithmentheorie 3 - Maximale Flüsse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

. Maximale Flüsse in Netzwerken 5 3 4 7 s 0 5 9 5 9 4 3 4 5 0 3 5 5 t 8 8

Netzwerke und Flüsse N = (V,E,c) gerichtetes Netzwerk G = (V,E) gerichteter Graph, c: E R + Kapazitätsfunktion s,t V, s Quelle, t Senke Zulässiger (s,t)-fluss: f: E R a) 0 f ( e) c( e) e E Kapazitätsbeschränkung b) e ein(v) f(e) = e aus(v) f(e) v V- { s, t} Flusserhaltung ein(v) = { Kanten in v hinein} aus( v) = { Kanten aus v heraus} 3

Beispiel / 0/9 5/5 5 9 3/3 4/4 4 3/3 / 7/4 t s 5 9/4 4/4 3 5 0/4 5/ 5/5 8 8 4

Doppelkanten O.B.d.A. hat der Graph keine Doppelkanten. 5

Der Wert eines Flusses Sei f ein zulässiger Fluss Dann ist sein Wert: W ( f ) = f e aus( s) ( e) f e ein( s) ( e) Das Max-Fluss Problem: Berechne einen zulässigen Fluss maximalen Werts. 6

. Schnitte Definition: Ein (s,t)-schnitt ist eine Partition S,T von V, d.h. V = S T, S T =, so dass s S, t T. Kapazität eines Schnitts: C( S, T ) = c( e) e E ( S T ) s 0 0 0 0 t 7

8 Flüsse und Schnitte Lemma : Seien f ein zulässiger Fluss und (S,T) ein (s,t)-schnitt. Dann gilt: Beweis: ), ( ) ( T S C f W = ) ( ) ( ) ( ) ( ) ( s ein e s aus e e f e f f W

3. Algorithmische Idee Zunehmende Wege: Finde Wege, entlang deren der Fluss erhöht werden kann. 0/ s 0/0 / 0/0 t 0/ 9

Zunehmende Wege 0/0 s 0/9 / 0/9 t 0/0 0

4. Restnetzwerke Restnetzwerk RN bzgl. eines zulässigen Flusses f: E = { (v,w) : (v,w) = e E und f(e) < c(e)} E = { (w,v) : (v,w) = e E und f(e) > 0} Für e = (v,w) E verwende e für (v,w) E e für (w,v) E (sofern existent) (sofern existent) c : E E R + c( e c( e ) = c( e) ) = f ( e) f ( e) für für e e E E RN = (V, E E, c)

Beispiel 0/ s / 0/0 0/0 0/ t s t

Beispiel 0/0 s / 0/9 0/9 0/0 t s t 3

4 Schichtnetzwerke U K 0 0 0 für } ), ( : ); ( { } { + = = = i i i i i V V i E E w v V v V V V w V s V ( ) ( ) = + U 0,, i i i c V V E E V SN

Beispiel 0/ s 0/0 / 0/0 t 0/ s 9 0 9 0 t 5

Beispiel 0/0 s 0/9 / 0/9 t 0/0 s 0 9 9 t 0 6

Maximale Flüsse Lemma : Sei f ein zulässiger (s,t)-fluss in N und sei das Schichtnetzwerk bzgl. f. SN = ( V, E, c) a) f ist ein maximaler Fluss gdw. t V b) Sei f ein zulässiger (s,t)-fluss in SN. Dann ist f : E R mit ein zulässiger (s,t)-fluss in N mit f '( e) = f ( e) + f ( e ) f ( e) W ( f ') = W ( f ) + W ( f ) Definiere f (e i ) = 0 für e i E. 7

Beispiel 0/0 s 0/0 /0 0/0 t 0/0 s 0 0 0 0 t 8

Beweis, Teil b) Beweis: b) Kapazitätsbedingungen. Sei e E, dann gilt: 9

Beweis, Teil b) Für jeden Knoten v V gilt: = f () e f () e e aus( v) e ein( v) Flusserhaltung : Wert : 0

Beweis, Teil a) a) " " Sei t V. Dann existiert ein Weg P von s nach t in SN. s t Also ist f nicht maximal. ε = min. Kapazität von Kanten in P f () e ε e auf P = 0 e nicht auf P

Beweis, Teil a) " " Setze S = V, T = V S Dann gilt s S, t T, und ( S, T ) ist ein ( s, t) Schnitt. (E E ) (S T) = f(e) = c(e) für e S T f(e) = 0 für e T S W ( f ) f ( e) f ( e) = C( S, T ) = ( S T ) ( T S) e E e E Da W(g) C(S,T) für jeden zulässigen Fluss g, ist f ein maximaler Fluss.

Maximale Flüsse und minimale Schnitte Satz : Seien N = (V, E, c) ein Netzwerk und s, t V. f max = max. Wert eines zulässigen (s,t)-flusses c min = min. Kapazität eines (s,t)-schnittes. f max = c min Beweis: f max und c min existieren. Wegen Lemma gilt f max c min Seien f ein Fluss mit W(f) = f max und SN = (V,E,c) das Schichtnetzwerk bzgl. f. Setze S = V und T = V S. Im Beweis von Lemma zeigten wir: W ( f ) f ( e) f ( e) = C( S, T ) = ( S T ) ( T S) e E e E 3

5. Blockierende Flüsse Definition: Ein zulässiger Fluss f in einem Schichtnetzwerk SN ist blockierend, wenn auf jedem Weg s = v e e 0 v e v 3 e... k v k = t von s nach t mindestens eine Kante gesättigt ist, d.h. f(e i ) = c(e i ) für mindestens ein i. 9/9 s 0/9 0/9 9/9 t V 0 V V 4

Algorithmus. f(e) 0 für alle e E;. Konstruiere Schichtnetzwerk SN = (V,E,c ) bzgl. f; 3. while t V do 4. Finde einen blockierenden Fluss f in SN; 5. Aktualisiere f gemäß f wie in Lemma b) beschrieben; 6. Konstruiere Schichtnetzwerk SN bzgl. f; 7. endwhile; Wie findet man einen blockierenden Fluss? Wie viele Iterationen? 5

6. Die Tiefe eines Schichtnetzwerks Definition: Die Tiefe eines Schichtnetzwerks SN ist das k mit t V k. Lemma 3: Sei k i die Tiefe des Schichtnetzwerks in der i-ten Iteration. Dann gilt k i > k i-, für i. Beweis: Schichtnetzwerk in der i-ten Iteration: SN i Es existiert Weg P von s to t der Länge k i. s = v 0 e e 3 v v e... e ki vk i e ki v = k i t d j = Schichtnummer von v j in SN i-, 0 j k i d j = wenn v j kein Knoten in SN i- 6

Die Tiefe eines Schichtnetzwerks Behauptung: Für alle i gilt: a) Gibt es eine Kante von v j- nach v j in SN i-, dann gilt d j = d j- +. b) Gibt es keine Kante von v j- nach v j in SN i- dann gilt d j d j-. c) k i- < k i Beweis: a) Offensichtlich. 7

Teil b) b) Annahme: d j d j- + f i- ergibt SN i- f i ergibt SN i Ist Ist ( v ) j, v j ( v, v ) j j E E Also (v j, v j- ) E i- Somit ist d j- = d j + und d j = d j- < d j- 8

Teil c) c) Da v 0 = s und d 0 = 0, folgt aus a) und b), dass d j j, für j k i. Somit k i- = d ki k i. Annahme: k i- = k i. Dann existiert ein Weg P in LN i-. s = v 0 e e 3 v v e... e ki vk i e ki v = k i t 9

Teil c) Da wir einen blockierenden Fluss in SN i- berechnen, gibt es eine gesättigte Kante e v j j- v j ( v ) j, v j ( v, v ) j j E E 30

Die Anzahl der Iterationen Korollar: Die Anzahl der Iterationen ist n. 3

7. Blockierende Flüsse: DFS-Algorithmus 3 s 4 3 t 4 5 Beginne bei s und wähle stets die erste ausgehende Kante aus einem Knoten bis a) t erreicht oder b) Sackgasse v erreicht. (a) Bestimme die kleinste Kap. ε entlang d. Wegs. Erhöhe den Fluss um ε, vermindere die Kap. um ε und entferne gesättigte Kanten. (b) Gehe einen Knoten zurück, entferne v und seine eingehenden Kanten. 3

Analyse Satz : Ein blockierender Fluss kann in Zeit O(ne) berechnet werden. Beweis: k =Tiefe des Schichtnetzwerks Konstruktion eines Wegs benötigt Zeit O(k + # durchlaufene Kanten, die in Sackgassen enden). Höchstens e Wege werden konstruiert. Gesamtzeit: O(ke + e) = O(ne) 33

Verbesserter Algorithmus Arbeite mit dem Schichtnetzwerk. Potenzial eines Knotens v bzgl. f PO, e aus () v min c() e f () e c() e f () e = ( ) ( ) v e ein v PO * = min {PO(v): v V} 34

Verbesserter Algorithmus Wähle v mit PO(v) = PO*. Schiebe PO* Flusseinheiten von v in höhere Schichten. 4 4 3 4 3 3 t 4 5 V l- V l V l+ 35

Verbesserter Algorithmus Schicht V h : Menge S h V h, die PO* zusätzliche Flusseinheiten hat. [] x, S[] x = Überfluss am Knoten. PO* = S x x S h Ziehe PO* Flusseinheiten nach v aus niedrigeren Schichten. Fluss erhöht sich um PO* Einheiten. Vereinfache das Netzwerk, indem gesättigte Kanten und Knoten mit Ein- oder Ausgangsgrad gleich 0 entfernt werden. (Mindestens ein Knoten wird entfernt.) 36

Das Schieben von Fluss Algorithmus schiebe(x,s,h); \\ x ist Knoten in Schicht V h und bei x sind S zusätzliche Flusseinheiten verfügbar. Diese werden in Knoten der Schicht V h+ geschoben.. while S >0 do. Sei e = (x,y) die erste aus x ausgehende Kante; 3. δ min(s, c(e) f(e)); 4. Erhöhe den Fluss auf e um δ, vermindere c(e) um δ, füge y zu S h+ hinzu (falls noch nicht El.), erhöhe S[y] um δ; 5. S S - δ; 6. if c(e) = 0 then entferne e aus dem Graphen endif; 7. endwhile; 8. Entferne x aus S h und setze S[x] auf Null; 9. if (aus(x) = und x t) or (ein(x) = und x s) then 0. Füge x zur Menge del hinzu;. endif; 37

Algorithmus für blockierenden Fluss. for all x V do S[x] 0 endfor;. for all l, 0 l k, do S l endfor; 3. del 4. while SN ist nicht leer do 5. Berechne PO[v] für alle v V und PO* = min {PO[v]; v V}; Sei v V l ein Knoten mit PO* = PO[v]; 6. S[v] PO*; S l {v}; 7. for h von l bis k do 8. for all x S h do schiebe(x,s[x], h) endfor; 9. endfor; 0. S[v] PO*; S l {v}. for h von l bis do. for all x S h do ziehe(x,s[x],h) endfor; 3. endfor; 4. vereinfache(del) 5. endwhile; 38

Ergebnis Satz 3: Ein blockierender Fluss in einem Schichtnetzwerk kann in Zeit O(n ) berechnet werden. Beweis: -3: O(n) Schleife 4-5: O(n)-mal ausgeführt. Jede Ausführung kostet O(n), wenn wir schiebe, ziehe, vereinfache ignorieren. Alle Ausführungen von schiebe / ziehe benötigen Zeit O(n + e). Alle Ausführungen von vereinfache benötigen Zeit O(n + e). 39

Ergebnis Satz 4: Ein maximaler Fluss kann in Zeit O(n 3 ) berechnet werden. Beweis: Ein Schichtnetzwerk und ein blockierender Fluss können in Zeit O(n ) berechnet werden. 40

8. d-beschränkte Netzwerke Definition: Sei d eine natürliche Zahl. N = (V,E,c) ist d-beschränkt, wenn c(e) {,,...,d} für alle e E. -beschränkte Netzwerke heißen (0,)-Netzwerke. Anwendung unserer Flussalgorithmen auf d-beschränkte Netzwerke: alle berechneten Flüsse sind ganzzahlig, d.h. f(e) IN 0 der maximale Fluss ist ganzzahlig 4

d-beschränkte Netzwerke Satz 5: Ein blockierender Fluss kann in einem d-beschränkten Netzwerk in Zeit O(de) berechnet werden. Für d = ergibt sich Zeit O(e). Beweis: DFS-Algorithmus Zeit für die Konstruktion eines Wegs: O(# Kanten auf s-t-weg + # durchlaufenen Kanten, die in Sackgassen enden) Jede Kante ist in höchstens d Wegen enthalten. 4

Maximale Flüsse in Restnetzwerken Lemma 4: Seien N ein Netzwerk und f max der Wert eines maximalen (s,t)-flusses. Seien RN das Restnetzwerk bzgl. eines Flusses f und f max der Wert eines maximalen (s,t)-flusses in RN. Dann gilt f max = f max + W(f). Beweis: Sei (S,V S) ein (s,t)-schnitt. C(S,V S): Kapazität von (S,V S) bzgl. N C(S,V S): Kapazität von (S,V S) bzgl. RN 43

Also C min = C min W ( f ), wobei C min, C min N bzw. RN sind. die minimalen Kapazitäten von ( s, t) Schnitten in 44

9. Einfache Netzwerke Definition: Ein Netzwerk N = (V,E,c) ist einfach, wenn indeg(v) = oder outdeg(v) = für alle v V. Satz 6: Sei N = (V,E,c) ein einfaches (0,)-Netzwerk. Dann kann ein maximaler Fluss in Zeit O(n / e) berechnet werden. 45

Restnetzwerke einfacher Netzwerke Behauptung: Sei N ein einfaches Netzwerk und f ein Fluss in N. Dann ist RN einfach. Beweis: Sei v V und indeg(v) = (outdeg(v) = analog). Ist f(e) = 0 für e ein(v), dann ist f(e ) = 0 für alle e aus(v), und v hat Eingangsgrad in RN. 0 0 0 0 e 0 e 0 Ist f(e) = für e ein(v), dann ist f(e ) = für genau ein e aus(v), und v hat Eingangsgrad in RN. 46

Beweis von Satz 6 Blockierender Fluss kann in Zeit O(e) berechnet werden. Wir zeigen: # Iterationen = O(n / ). f max = Wert eines maximalen (s,t)-flusses. f max < n / : ok Angenommen f max n /. Sei Iteration l diejenige, in der der Flusswert auf f max n / ansteigt. Wir zeigen, dass das Schichtnetzwerk in Iteration l Tiefe n / hat. f : zulässiger (s,t)-fluss unmittelbar vor Iteration l RN: Restnetzwerk bzgl. f. 47

Beweis von Satz 6 Wegen Lemma 4 gibt es in RN einen Fluss f mit Wert max max ( ) ( / ) / f f f n n f = f W = max max O.B.d.A. ist f ganzzahlig, d.h. f(e) {0,}. RN ist einfach, und daher läuft höchstens eine Flusseinheit durch jeden Knoten v V {s,t}. f besteht aus n / knotendisjunkten Wegen von s nach t. Also gibt es einen Weg mit < n / Zwischenknoten. 48

0. Matchings in bipartiten Graphen G = (V,E) ungerichteter Graph. Matching M ist eine Kantenmenge M E, so dass keine zwei Kanten e, e M, e e, einen gemeinsamen Endknoten haben. Ein maximales Matching ist ein Matching maximaler Kardinalität. 49

Matchings in bipartiten Graphen Ein ungerichteter Graph G = (V,E) ist bipartit, wenn V = V V für V,V V mit V V = und E V V. 50

Matchings in bipartiten Graphen Satz 7: Sei G = (V V,E),E V V, ein bipartiter Graph. Dann kann ein maximales Matching in Zeit O(n / e) berechnet werden. Beweis: Konstruiere einfaches Netzwerk wie folgt: (Alle Kapazitäten sind.) s t 5