Kombinatorische Optimierung

Werbung
Kombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke
Institut für Theoretische Informatik – Paralleles Rechnen
1
KIT –Henning
Universität desMeyerhenke:
Landes Baden-Württemberg und
nationales
Forschungszentrum in
der Helmholtz-Gemeinschaft
Kombinatorische
Optimierung
Institut für Theoretische Informatik
www.kit.edu
Paralleles
Rechnen
Vorlesungen 5 und 6
Programm des Tages:
Flüsse in Netzwerken
Grundlegende Maximaler-Fluss-Algorithmen
Maximale Flüsse und minimale Schnitte
Generischer Push-Relabel-Algorithmus
2
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Inhalt
Flüsse in Netzwerken
Elementare Ergebnisse
Der P USH -R ELABEL-Algorithmus
3
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario 3
Sie verwalten (und gestalten) das Stromnetz einer großen Firma.
Die Firma produziert den Strom selbst an einer (Strom)Quelle.
Der Strom wird an einem Ort auf dem Firmengelände konsumiert
(Senke).
Der Strom muss aus technischen Gründen über eine Zahl von
Zwischenstationen geroutet werden.
Jede Stromleitung zwischen Quelle und Konsument hat eine gewisse
Kapazität.
Fragen:
Bei gegebenem Netz: Wieviel Strom kann von der Quelle bis zur
Senke fließen?
Wie modellieren Sie diese Fragestellung?
4
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Flussnetzwerk
Definition (Flussnetzwerk)
Ein Flussnetzwerk ist ein Quadrupel (G, u , s, t ) mit
einem Digraphen G = (V , E ),
Kantenkapazitäten u : E → R+ ,
einer Quelle s ∈ V und
einer Senke t ∈ V .
5
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Fluss
Definition (Fluss, Überschuss)
Gegeben sei ein Flussnetzwerk (G, u , s, t ).
Ein Fluss ist eine Funktion f : E (G ) → R+
mit f (e ) ≤ u (e ) für alle e ∈ E (G ).
Der Überschuss (engl.: excess) eines Flusses f in v ∈ V (G ) ist
exf (v ) :=
∑
f (e ) −
e ∈N − (v )
∑
f (e )
e ∈N + (v )
N + : Nachbarn an ausgehenden Kanten
N − : Nachbarn an reinkommenden Kanten
6
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
s-t-Fluss
Definition (s-t-Fluss, Wert)
Gegeben sei ein Flussnetzwerk (G, u , s, t ).
Ein s-t-Fluss ist ein Fluss f mit
exf (s ) ≤ 0 und
exf (v ) = 0 für alle v ∈ V (G )\{s, t } (Flusserhaltung).
Der Wert eines s-t-Flusses ist
value (f ) := |f | := −exf (s )
7
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Modellierung der Problemstellung
Problem (Maximaler-Fluss-Problem)
Gegeben sei ein Flussnetzwerk (G, u , s, t ).
Bestimme einen s-t-Fluss mit maximalem Wert.
Idee für Algorithmus?
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Gegenläufige Kanten
Definition (Gegenläufige Kante)
←
−
Sei G ein Digraph und e = (v , w ) ∈ E (G ). Dann sei e eine neue Kante
von w nach v , die gegenläufige Kante von e.
←
−
Ebenso ist e die gegenläufige Kante von e .
Definition
←
→
−
˙ ←
Sei G := (V (G ), E (G )∪{
e : e ∈ E (G )}).
←
−
Achtung: Sind e = (v , w ) und e 0 = (w , v ) ∈ G, dann sind e und e 0
←
→
zwei verschiedene Kanten in G .
9
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Residualnetzwerk
Definition (Residualkapazitäten)
Gegeben sei ein Digraph G mit Kapazitäten u : E (G ) → R+ und ein
Fluss f .
←
→
Residualkapzitäten uf : E ( G ) → R+ mit
←
−
uf (e ) := u (e ) − f (e ) und uf ( e ) := f (e )
Definition (Residualnetzwerk)
Das Residualnetzwerk Gf ist der Graph
←
→
(V (G ), {e ∈ E ( G ) : uf (e ) > 0}).
10
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Finden augmentierender Pfade
Definition (Augmentierender Pfad)
Gegeben sei ein Netzwerk (G, u , s, t ) und ein s-t-Fluss f .
Dann heißt ein s-t-Pfad in Gf f -augmentierender Pfad.
Algorithmus-Idee: Finde sukzessive f -augmentierende Pfade!
11
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Finden augmentierender Pfade
Definition (Augmentierender Pfad)
Gegeben sei ein Netzwerk (G, u , s, t ) und ein s-t-Fluss f .
Dann heißt ein s-t-Pfad in Gf f -augmentierender Pfad.
Algorithmus-Idee: Finde sukzessive f -augmentierende Pfade!
Algorithm 2 Ford-Fulkerson-Algorithmus
1: function F ORD -F ULKERSON ((G, u , s , t ) mit u : E (G ) → Z+ )
2:
Setze f (e ) := 0 für alle e ∈ E (G )
3:
Bestimme einen f -augmentierenden Pfad P
4:
while |P | > 0 do
5:
Berechne γ := mine∈E (P ) uf (e )
6:
Augmentiere f entlang P um γ
7:
Bestimme einen f -augmentierenden Pfad P
8:
end while
11
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Verbesserung des FF-Algorithmus
Edmonds-Karp-Algorithmus
Problem: Laufzeit kann exponentiell zur Eingabelänge sein! Siehe Tafel.
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Verbesserung des FF-Algorithmus
Edmonds-Karp-Algorithmus
Problem: Laufzeit kann exponentiell zur Eingabelänge sein! Siehe Tafel.
Daher Verbesserung:
Algorithm 4 Edmonds-Karp-Algorithmus
1: function E DMONDS -K ARP((G, u , s , t ) mit u : E (G ) → Z+ )
2:
Setze f (e ) := 0 für alle e ∈ E (G )
3:
Bestimme einen kürzesten f -augmentierenden Pfad P
4:
while |P | > 0 do
5:
Berechne γ := mine∈E (P ) uf (e )
6:
Augmentiere f entlang P um γ
7:
Bestimme einen kürzesten f -augmentierenden Pfad P
8:
end while
Anmerkung: Kürzester Pfad bedeutet mit den wenigsten Kanten!
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Edmonds-Karp-Algorithmus
Laufzeit (1)
Definition (Flaschenhals-Kante)
Eine Kante, auf denen das Minimum γ angenommen wird, nennt man
Flaschenhals-Kante.
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Edmonds-Karp-Algorithmus
Laufzeit (1)
Definition (Flaschenhals-Kante)
Eine Kante, auf denen das Minimum γ angenommen wird, nennt man
Flaschenhals-Kante.
Theorem (Edmonds und Karp, 1972)
Unabhängig von den Kantenkapzitäten terminiert der
E DMONDS -K ARP -A LGORITHMUS nach höchstens mn
2 Augmentierungen.
Beweis.
←
→
In jedem augmentierenden Pfad ist mind. eine Flaschenhals-Kante von G .
Eine Flaschenhals-Kante ist in ≤ n4 augmentierenden Pfaden enthalten (oB).
←
→
⇒ Es kann höchstens |E ( G )| n4 augmentierende Pfade geben.
Für die Details siehe Korte und Vygen, S. 195-196.
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Edmonds-Karp-Algorithmus
Laufzeit (2)
Corollary
Der E DMONDS -K ARP -A LGORITHMUS löst das
M AXIMALER -F LUSS -P ROBLEM in der Laufzeit O(m2 n).
Beweis.
Nach Theorem 11 gibt es höchstens mn
2 Augmentierungen.
Jede Augmentierung benutzt BFS und benötigt somit eine
Laufzeit von O(m ).
14
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Schnitte im Flussnetzwerk
Definition (Schnitt)
Ein Schnitt ist eine Aufteilung der Knoten in zwei disjunkte Teilmengen S
und T . Dabei gilt s ∈ S und t ∈ T .
Die Kapazität eines Schnittes (S , T ) ist die Summe aller
Kantenkapazitäten von S nach T , also
u (S , T ) : =
∑
u (v , w ).
v ∈S ,w ∈T ,(v ,w )∈E
Lemma
Sei (G, u , s, t ) ein Flussnetzwerk und sei f ein Fluss in G. Sei außerdem
(S , T ) ein Schnitt in G. Dann gilt:
f (S , T ) = |f |, insbesondere |f | = f (s, V − s ) = f (V − t , t ).
15
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Max-Flow-Min-Cut-Theorem
Theorem
Die folgenden drei Aussagen sind äquivalent:
f ist der maximale Fluss in G.
Das Residualnetzwerk enthält keinen augmentierenden Pfad.
Für mindestens einen Schnitt ist der Wert des Flusses gleich der
Kapazität des Schnittes.
Beweis.
Siehe Tafel.
16
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsergebnisse
Proposition
Das Maximaler-Fluss-Problem hat stets eine optimale Lösung.
17
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsergebnisse
Proposition
Das Maximaler-Fluss-Problem hat stets eine optimale Lösung.
Proposition
Sind die Kapazitäten eines Netzwerkes ganzzahlig, so gibt es einen
ganzzahligen maximalen Fluss.
Beweis.
Folgt direkt aus Max-Flow-Min-Cut.
17
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Inhalt
Flüsse in Netzwerken
Elementare Ergebnisse
Der P USH -R ELABEL-Algorithmus
18
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Vorschau
Wir werden den P USH -R ELABEL-Algorithmus von Goldberg und
Tarjan (1988) beschreiben.
Andere Namen existieren...
√
Wir werden eine Laufzeit von O(n2 m ) beweisen.
Ausgeklügelte Implementierungen mit dynamischen Bäumen sind
noch schneller (siehe Korte und Vygen, S. 201).
19
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Ansatz
Wissen:
Ein s-t-Fluss f hat genau dann maximalen Wert, wenn
exf (v ) = 0 für alle v ∈ V (G ) − {s, t } und
es keinen f -augmentierenden Pfad gibt.
Bisher: Algorithmen erfüllten stets erste Bedingung.
20
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Ansatz
Wissen:
Ein s-t-Fluss f hat genau dann maximalen Wert, wenn
exf (v ) = 0 für alle v ∈ V (G ) − {s, t } und
es keinen f -augmentierenden Pfad gibt.
Bisher: Algorithmen erfüllten stets erste Bedingung.
Nun:
Mit f starten, das zweite Bedingung erfüllt.
Zweite Bedingung als Invariante für weitere Flüsse.
Terminierung nur, wenn erste Bedingung auch erfüllt.
Während des Algorithmus ist f kein s-t-Fluss, sondern ein
s-t-Präfluss.
20
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Intuitive Algorithmus-Idee
Ein Flussnetzwerk transportiert Flüssigkeiten; Kanten stellen Röhren
dar, Knoten deren Verbindungen.
Jeder Knoten hat ein unbegrenztes Reservoir als Zwischenspeicher.
Jeder Knoten, sein Reservoir und seine Verbindungen sind auf einer
Plattform, deren Höhe während Laufzeit zunimmt
Knotenhöhen bestimmen, wie Fluss durch das Netzwerk bewegt wird:
abwärts.
21
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Intuitive Algorithmus-Idee
Ein Flussnetzwerk transportiert Flüssigkeiten; Kanten stellen Röhren
dar, Knoten deren Verbindungen.
Jeder Knoten hat ein unbegrenztes Reservoir als Zwischenspeicher.
Jeder Knoten, sein Reservoir und seine Verbindungen sind auf einer
Plattform, deren Höhe während Laufzeit zunimmt
Knotenhöhen bestimmen, wie Fluss durch das Netzwerk bewegt wird:
abwärts.
Initial sendet s so viel Fluss wie möglich (= u (s, V − s )).
Erreicht Fluss einen Zwischenknoten, wird er zunächst im Reservoir
zwischengespeichert. Von dort wird er später abwärts geschickt.
Wenn alle unsaturierten Rohre, die einen Knoten v verlassen, zu
Knoten w führen, die höher als v liegen, wird v angehoben.
Hat der maximale Fluss die Senke erreicht, wird der Überschuss zur
Quelle zurückgeschickt (Zwischenknoten über Quelle heben).
21
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Präfluss
Definition (Präfluss, aktiver Knoten)
Sei (G, u , s, t ) ein Netzwerk.
Ein s-t-Präfluss ist eine Funktion f : E (G ) → R+ mit
f (e ) ≤ u (e ) für alle e ∈ E (G ) und
(Kapazitätsbedingung)
f (u , v ) = −f (v , u ) für alle u , v ∈ V
(Antisymmetrie)
exf (v ) ≥ 0 für alle v ∈ V (G ) − {s }.
(relaxierte Flusserhaltung)
22
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Präfluss
Definition (Präfluss, aktiver Knoten)
Sei (G, u , s, t ) ein Netzwerk.
Ein s-t-Präfluss ist eine Funktion f : E (G ) → R+ mit
f (e ) ≤ u (e ) für alle e ∈ E (G ) und
(Kapazitätsbedingung)
f (u , v ) = −f (v , u ) für alle u , v ∈ V
(Antisymmetrie)
exf (v ) ≥ 0 für alle v ∈ V (G ) − {s }.
(relaxierte Flusserhaltung)
Ein Knoten v ∈ V (G ) − {s, t } heißt aktiv, falls exf (v ) > 0.
Beispiel: Siehe Tafel.
22
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Distanzmarkierung
Andere Intuition: Funktion der Plattformhöhen
Definition (Distanzmarkierung, erlaubte Kante)
Sei (G, u , s, t ) ein Netzwerk und f ein s-t-Präfluss .
Eine Distanzmarkierung ist eine Funktion ψ : V (G ) → Z+ mit
ψ(t ) = 0,
ψ(s ) = n := |V (G )| und
ψ(v ) ≤ ψ(w ) + 1 für alle (v , w ) ∈ E (Gf ).
Eine Kante e = (v , w ) ∈ E (G ) heißt erlaubte Kante, falls
e ∈ E (Gf ) und
ψ(v ) = ψ(w ) + 1.
23
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Distanzmarkierung
Andere Intuition: Funktion der Plattformhöhen
Definition (Distanzmarkierung, erlaubte Kante)
Sei (G, u , s, t ) ein Netzwerk und f ein s-t-Präfluss .
Eine Distanzmarkierung ist eine Funktion ψ : V (G ) → Z+ mit
ψ(t ) = 0,
ψ(s ) = n := |V (G )| und
ψ(v ) ≤ ψ(w ) + 1 für alle (v , w ) ∈ E (Gf ).
Eine Kante e = (v , w ) ∈ E (G ) heißt erlaubte Kante, falls
e ∈ E (Gf ) und
ψ(v ) = ψ(w ) + 1.
Falls ψ eine Distanzmarkierung ist, so ist ψ(v ) mit v 6= s eine
untere Schranke für die Distanz zu t in Gf .
23
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Algorithmus-Idee
Initialer s-t-Präfluss :
Alle Kanten von s aus nutzen ihre Kapazität voll aus,
alle anderen haben Fluss 0.
Initiale DM:
ψ(s ) = n und
ψ(v ) = 0 für alle v ∈ V (G ) − {s }.
24
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Algorithmus-Idee
Initialer s-t-Präfluss :
Alle Kanten von s aus nutzen ihre Kapazität voll aus,
alle anderen haben Fluss 0.
Initiale DM:
ψ(s ) = n und
ψ(v ) = 0 für alle v ∈ V (G ) − {s }.
Danach Aktualisierungs-Operationen
P USH (Aktualisierung von f ) und
R ELABEL (Aktualisierung von ψ)
in beliebiger Reihenfolge durchführen.
24
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Die Komponenten
25
1:
2:
3:
procedure P USH(e)
Setze γ := min{exf (v ), uf (e )}, wobei e in v beginnt.
Augmentiere f entlang e um γ.
1:
2:
procedure R ELABEL(v)
+
Setze ψ(v ) := min{ψ(w ) + 1 : (v , w ) ∈ δG
(v )}.
Henning Meyerhenke:
Kombinatorische Optimierung
f
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function P USH -R
( ELABEL(G, u , s , t)
u (e ) für jedes e ∈ δ+ (s )
0
für jedes e ∈ E (G ) − δ+ (s )
(
n v =s
Setze ψ(v ) =
0 für alle v ∈ V (G ) − {s }
Setze f (e ) =
while es gibt einen aktiven Knoten do
Sei v ein aktiver Knoten
+
if kein e ∈ δG
ist erlaubte Kante then
f
R ELABEL(v)
else
+
P USH(erlaubte Kante e ∈ δG
)
f
end if
end while=0
Beispiel: Siehe Tafel.
26
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Korrektheit (1)
Proposition
Während des gesamten Ablaufs von P USH -R ELABEL ist
f stets ein s-t-Präfluss und
ψ eine Distanzmarkierung bzgl. f .
Für jedes v ∈ V (G ) gilt:
ψ(v ) wird durch jedes R ELABEL (v ) streng erhöht.
Beweis.
Übung.
27
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Korrektheit (2)
Lemma
Sei f ein s-t-Präfluss und ψ eine DM bzgl. f . Dann gelten:
1. Die Quelle s ist von jedem aktiven Knoten v aus in Gf erreichbar.
2. Falls es
zwei Knoten v , w ∈ V (G )
mit der Eigenschaft gibt,
dass w von v aus in Gf erreichbar ist,
so gilt:
ψ ( v ) ≤ ψ ( w ) + n − 1.
3. Die Senke t ist von s aus in Gf nicht erreichbar.
Beweis.
Siehe Tafel.
28
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Korrektheit (3)
Theorem
Bei Terminierung des Algorithmus ist f ein s-t-Fluss mit maximalem Wert.
Beweis.
Siehe Tafel.
29
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Laufzeit (1)
Lemma
1. Für jedes v ∈ V (G ) gilt:
ψ(v ) wird niemals verringert und
ψ(v ) ≤ 2n − 1 gilt zu jedem Zeitpunkt des Algorithmus.
2.
Für keinen Knoten v wird mehr als (2n − 1) mal R ELABEL(v ) aufgerufen.
Die Gesamterhöhung von ∑v ∈V (G) ψ(v ) nach Ende des Algorithmus ist
≤ 2n2 − n.
Beweis.
Übung.
30
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Laufzeit (2)
Definition (Saturierender Push)
Ein P USH ist saturierend genau dann, wenn danach uf (e ) = 0 gilt.
Lemma
Die Anzahl der saturierenden Pushes ist höchstens 2mn.
Beweis.
Siehe Tafel.
31
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der P USH -R ELABEL-Algorithmus
Laufzeit (3)
Lemma
Falls wir als v in Zeile 5 von P USH -R ELABEL immer einen aktiven Knoten
mit ψ(v ) maximal wählen,
√ dann ist die Anzahl der nichtsaturierenden
Pushes höchstens 8n2 m.
Beweis.
Siehe Korte und Vygen, S. 204-205.
Theorem
Der P USH -R ELABEL-Algorithmus löst
√ das M AXIMALER -F LUSS -P ROBLEM
korrekt und kann mit Laufzeit O(n2 m ) implementiert werden.
Beweis.
Siehe Tafel.
32
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Herunterladen