Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effiziente Algorithmen

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Algorithmen"—  Präsentation transkript:

1 Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS 06 8.6.

2 Min-Cuts Im s-t Min Cut Problem ist ein Flussnetzwerk die Eingabe
Gesucht wird ein s-t Cut, d.h. eine Partition des Knotenmenge V in Mengen L,R mit s2 L und t2 R Der Fluss über den Schnitt ist f(L,R) Die Kapazität des Schnittes ist C(L,R) Gesucht ist ein s-t Schnitt L,R mit minimaler Kapazität

3 Das Max-Flow Min-Cut Theorem
Sei N=(G,C,s,t) ein Flussnetzwerk Sei f ein Fluss mit Wert W(f) Sei L,R ein minimaler s,t Schnitt mit Kapazität C(L,R) Folgendes ist äquivalent: f ist maximal Nf enthält keinen augmentierenden Pfad W(f)=C(L,R)

4 Beweis Lemma Sei f ein Fluss und L,R ein s-t Schnitt
Dann ist f(L,R)=W(f) Beweis: f(L-{s},V)=0 wegen Flusserhaltung f(L,R)=f(L,V)-f(L,L) [nach Beobachtung 14.1] =f(L,V) =f({s},V)+f(L-{s},V) =f({s},V) =W(f)

5 Beweis Lemma W(f)· C(L,R) für jeden Fluss f und jeden s,t Schnitt L,R
W(f)=f(L,R)· C(L,R) Damit ist W(f) für den maximalen Fluss durch C(L,R) für den minimalen s,t-Schnitt beschränkt

6 Beweis des Theorems 1 nach 2:
f sei maximal, aber Nf habe noch einen augmentierenden Pfad p. Da aber f+fp ein grösserer Fluss ist: Widerspruch 2 nach 3: Angenommen, Nf hat keinen augmentierenden Pfad W(f)· C(L,R) nach Lemma Konstruiere einen Schnitt L: Knoten, die in Nf von s erreichbar sind R: restliche Knoten f(L,R)=W(f) Alle Kanten in G von L nach R erfüllen: f(u,v)=C(u,v), sonst wären sie Kanten in Nf Damit gilt W(f)=f(L,R)=C(L,R) 3 nach 1: W(f)· C(L,R). Wenn also W(f)=C(L,R), so ist f maximal

7 Korrektheit von Ford-Fulkerson
Damit ist der Ford-Fulkerson Algorithmus korrekt.

8 Zurück zur Laufzeit Wir nehmen an, augmentierende Pfade werden per Breitensuche bestimmt Dann gilt Die Anzahl der Iterationen ist durch O(mn) beschränkt Somit kann Ford-Fulkerson maximale Flüsse in Zeit O(m2n) bestimmen.

9 Anzahl der Iterationen
Lemma: Sei N ein Flussnetzwerk Für alle Knoten v ausser s,t gilt: Die Distanz (Anzahl Kanten auf Weg) von s nach v steigt monoton (beim Übergang auf residuale Netzwerke im FF Algo) Beweis: Angenommen die Distanz s nach v; (s,v) sinkt in einer Iteration f sei Fluss vor der Iteration, f‘ danach (s,v) sei Distanz in Nf; (s,v) in Nf ‘; v habe min. (s,v) unter allen v, wo (s,v)<(s,v) (*) p: s nach u nach v sei ein kürzester Pfad in Nf ‘ (s,u)=(s,v)-1 (s,u)·(s,u) wg.(*) Dann ist (u,v) keine Kante in Nf ,denn Angenommen (u,v)2 Nf, dann (s,v)·(s,u)+1 ·(s,u)+1 =(s,v); Widerspruch

10 Anzahl der Iterationen
Also (u,v) in Nf‘, aber nicht in Nf D.h. Fluss von v nach u wurde erhöht Ein augmentierender Pfad in Nf mit Kante (v,u) D.h. ein kürzester Weg von s nach u mit der Kante (v,u) am Ende existiert Somit: (s,v) =(s,u)-1 ·(s,u)-1 =(s,v)-2 Wir haben aber (s,v)<(s,v) angenommen.

