Kombinatorische Optimierung - Juniorprof. Dr. Henning

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
Vorlesung
Programm:
Wiederholung FIFO-PRA
Varianten des Maximaler-Fluss-Problems
Anwendungen des Maximaler-Fluss-Problems
2
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Inhalt
Flüsse in Netzwerken
Varianten und Anwendungen
3
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
FIFO-Push-Relabel-Algorithmus
Durchführung
Aktive Knoten werden in FIFO-Reihenfolge untersucht
Warteschlange mit aktiven Knoten
Neue aktive Knoten werden in die Schlange eingefügt
Nach der Untersuchung von u ist u nicht mehr aktiv oder es wurde
R ELABEL(u) durchgeführt
Falls R ELABEL(u), dann u in Schlange einfügen
Terminierung des Alg., wenn Schlange aktiver Knoten leer
Initiale Höhen:
(
ψ (u ) =
4
Henning Meyerhenke:
Kombinatorische Optimierung
dG ( u , t )
|V |
falls u 6= s
sonst
Institut für Theoretische Informatik
Paralleles Rechnen
FIFO-Push-Relabel-Algorithmus
Laufzeit
Initiales ψ durch Rückwärts-BFS von t aus berechnen
Initial sind alle Kanten von s aus saturiert
Theorem
Der FIFO-P USH -R ELABEL-Algorithmus
arbeitet bei Eingabe eines Flussnetzwerks (G, u , s, t ) korrekt und
hat eine Laufzeit von O(|V |3 ).
Beweis.
Korrektheit folgt aus Korrektheit des generischen Algorithmus
Laufzeit: Siehe Tafel
5
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Varianten des
Maximaler-Fluss-Problems
Knotenkapazitäten
Ungerichtete Graphen
Minimaler Schnitt mit minimaler Zahl von Kanten
Aufgabenbeschreibung:
Eingabe: Flussnetzwerk (G, u , s, t )
Ausgabe: Minimaler Schnitt von (G, u , s, t ) mit minimaler Zahl von Kanten
Frage: Wie modellieren Sie diese Aufgabe?
6
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario: Stadtwerke
Anforderung des Kunden
Wir, die Stadtwerke, müssen regelmäßig die Kanalisation säubern.
Dies wird durch die Durchleitung einer hohen Wassermenge erreicht.
Um kein Wasser zu verschwenden, soll es “im Kreis fließen”. Dann
kommt es an der Kläranlage wieder an.
Wir wissen für jeden Kanalabschnitt, wie viel Wasser mindestens
durchfließen muss.
Manche Kanäle sind nicht beidseitig zu benutzen.
7
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario: Stadtwerke
Anforderung des Kunden
Wir, die Stadtwerke, müssen regelmäßig die Kanalisation säubern.
Dies wird durch die Durchleitung einer hohen Wassermenge erreicht.
Um kein Wasser zu verschwenden, soll es “im Kreis fließen”. Dann
kommt es an der Kläranlage wieder an.
Wir wissen für jeden Kanalabschnitt, wie viel Wasser mindestens
durchfließen muss.
Manche Kanäle sind nicht beidseitig zu benutzen.
Frage: Wie findet man einen zulässigen “Durchfluss”?
Aufgabe: Modellieren Sie das Problem!
7
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Definition
Definition
Ein Zirkulationsnetzwerk ist ein Tripel (G, b, u ) mit
einem gerichteten Graphen G = (V , E ) und
b, u : E → R mit b (e ) ≤ u (e ) für alle e ∈ E.
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Definition
Definition
Ein Zirkulationsnetzwerk ist ein Tripel (G, b, u ) mit
einem gerichteten Graphen G = (V , E ) und
b, u : E → R mit b (e ) ≤ u (e ) für alle e ∈ E.
Definition
Eine Zirkulation f ist ein Fluss ohne Quelle und ohne Senke.
Formal ist f : E → R mit
1. b (e ) ≤ f (e ) ≤ u (e ) ∀e ∈ E
(Kapazitätsbedingung)
2. ∑(u ,v )∈E f (u , v ) = ∑(v ,w )∈E f (v , w ) ∀v ∈ V
(Flusserhaltung)
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Definition
Definition
Ein Zirkulationsnetzwerk ist ein Tripel (G, b, u ) mit
einem gerichteten Graphen G = (V , E ) und
b, u : E → R mit b (e ) ≤ u (e ) für alle e ∈ E.
Definition
Eine Zirkulation f ist ein Fluss ohne Quelle und ohne Senke.
Formal ist f : E → R mit
1. b (e ) ≤ f (e ) ≤ u (e ) ∀e ∈ E
(Kapazitätsbedingung)
2. ∑(u ,v )∈E f (u , v ) = ∑(v ,w )∈E f (v , w ) ∀v ∈ V
(Flusserhaltung)
Beispiel: Siehe Tafel
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Formale Aufgabenbeschreibung
Problem
Eingabe: Ein Zirkulationsnetzwerk (G, b, u )
Ausgabe: Eine Zirkulation f für (G, b, u )
9
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Formale Aufgabenbeschreibung
Problem
Eingabe: Ein Zirkulationsnetzwerk (G, b, u )
Ausgabe: Eine Zirkulation f für (G, b, u )
Redefinition des Residualnetzwerkes Gf = (V , Ef ) mit
Ef = {(v , w ) ∈ V × V | uf (v , w ) > 0} und
uf (v , w ) = u (v , w ) − f (v , w ) + max{f (w , v ) − b (w , v ), 0}.
|
{z
} |
{z
}
Dabei nimmt man an, dass f (w , v ) und b (w , v ) gleich 0 sind,
wenn (w , v ) ∈
/ E.
Beispiel: Siehe Tafel
9
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Algorithmus
Algorithm 1 Berechnung einer Zirkulation
1: function C IRCULATE(G, b , u)
2:
f (e ) = 0 ∀e ∈ E
. Triviale Initialisierung, unzulässige Zirkulation
3:
while ∃e ∈ E : f (e ) < b (e ) do
4:
Wähle (v , w ) ∈ E mit f (v , w ) < b (v , w )
. Fluss auf Kante zu klein
5:
if ∃ ein Pfad P von w nach v in Gf then
. Redef. von Gf beachten!
6:
C = (P , (v , w )) ist ein Zyklus mit (v , w ) ∈ C
7:
Schicke δ = mine∈C uf (e ) Flusseinheiten durch C
8:
else
9:
return NULL
. Keine Zirkulation möglich
10:
end if
11:
end while
12:
return f
10
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zirkulation
Analyse des Algorithmus
Der Algorithmus terminiert.
Falls der Rückgabewert nicht NULL ist, dann ist f eine zulässige
Zirkulation.
Andernfalls gibt es keine zulässige Zirkulation.
Lemma
Für (G, b, u ) mit G = (V , E ) gibt es eine zulässige Zirkulation gdw. für
jede Menge U ⊆ V gilt:
∑
(v ,w )∈(U ,Ū )∩E
11
Henning Meyerhenke:
Kombinatorische Optimierung
b (v , w ) ≤
∑
u (w , v )
(w ,v )∈(Ū ,U )∩E
Institut für Theoretische Informatik
Paralleles Rechnen
Anwendungsszenario: Verteiltes
Rechnen mit zwei Prozessoren
Ein Rechnersystem hat zwei (mglw. verschiedene) Prozessoren
Wir wollen ein sehr großes Programm darauf ausführen
Das Programm besteht aus mehreren Modulen, die miteinander
interagieren
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Anwendungsszenario: Verteiltes
Rechnen mit zwei Prozessoren
Ein Rechnersystem hat zwei (mglw. verschiedene) Prozessoren
Wir wollen ein sehr großes Programm darauf ausführen
Das Programm besteht aus mehreren Modulen, die miteinander
interagieren
Folgende Kosten sind gegeben:
αj : Berechnungskosten für Modul j auf Prozessor 1
β j : Berechnungskosten für Modul j auf Prozessor 2
γi ,j : Kommunikationskosten zwischen den Modulen i und j, wenn sie
auf verschiedenen Prozessoren laufen (ansonsten 0)
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Anwendungsszenario: Verteiltes
Rechnen mit zwei Prozessoren
Ein Rechnersystem hat zwei (mglw. verschiedene) Prozessoren
Wir wollen ein sehr großes Programm darauf ausführen
Das Programm besteht aus mehreren Modulen, die miteinander
interagieren
Folgende Kosten sind gegeben:
αj : Berechnungskosten für Modul j auf Prozessor 1
β j : Berechnungskosten für Modul j auf Prozessor 2
γi ,j : Kommunikationskosten zwischen den Modulen i und j, wenn sie
auf verschiedenen Prozessoren laufen (ansonsten 0)
Aufgabe: Finden Sie eine Zuweisung der Module auf die Prozessoren
derart, dass die Gesamtkosten minimiert werden!
Beispiel: Siehe Tafel
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Konstruktion
Bei gegebener Menge J von Modulen und Kosten αj , β j and γi ,j :
Konstruiere Flussnetzwerk (G, u , s, t ) wie folgt:
V = {s, t }∪˙ J
E = {(s, j ) | j ∈ J } ∪ {(j , t ) | j ∈ J } ∪ {(i , j ) | i , j ∈ J , γi ,j > 0}


falls i = s
 βj
u (i , j ) = αi
falls j = t


γi ,j falls i 6= s, j 6= t
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Konstruktion
Bei gegebener Menge J von Modulen und Kosten αj , β j and γi ,j :
Konstruiere Flussnetzwerk (G, u , s, t ) wie folgt:
V = {s, t }∪˙ J
E = {(s, j ) | j ∈ J } ∪ {(j , t ) | j ∈ J } ∪ {(i , j ) | i , j ∈ J , γi ,j > 0}


falls i = s
 βj
u (i , j ) = αi
falls j = t


γi ,j falls i 6= s, j 6= t
Lemma
Die Gesamtkosten der Zuweisung der Module an die Prozessoren ist
gleich der Kapazität des minimalen Schnitts (S , T ) von G.
Beweis.
Übung: Vergleiche Kosten einer Zuweisung mit Kapazität eines Schnitts
im Flussnetzwerk.
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Spezialfall: Einheitskapazitäten
Definition
(G, u , s, t ) ist ein Einheitskapazitäten-Netzwerk (UCN),
wenn c (e ) = 1 für alle e ∈ E.
(G, u , s, t ) ist ein schlichtes Einheitskapazitäten-Netzwerk (SUCN),
wenn es
ein UCN ist und zusätzlich
degin (v ) = 1 oder degout (v ) = 1 für alle v ∈ V \ {s, t }.
Theorem (ohne Beweis)
Das Problem des maximales Flusses kann für SUCNs
mit Laufzeit O(n1/2 m ) gelöst werden.
Das Problem des maximales Flusses kann für UCNs
mit Laufzeit O(min{n2/3 m, m3/2 }) gelöst werden.
14
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Aufgabe: Maximale bipartite
Matchings mit Flüssen
Problem
Sei G = (V1 ∪˙ V2 , E ) ein bipartiter Graph.
Berechnen Sie ein größtmögliches Matching in G mit einem
flussbasierten Algorithmus!
Wie müssen Sie das Problem transformieren?
Der Algorithmus soll scheller sein als O(m · n)
(Laufzeit des Algorithmus mit dem alternierenden Baum)!
Bemerkung
Sei G = (V1 ∪˙ V2 , E ) ein gewichteter bipartiter Graph.
Ein Matching mit maximalem Gewicht in G lässt sich mit Laufzeit
O(n(m + n log n)) berechnen.
15
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Herunterladen