7 - TUM - Zentrum Mathematik

Werbung
Technische Universität München
Zentrum Mathematik
Diskrete Optimierung: Grundlagen (MA 2501)
Prof. Dr. R. Hemmecke, Dr. R. Brandenberg, M.Sc.-Math. B. Wilhelm
Übungsblatt 7
Aufgabe 7.1
Die folgende Abbildung zeigt ein Netzwerk N mit seinen Flusskapazitäten.
a
5
4
6
s
10
d
3
b
t
11
2
8
9
4
e
6
c
Auf einigen Netzwerkkanten ist eine nicht-negative Funktion f gegeben durch
(x, y)
f (x, y)
(s, a)
5
(s, b)
6
(s, c)
0
(a, b)
0
(c, e)
1
(d, t)
7
a) Wie ist f auf den übrigen Netzwerkkanten fortzusetzen, sodass f einen Fluss definiert?
Was ist der Wert dieses Flusses?
b) Stellen Sie das zu f gehörende Restnetzwerk Nf auf. Finden Sie einen gerichteten
s, t-Pfad in Nf und erhöhen Sie den Fluss entlang dieses Pfades um den maximal
möglichen Betrag.
c) Hat der so gefundene Fluss maximalen Wert? Begründen Sie Ihre Antwort.
d) Wie bestimmt man ausgehend von einem maximalen Fluss einen minimalen Schnitt in
einem Netzwerk? Welchen minimalen Schnitt erhält man so im gegebenen Beispiel?
Lösung zu Aufgabe 7.1
a) Die gegebenen f -Werte können folgendermaßen ergänzt werden, sodass f einen Fluss
definiert:
(x, y)
f (x, y)
(s, a)
5
(s, b)
6
(s, c)
0
Der Fluss f hat Wert 11.
(a, b)
0
(c, e)
1
(d, t)
7
(a, d)
5
(b, c)
1
(b, d)
2
(b, e)
3
(e, t)
4
b) Das Restnetzwerk zu f sieht folgendermaßen aus:
a
5
s
5
5
4
6
2
1
b
d
2
3
8
8
1
7
t
4
1
e
1
c
5
Es gibt zwei s, t-Pfade in Nf , nämlich (s, c, e, b, d, t) und (s, c, b, d, t). Entlang beider Pfade
kann f maximal um den Wert 1 erhöht werden, aber nicht entlang beider Pfade zugleich.
Der neu enstehende Fluss f 0 hat demnach den Wert 12, unabhängig davon, welchen der
beiden augmentierenden Pfade man wählt.
c) Ja, der so gefundene Fluss f 0 hat maximalen Wert. Zwei mögliche Begründungen:
• Im Restnetzwerk Nf 0 zu f 0 gibt es keinen gerichteten s, t-Pfad mehr. Daraus folgt
(s. VL), dass f 0 maximalen Wert haben muss.
• f 0 hat den Wert 12. Der Schnitt X = {s, b, c, e} hat Kapazität 12 in N . Aus dem
Max-Flow Min-Cut Theorem, folgt, dass X ein minimaler Schnitt und f 0 ein Fluss
mit maximalem Wert sein muss.
d) Zu einem gegebenen Fluss f 0 mit maximalem Wert erstellt man das Restnetzwerk Nf 0 .
Definiert man X als die Menge aller Knoten, die in Nf 0 noch durch einen gerichteten Pfad
von s aus erreichbar sind, so ist X ein minimaler Schnitt.
Auf diese Weise erhält man im gegebenen Beispiel den bereits oben genannten Schnitt
X = {s, b, c, e}.
Aufgabe 7.2
Wir modellieren ein Schifffahrtsnetz als gerichteten Graphen G = (V, A), indem wir jedem
Hafen einen Knoten zuordnen und jeden möglichen Seeweg zwischen zwei Häfen (ohne
Zwischenstopp an einem anderen Hafen) als gerichtete Kante auffassen.
Nun hat Hafen i einen Bedarf an bi ∈ Z Tonnen Bananen. Negativer Bedarf heißt dabei,
dass der Hafen diese Menge an Bananen vorrätig hat, aber loswerden will. Gesamtangebot
und -nachfrage sollen dabei genau gleich sein. Ferner ist zu beachen, dass über jede Kante
e maximal c(e) ∈ N0 Tonnen Bananen verschifft werden können.
Gesucht ist eine zulässige Verschiffung der vorhandenen Bananen, sodass nach der Verschiffung alle Häfen die geforderte Menge an Bananen vorrätig haben bzw. losgeworden
sind. Erläutern Sie, wie sich die Frage, ob eine solche Verschiffung existiert, mithilfe eines
geeigneten Flussproblems lösen lässt.
Lösung zu Aufgabe 7.2
Partitioniere die Knoten in Angebotsknoten und Nachfrageknoten, d.h., o.E. seien v1 , . . . , vk
Knoten/Häfen mit negativem Bedarf (Angebot) und vk+1 , . . . , vn seien Knoten/Häfen mit
nichtnegativem Bedarf (Nachfrage). Baue ein Netzwerk gemäß der folgenden Skizze auf
(dabei sind die Kanten im grau unterlegten Bereich genau die Kanten aus dem Graphen
mit entsprechender Bananenkapazität):
−b1
s
−bi
−bk
v1
vk+1
..
.
..
.
vi
c({vi , vj })
vj
..
.
..
.
vk
vn
bk+1
t
bj
bn
P
P
Nach Voraussetzung gilt ki=1 (−bi ) = ni=k+1 bi =: b. Ein Fluss in diesem Netzwerk kann
maximal Wert b haben. Es gilt: Es gibt genau dann einen Fluss mit Wert b, wenn es eine
geforderte Verschiffung gibt. Denn ein solcher Fluss kann in eine zulässige Verschiffung
übersetzt werden und umgekehrt:
Ist ein Fluss mit Wert b gegeben, so schicke von Hafen vi zu Hafen vj genau so viele
Bananen wie der Flusswert auf Kante (vi , vj ). Da alle Kanten von s aus und in t hinein voll
durchflossen werden, sichert die Flusserhaltung, dass durch die so definierte Verschiffung
alle Häfen ihr Angebot/ihre Nachfrage loswerden/bekommen.
Umgekehrt definiere aus einer zulässigen Verschiffung einen Fluss mit Wert b, indem der
Fluss auf der Kante (vi , vj ) durch die Menge der Bananen definiert wird, die von Hafen
vi zu Hafen vj geschickt werden. Auf den Kanten von s aus und in t hinein werden die
Kapazitäten voll ausgeschöpft. Dies ist ein wohldefinierter Fluss, da durch die Zulässigkeit
der Verschiffung die Flusserhaltung an den Knoten gewährleistet wird.
Aufgabe 7.3
Konstruieren Sie ein Netzwerk (V, A, s, t, c) (mit wenigen Knoten), das für jedes (beliebig
große) M ∈ N die folgenden Eigenschaften erfüllt:
(i) Für alle e ∈ A gilt c(e) ≤ M ,
(ii) der maximale Fluss hat Wert M ,
(iii) beim Ford-Fulkerson-Algorithmus (Methode der erweiternden Wege) kann in jedem
Schritt ein augmentierender Pfad so ungünstig gewählt werden, dass sich der Wert
des Flusses immer nur um 1 erhöht.
Bemerkung. So ein Beispiel zeigt, dass man im schlechtesten Fall M -mal einen erweiterten
Weg bestimmen muss. Man sagt in diesem Fall, dass die Laufzeit exponentiell in der
(binären) Größe des Input ist, wobei die binäre Größe einer ganzen Zahl M definiert ist
durch hM i := dlog(|M | + 1)e + 1.
Lösung zu Aufgabe 7.3
Das folgende Netzwerk erfüllt die Bedingungen (i)-(iii), da der Algorithmus im ungünstigsten Fall abwechselnd die s,t-Pfade (s, a, b, t) und (s, b, a, t) im Restnetzwerk auswählt.
b
b M2 c
s
d M2 e
t
1
d M2 e
a
b M2 c
Es ist zudem nicht vom Wert von M abhängig, d. h., für wachsende Werte für M müssen
keine zusätzlichen Kanten oder Knoten ins Netzwerk eingefügt werden.
Aufgabe 7.4
Beim sogenannten Min-Cost-Flow Problem ist ein Netzwerk (V, A, s, t, c), eine Kostenfunktion b : A → N und κ ∈ N P
gegeben. Gesucht ist ein s, t-Fluss f ∗ mit val (f ∗ ) = κ
und minimalen Kosten cost(f ∗ ) = e∈A b(e) · f ∗ (e).
Konstruieren Sie mithilfe der aus der Vorlesung bekannten Algorithmen ein Verfahren zur
Lösung des Min-Cost-Flow Problems. Gehen Sie dabei wie folgt vor:
a) Bestimmen Sie zunächst einen beliebigen Fluss f der Stärke κ und
b) überlegen Sie dann, wie dieser mithilfe des Restnetzwerks in einen optimalen überführt
werden kann.
Lösung zu Aufgabe 7.4
a)
• Variante 1 :
Modifiziere z.B. den Ford-Fulkerson-Algorithmus so, dass er in jedem Schritt den
bestehenden Fluss f entlang eines s,t-Pfades P in Nf um min{cf (P ), κ − val(f )}
erhöht und abbricht, wenn f den Wert κ hat. Auf diese Weise terminiert der Algorithmus mit einem Fluss mit dem gewünschten Wert oder mit einem maximalen
Fluss mit Wert < κ, wenn es keinen Fluss mit Wert κ in N gibt.
• Variante 2 :
Ergänze das Netzwerk N um eine Quelle s0 , die nur eine Kante mit Kapazität κ
zur ursprünglichen Quelle s in N hat. Berechne nun einen maximalen s0 ,t-Fluss,
wobei s als gewöhnlicher Knoten behandelt wird, an dem die Flusserhaltung gilt.
Auf diese Weise erhält man einen Fluss mit Wert κ oder einen maximalen Fluss
mit Wert < κ, wenn es keinen Fluss mit Wert κ in N gibt.
b) Behauptung: Fluss f mit Wert κ ist kostenminimal
in N ⇐⇒ Nf enthält keinen bzgl.
(
b((u, v))
cf ((u, v)) ≤ c((u, v))
l negativen Zyklus, wobei l((u, v)) :=
−b((v, u)) cf ((u, v)) > c((u, v))
Beweis:
“⇒”: Angenommen, f ist Fluss mit Wert κ und es gibt einen (bzgl. l) negativen Kreis
C in Nf . Dann können durch Flusserhöhung entlang C die Kosten des Flusses gesenkt
werden, ohne den Wert des Flusses zu ändern. Es folgt, dass f nicht kostenminimal
gewesen sein kann.
“⇐”: Angenommen, ein Fluss f mit Wert κ ist nicht kostenminimal. Dann existiert in
0
N mindestens ein s,t-Weg P 0 , dessen
P Kapazität c(P ) von f nicht ganz ausgeschöpft
wird und der geringere Kosten ( e∈P 0 b(e)) hat als einer der von f verwendeten s,tWege P . Im Restnetzwerk Nf bilden Kanten von P 0 und Kanten, die durch den Fluss
auf P entstanden sind (oder deren Restkapazität durch f erhöht wurde), gerichtete
Zyklen. Mindestens einer dieser Zyklen muss eine bzgl. l negative Länge haben. Nf
enthält also negative Zyklen bzgl. l.
Negative Zyklen in Nf können mit Hilfe des Floyd-Warshall-Algorithmus gefunden
werden, s. Aufgabe 3.3. Iteriere also: finde negativen Zyklus C in Nf und augmentiere
f entlang C um den maximalen Wert, wobei auf den Kanten mit negativen Kosten
lediglich die Kapazität ausgeschöpft werden darf, die durch f entstanden war.
Herunterladen