11 Anzahl der Iterationen
Theorem: Es gibt O(mn) Iterationen Beweis: In Nf sei eine Kante kritisch, wenn die Restkapazität des augmentierenden Pfades p die Kapazität von (u,v) in Nf ist Kritische Kanten werden entfernt, d.h. liegen nicht in Nf ' Ein augmentierender Pfad hat mind. eine krit. Kante Behauptung: Jede Kante kann nur n/2-1 mal kritisch sein Daher gibt es insgesamt nur nm mal das Ereignis: eine Kante ist kritisch, und nur so viele Iterationen, denn in allen Nf werden insgesamt nur 2m verschiedene Kanten verwendet

12 Beweis der Behauptung u,v seien Knoten mit einer Kante in E
wenn (u,v) kritisch ist in Nf zum ersten mal: (s,v)=(s,u)+1 Nach der Augmentation verschwindet (u,v) (u,v) kann nur dann wieder auftauchen, wenn später der Fluss von u nach v verringert wird Dann ist (v,u) euf einem augmentierenden Pfad; f‘ sei der Fluss zu diesem Zeitpunkt (s,u)=(s,v)+1 (s,v)·(s,v) Somit: ¸(s,v)+1 =(s,u)+2 Also ist die Distanz s nach um 2 gestiegen, bevor (u,v) wieder kritisch werden kann Die Distanz ist ein Wert zwischen 0 und n-1 Somit kann dies nur n/2-1 mal passieren.

13 Zusammenfassung Die Edmonds-Karp Version von Ford-Fulkerson berechnet maximale Flüsse in Zeit O(m2n)

14 Eine Anwendung Gegeben sei ein bipartiter ungerichteter Graph G
Ein Matching ist eine Kantenmenge in G, bei der keine zwei Kanten einen Knoten gemeinsam haben Gesucht ist ein maximales Matching

15 Berechnung von Matchings
Wir wollen den Flussalgorithmus auf Matchings anwenden

16 Berechnung von Matchings
Neue Knoten s,t Knotenmengen U,V des bipartiten Graphen Kanten: (s,u) für alle u aus U (v,t) für alle v aus V (u,v) wie in G Kapazitäten seien alle 1

17 Berechnung von Matchings
Problem: Flüsse können nichtintegral sein Wir nennen einen Fluss ganzzahlig, wenn alle f(u,v) ganze Zahlen sind Behauptung: Wenn M ein Matching in G ist, dann gibt es einen ganzzahligen Fluss f im Flussnetzwerk mit W(f)=|M| Umgekehrt, zu einem ganzzahligen Fluss f gibt es ein Matching mit W(f)=|M|

18 Beweis 1) Matching entspricht Fluss Definiere Fluss wie folgt:
f(u,v)=1 wenn (u,v) im Matching, dann auch f(v,u)=-1, f(s,u)=1, f(v,t)=1 etc. alle anderen Kanten f(u,v)=0 etc. Dies ist ein korrekter Fluss Grösse ist |M| offensichtlich

19 Beweis 2) Fluss entspricht Matching Sei f ein ganzzahliger Fluss
Setze M={(u,v) mit f(u,v)> 0} C(s,u)=1, also f(s,u)2{0,1} f(u,v)2{0,1} somit Für u gibt es höchstens ein v mit f(u,v)=1 M ist also ein Matching Offensichtlich ist |M|=W(f)

20 Integralitätstheorem
Theorem Wenn C(u,v) immer ganzzahlig ist, und ein maximaler Fluss mit Ford Fulkerson berechnet wird, so ist W(f) ganzzahlig und f(u,v) ist immer ganzzahlig Korollar: Maximale Bipartite Matchings können in Zeit O(m2n) berechnet werden Tatsächlich läuft der Algorithmus in Zeit O(mn): Ford Fulkerson läuft in Zeit O(W(f) m) für den maximalen Fluss f, und W(f)· n Beweis: Induktion über die Iterationen Erste Iteration: es gibt einen augmentierenden Pfad mit ganzzahliger Kapazität (Cp(f) ganzzahlig) Dann ist Nf wieder ein Netz mit ganzzahligen Kapazitäten.


Herunterladen ppt "Effiziente Algorithmen"

Ähnliche Präsentationen


Google-Anzeigen