1 Einleitung Algorithmik

Werbung
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
1 Einleitung
Motivation
Algorithmik
◮
Eine wesentliche Aufgabe der Informatik ist die Analyse von
Problemen mit der Zielsetzung eine effiziente algorithmische
Lösung für diese Probleme zu entwickeln.
◮
Die erreichbare Effizienz einer algorithmischen Lösung hängt
oft vom Typ des Problems ab. Für manche Probleme können
wir nicht erwarten eine effiziente Lösung zu finden.
◮
Manche Probleme erlauben es uns auf einige
Entwurfsmethoden für Algorithmen zurückzugreifen.
Andreas Jakoby
[email protected]
Sprechstunde: Dienstags 10:00-12:00
WS 06/07
1
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
2
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Entwurfsmethoden für Algorithmen
◮
In der Informatik wurden eine Reihe von Entwurfsmethoden
für Algorithmen entwickelt. Auf einige dieser Methoden
werden wir in dieser Vorlesung eingehen.
◮
◮
◮
◮
◮
◮
Ziele der Vorlesung:
Divide and Conquer
Dynamisches Programmieren
Greedy-Algorithmen
Backtracking
Lineares Programmieren
Transformationen
3
◮
zentrale Entwurfsmethoden für Algorithmen
◮
Analysemethoden für Algorithmen und für algorithmische
Problemstellungen
◮
wichtige Optimierungsalgorithmen
4
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Scheinvergabe:
◮
◮
Um einen Schein für diese Vorlesung zu erhalten, ist die
erfolgreiche Teilnahme an der abschließenden Prüfung
erforderlich.
2 Greedy-Algorithmen (gierige Algorithmen)
Um zur Prüfung zugelassen zu werden, ist eine erfolgreiche
Teilnahme an den Übungen erforderlich. Die Kriterien für eine
erfolgreiche Übungsteilnahme sind:
1. alle bis auf maximal zwei Übungsblätter wurden
erfolgreich bearbeitet — ein Übungsblatt gilt als
erfolgreich bearbeitet, wenn auf diesem Blatt mindestens
50% der Punkte erreicht wurden und diese Lösungen auch
von dem Studierenden vorgetragen werden können —
2. und die Programmieraufgabe wurde erfolgreich
bearbeitet.
◮
Greedy-Algorithmen werden oft für die exakte oder
approximative Lösung von Optimierungsproblemen verwendet.
◮
Typischerweise konstruiert ein Greedy-Algorithmus eine
Lösung Komponente für Komponente, wobei der Wert einer
einmal gesetzten Komponente nie zurückgenommen wird.
◮
Beispiele: die Algorithmus von Kruskal, die Konstruktion eines
Huffman-Codes und der Approximationsalgorithmus für das
Binpacking Problem Best-Fit.
5
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Philosophie von Greedy-Verfahren
◮ Iterative Konstruktion einer Lösung unter Verwendung lokaler
Optimalitätskriterien.
◮ Hoffnung: Lokale Optimalität führt auch zur globalen
Optimalität — oder zumindest zu einer guten Approximation.
◮ Verschiedene lokale Kriterien führen zu verschiedenen
Algorithmen.
Analysemethoden für Greedy-Verfahren
6
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
2.1 Minimale Spannbäume
◮
◮
◮
Um zu zeigen, dass ein Greedy-Verfahren eine optimale Lösung
findet, werden im wesentlichen zwei Analysemethoden eingesetzt:
1. the greedy algorithm stays ahead: In jedem Schritt ist die
gefundene partielle Lösung des Greedy-Verfahrens mindestens
so gut wie jede andere partielle Lösung.
2. exchange argument: Jede Lösung kann Schrittweise in die
Lösung des Greedy-Verfahrens transformiert werden, ohne
dass hierbei die Güte der Lösung abnimmt.
◮
◮
◮
7
Gegeben ist ein ungerichteter, zusammenhängender,
gewichteter Graph G = (V , E ) mit einer positiven
Kostenfunktion f : E → R+ .
Wir nehmen an, dass für alle Kanten e ∈ E f (e) > 0 ist.
Wir nennen T = (V ′ , E ′ ) einen Spannbaum von G , wenn
V = V ′ und T ein Baum ist.
Gesucht ist ein Baum T = (V , E ′ ) mit E ′ ⊆ E , so dass,
P
e∈E ′ f (e) minimal unter allen Spannbäumen von G ist.
Ist f (e) konstant 1, so können wir dieses Problem wieder mit
Hilfe der Breiten- oder Tiefensuche lösen.
Wir werden im Folgenden das Verfahren von Kruskal
vorstellen.
8
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Was ist eine Priorityqueue?
Zur effizienten Implementation benutzen wir die
Datenstruktur der Priorityqueue und der Partition. Die
letztere Datenstruktur ist auch unter dem Namen
UNION/FIND-Datenstruktur bekannt.
◮
Wir betrachten eine Teilmenge M eines Universums U, wobei
jedem Element m ∈ M eine Priorität p(m) (oder kurz p)
zugeordnet wird.
◮
◮
Wir starten mit |V | einelementigen Mengen, von denen jede
einen anderen Knoten des Graphen enthält.
insert(m, p): fügt m ∈ U mit Priorität p in M ein.
◮
deletemin: gibt das Element aus M mit minimaler Priorität
zurück und entfernt dieses aus M.
◮
Diese Mengen werden als Bäume mit jeweils einem Knoten
interpretiert.
◮
readmin: gibt das Element aus M mit minimaler Priorität
zurück ohne es zu entfernen.
◮
Sukzessive verschmelzen wir diese Mengen durch Hinzunahme
einer Kante mit minimalen Kosten: Finde die minimale Kante,
die zwei Knoten aus unterschiedlichen Mengen verbindet und
vereinige die beiden Mengen.
◮
decpriority(m, d): die Priorität von m in M wird um d
reduziert.
◮
Eine Priorityqueue kann mit Hilfe eines Heaps (Heapsort) so
implementiert werden, dass die Laufzeiten der Initialisierung in
O(|M|), von readmin in O(1) und der drei verbleibenden
Operationen in O(log |M|) liegen.
9
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
10
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Was ist eine UNION/FIND-Datenstruktur bzw. eine
Partition?
◮
◮
Partitionen stellen eine eingeschränkte Form von Mengen dar.
Der abstrakten Datentyp ist wie folgt definiert:
◮
◮
◮
◮
Die UNION/FIND-Datenstruktur kann recht einfach so
implementiert werden, dass
U = {1, . . . , n} sei ein Universum.
P = {P1 , . . . , Pk } sei eine Menge
Sn von disjunkten, nicht leeren
Teilmengen von U mit U = i=1 Pi . Wir nennen diese
Teilmengen Partitionsblöcke oder kurz Blöcke.
Jedem Partitionsblock Pi wird ein Element ni ∈ Pi als
Repräsentant (bzw. als Name) zugeordnet.
Auf P sind die folgenden zwei Prozeduren definiert: Sei x ∈ U
und ni , nj Repräsentanten zweier Partitionsblöcke Pi und Pj .
◮
◮
◮
die Initialisierung in Zeit O(|U|),
◮
jede union-Operation in konstanter Zeit und
◮
jede find-Operation in Zeit O(log2 |U|)
ausgeführt werden kann. Einige aufwendigere Implementierungen
erlauben es die Laufzeit der find-Operation erheblich zu reduzieren.
find(x) liefert den Repräsentanten ni der Menge Pi mit x ∈ Pi .
union(ni , nj ) vereinigt die Blöcke mit den Repräsentanten ni
und nj . Diese Operation verändert die Menge P, d.h.
P = (P \ {Pi , Pj }) ∪ {Pi ∪ Pj }. Der Repräsentant der neuen
Menge ist entweder ni oder nj .
11
12
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Beispiel
Algorithmus MST-Kruskal()
Eingabe: global gegebener Graph G
Ergebnis: minimaler Spannbaum T = (V , E ′ )
1: Bilde die Priorityqueue Q aller e ∈ E mit Prioritäten f (e).
2: Initialisiere die Partitionen {v } für alle v ∈ V .
3: E ′ := ∅, k = |V |
4: while k > 1 do
5:
{v , w } := deletemin(Q); v0 := find(v ); w0 := find(w );
6:
if v0 6= w0 then
7:
union(v0 , w0 ); E ′ := E ′ ∪ {{v , w }}; k := k − 1;
8:
end if
9: end while
10: Return(T = (V , E ′ ))
3
1
5
6
2
4
5
6
2
16
13
4
1
7
9
3
0. Initialisierung
1
1. deletemin= {3, 6}
find(3) 6= find(6)
1
5
2. deletemin= {1, 2}
find(1) 6= find(2)
1
5
5
2
4
3
6
6
6
2
2
1
4
2
3
1
4
3
13
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
3. deletemin= {5, 1}
find(5) 6= find(1)
3
1
4. deletemin= {5, 6}
find(5) 6= find(6)
3
1
5
2
4
2
4
4
2
6. deletemin= {1, 6}
find(1) = find(6)
3
5
2
5
2
4
8. deletemin= {3, 4}
find(3) 6= find(4)
3
1
6
1
4
4
2
4
6
1
4
2
4
1
9
3
3
T = (V , ET ) ein minimaler Spannbaum für G ,
◮
W = (V , EW ) ein Wald der in T enthalten ist, d.h. EW ⊆ ET
und
◮
S ⊆ V eine Knotenmenge, so dass keine Kante aus EW
zwischen den Mengen S und V \ S verläuft.
Wir nennen eine Kante aus E kreuzend, wenn sie einen Knoten
aus S mit einem Knoten aus V \ S verbindet. Ist e ∈ E eine
kreuzende Kante, die minimale Kosten unter allen kreuzenden
Kanten besitzt, dann ist auch W ′ := (V , EW ∪ {e}) in einem
minimalen Spannbaum enthalten.
5
2
6
1
◮
3
7. deletemin= {2, 3}
find(2) = find(3)
3
1
G = (V , E ) ein ungerichteter Graph,
4
1
3
3
◮
6
1
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Lemma 1 Sei
5
2
4
6
1
2
1
Andreas Jakoby
Universität zu Lübeck
Korrektheit
3
5
2
6
2
5. deletemin= {2, 6}
find(2) = find(6)
14
3
15
16
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Beweis von Lemma 1:
Angenommen, T enthält W aber nicht W ′ .
V \S
S
◮
◮
T ist ein Spannbaum, somit gibt es
von jedem Knoten in V einen Weg zu
jedem anderen Knoten in V .
◮
Addieren wir e zu T , so schließen wir
einen Kreis C .
e
◮
Beweis von Lemma 1 (Teil 2)
P
P
◮ Ist f (e) < f (e ′ ), so gilt
w ∈ET′ f (w ) <
w ∈ET f (w ) für
′
′
ET = (ET ∪ {e}) \ {e }. Dieses widerspricht der Annahme,
dass T ein minimaler Spannbaum ist. Wir können somit
ausschließen, dass f (e) < f (e ′ ) ist.
Dann gilt e 6∈ ET .
◮
C besitzt neben e noch eine
kreuzende Kante e ′ .
Sei T ′ := (V , (ET ∪ {e}) \ {e ′ }).
T ′ ist ein Spannbaum von G , da T ′ wieder zyklenfrei ist und
|V | − 1 Kanten hat.
Da f (e) minimal unter allen kreuzenden Kanten ist, gilt
f (e) ≤ f (e ′ ).
◮
◮
◮
Ist f (e) = f (e ′ ), so haben T und T ′ die gleichen Kosten. Da
T ein minimaler Spannbaum ist, muss auch T ′ ein minimaler
Spannbaum sein. Wir haben somit gezeigt, dass W ′ in einem
minimalen Spannbaum enthalten ist.
17
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
18
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Korrektheit vom Kruskals Algorithmus
◮
Laufzeit von Kruskals Algorithmus
Der MST-Algorithmus nimmt immer eine minimale kreuzende
Kante in den bereits konstruierten Wald W auf.
◮
◮
Sei e = {u, v } = deletemin(Q).
Über die Abfrage find(u) = find(v ) wird überprüft, ob u und v
bereits in einer Komponente von W liegen. Beachte: Mit jeder
eingefügten Kante {u ′ , v ′ } vereinigen wir die entsprechenden
Mengen find(u ′ ) und find(v ′ ). Somit repräsentiert jede Menge
der Partition einen Baum des konstruierten Walds.
◮
◮
◮
◮
◮
◮
Ist find(u) = find(v ), so verwerfen wir die Kante.
Ist find(u) 6= find(v ), so stellt S die Knotenmenge des
Teilbaums dar, in dem u liegt. Somit ist e eine minimale
kreuzende Kante.
Aus Lemma 1 können wir nun schließen, dass
W ′ = (V , EW ∪ {e}) in einem minimalen Spannbaum
enthalten ist, wenn auch W = (V , EW ) in einem minimalen
Spannbaum enthalten ist.
19
Die Initialisierung der Priorityqueue gelingt in Zeit O(|E |).
Die Initialisierung der Partitionen gelingt in Zeit O(|V |).
Die While-Schleife muss im Worst-Case |E | mal durchlaufen
werden. Bei jedem Durchlauf werden einmal die Operationen
deletemin und zweimal die Operation find aufgerufen. Nach
unseren Annahmen über die Priorityqueue und der
UNION/FIND-Datenstruktur können wir diese Operationen in
Zeit O(|E | · log |E |) ausführen.
◮
In |V | − 1 Durchläufen der While-Schleife wird jeweils einmal
eine union-Operation aufgerufen.
◮
Zusammen erhalten wir eine Laufzeit von O(|E | · log |E |).
20
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
2.2 Intervall-Scheduling
Definition 1 [Intervall-Scheduling Problem] Gegeben sei
◮
Satz 1 Sei G = (V , E ) ein zusammenhängender, ungerichteter,
gewichteter Graph. Dann berechnet Kruskals Algorithmus einen
minimalen Spannbaum für G in Zeit
◮
eine Menge R = {1, . . . , n} von n Jobs und
zwei Funktionen s, f : R → N.
Hierbei gilt für alle Jobs i
s(i) ≤ f (i)
O(|E | · log |E |) .
Bemerkung 1 Betrachten wir die Aussage von Lemma 1 und den
Korrektheitsbeweis von Kruskals Algorithmus, so erkennen wir,
dass wir hierbei ein exchange argument angewendet haben.
◮
s(i) nennen wir die Startzeit von Job i und
◮
f (i) nennen wir die Endzeit von Job i.
Job i steht im Konflikt mit Job j, wenn
◮
◮
i 6= j und
die Intervalle [s(i), f (i)[ und [s(j), f (j)[ sich überlappen.
Mit [s(i), f (i)[ bezeichnen wir das nach rechts offene reelle
Intervall.
21
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
22
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Wir starten mit einem Grundgerüst für einen Greedy-Algorithmus
für das Intervall-Scheduling Problem:
Algorithmus Greedy-Intervall-Schedule(R)
Eingabe: Menge R
Ergebnis: optimale Schedule S
1: S := ∅
2: while R 6= ∅ do
3:
wähle ein eine Job i ∈ R
4:
S := S ∪ {i};
5:
entferne alle Jobs aus R, die zu i im Konflikt stehen
6:
R := R \ {i}
7: end while
8: Return(S)
Unsere Aufgabe besteht jetzt darin, den Auswahlmechanismus in
Zeile 3 näher zu beschreiben.
Definition 1 (Teil 2)
◮
Eine Teilmenge S ⊆ R ist eine zulässige Schedule, wenn S
konfliktfrei ist, d.h. für alle i, j ∈ S steht i nicht im Konflikt
zu j.
◮
Eine Teilmenge S ⊆ R ist eine optimale Schedule, wenn S
eine zulässige Schedule maximaler Kardinalität ist, d.h. |S| ist
maximal.
Aufgabe: Bestimme eine optimale Schedule!
23
24
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Einfache Auswahlmechanismen:
Wir starten mit einer einfachen Beobachtung:
Beobachtung 1 Für alle Auswahlmechanismen ist das Ergebnis S
eine zulässige Schedule.
1. wähle i mit s(i) = minj∈R s(j)
Diese Beobachtung folgt unmittelbar daraus, dass wir in Zeile 5
alle Jobs löschen, die zu einem einmal in die Schedule
aufgenommenen Job im Konflikt stehen.
3. wähle das i, welches mit den wenigsten Jobs in R im Konflikt
steht
2. wähle i mit f (i) − s(i) = minj∈R f (j) − s(j)
4. wähle i mit f (i) = minj∈R f (j)
25
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Andreas Jakoby
Universität zu Lübeck
◮
Anhand der nachfolgenden Graphik können wir leicht
erkennen, dass die ersten drei Auswahlmechanismen auf Folie
26 keine optimale Schedule liefern.
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
1. Vorlesung, 16.10.2006
Benutzen wir den vierten Auswahlmechanismus, so können wir
unseren Greedy-Algorithmus wie folgt implementieren:
Algorithmus Earliest-Finishingtime-First(R)
Eingabe: Menge R
Ergebnis: optimale Schedule S
1: sortiere R nach aufsteigend Werten von f (i) und
2:
sei j1 , . . . , jn die sortierte Folge
3: S := {j1 }; j := j1
4: for i := 2 to n by +1 do
5:
if f (j) ≤ s(ji ) then S := S ∪ {ji }; j := ji end if
6: end for
7: Return(S)
Die Laufzeit im Rumpf der For-Schleife ist konstant. Somit wird
die Laufzeit dieses Algorithmus durch das Sortieren in Zeile 1
dominiert und liegt in O(n · log2 n).
1.
2.
3.
◮
26
Behauptung Benutzen wir jedoch den vierten Mechanismus
in Zeile 3 von Algorithmus Greedy-Intervall-Schedule, so
erhalten wir eine optimale Schedule. Dieses muss aber noch
bewiesen werden!
27
28
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Vergleichen wir nun S mit einer beliebigen optimalen Schedule O:
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Sei O = {j1 , . . . , jm } und S = {i1 , . . . , ik }.
◮
Wir wollen zeigen, dass m = k ist.
Wir wollen nun die zentrale Beobachtung für unsere
Greedy-Verfahren bei Benutzung der vierten Auswahlmethode
beweisen:
◮
O.B.d.A. gehen wir davon aus, dass die Intervalle in der Jobs
in O und S von rechts nach links sortiert sind, d.h.
Lemma 2 Für alle r ≤ k gilt
◮
∀ℓ < m : f (jℓ ) ≤ s(jℓ+1 )
◮
◮
f (ir ) ≤ f (jr ) .
und ∀ℓ < k : f (iℓ ) ≤ s(iℓ+1 )
Beweis von Lemma 2: Wir zeigen Lemma 2 mit Hilfe einer
Induktion über r .
Um diese Reihenfolge zu erhalten können wir einfach die
Elemente in O bzw. in S nach den Startzeiten der Jobs
sortieren.
◮
Die Reihenfolge der Jobs ändert sich nicht, wenn wir die Jobs
nach deren Endzeiten sortieren.
Für r = 1 folgt Lemma 2 aus der Beobachtung, dass der
Algorithmus mit dem i1 startet, welches den minimalen Wert
f (i1 ) besitzt.
30
29
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Auf Lemma 2 können wir folgenden Satz schließen:
Satz 2 Earliest-Finishingtime-First berechnet eine optimale
Schedule in Zeit O(n · log2 n).
Beweis von Lemma 2 (Teil 2):
◮ Für r > 1 schließen wir wie folgt:
◮
◮
◮
◮
◮
Annahme, die Behauptung ist für alle ℓ < r korrekt.
Somit gilt f (ir −1 ) ≤ f (jr −1 ).
Da O eine zulässige Schedule ist gilt f (jr −1 ) ≤ s(jr ).
Somit ist {i1 , . . . , ir −1 , jr } eine zulässige Schedule.
Da unser Algorithmus das ir mit minimalem f (ir ) wählt, gilt
insbesondere f (ir ) ≤ f (jr ).
Somit gilt Lemma 2.
Beweis von Satz 2:
◮
◮
Ist k = m, so ist S optimal.
Ist k < m, so folgt aus Lemma 2:
◮
◮
◮
◮
31
{i1 , . . . , ik , jk+1 } ist eine zulässige Schedule.
R ist nach dem Durchlaufen der Schedule nicht leer.
S ist nicht das Ergebnis von Greedy-Intervall-Schedule bzw.
von Earliest-Finishingtime-First auf Eingabe von R —
Widerspruch.
Folglich ist k nicht kleiner m.
32
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Beispiel für die Online-Version: Ski-Leih Problem
Definition 2 [Ski-Leih Problem] Sie fahren zum ersten mal in
Skiurlaub und betrachten die Frage, ob und nach wie vielen
Saisons es sich rentiert Skier zu kaufen. Hierbei müssen Sie die
folgenden Punkte betrachten:
Erweiterungen des Intervall-Scheduling Problems:
◮
◮
Online-Variante: Die Menge der Jobs liegt zu Beginn der
Berechnung der Schedule noch nicht vor, sondern wird erst im
Verlauf der Berechnung Job für Job bekannt gegeben. Die
Anfangsstücke der Schedule müssen jedoch so schnell wie
möglich erstellt werden.
Gewichtetes Intervall-Scheduling Problems: Jeder Job
besitzt neben seinem Anfangs- und Endzeitpunkt noch ein
Gewicht. Gesucht ist jetzt eine zulässige Schedule, die die
Summe der Gewichte maximiert.
◮
Ein Skiausrüstung kosten K Euro.
◮
Das Leihen der Skiausrüstung kostet pro Saison L Euro.
◮
Sollten Sie die Lust am Skifahren verlieren (z.B. durch einen
Unfall), so verlieren Sie die Lust am Skilauf dauerhaft. Sollten
Sie sich bis dahin eigene Skier gekauft haben, so verliert die
Ausrüstung in dieser Saison ihren Wert.
Bei der Online-Version des Ski-Leih Problem müssen Sie zu Beginn
jeder Saison entscheiden, ob Sie sich eine Skiausrüstung kaufen
oder leihen. Ihr Ziel ist es die anfallenden Kosten zu minimieren.
33
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
34
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Satz 3 Der nachfolgende Online-Algorithmus approximiert die
minimalen Kosten für das Ski-Leih Problem mit einem Faktor 2 für
L|K :
2.3 Intervall-Partitionierungs Problem
Algorithmus Online-Ski-Leih()
Online Eingabe der Ereignisse e1 , e2 , . . .
Online Ausgabe der Aktionen a1 , a2 , . . .
1: a1 := leihen; t := 1
2: while true do
3:
Return(at )
4:
t := t + 1
5:
if at−1 = keine Lust mehr oder et−1 = Lust verloren then
6:
at := keine Lust mehr
7:
else
8:
if t ≤ K /t then at := leihen else at := kaufen end if
9:
end if
10: end while
Definition 3 [Intervall-Partitionierungs Problem] Gegeben sei
◮ eine Menge R = {1, . . . , n} von n Jobs und
◮ zwei Funktionen s, f : R → N.
Eine Partitionierung I = {I1 , . . . , Id } nennen wir zulässig, wenn
jede Menge Ii eine zulässige Schedule von Jobs aus R ist.
Ein mit dem Intervall-Scheduling Problem nahe verwandtes
Problem ist das Intervall-Partitionierungs Problem:
Aufgabe: Gesucht ist eine zulässige Partitionierung minimaler
Kardinalität!
Eine Teilmenge C ⊆ R nennen wir Konfliktmenge, wenn jeder
Job aus C mit jedem anderen Job aus C einen Konflikt hat, d.h.
∃t ∈ N ∀i ∈ C : s(i) ≤ t < f (i) .
Die Überlappung ovl(R) einer Jobmenge R = {1, . . . , n} ist die
maximale Kardinalität einer Konfliktmenge.
35
36
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Lemma 3 Für jede Eingabe R, s, f hat jede zulässige
Partitionierung eine Kardinalität mindestens ovl(R).
Beispiel: Gegeben ist eine Menge von Vorlesungsmodulen
R = {1, . . . , n} mit entsprechenden Start- und Endzeitpunkten.
Finde eine Aufteilung der Vorlesungen auf die Hörsäle, so dass nur
eine minimale Anzahl an Hörsäle benötigt wird.
Beweis von Lemma 3: Das Lemma folgt unmittelbar aus der
Beobachtung, dass alle Jobs aus einer Konfliktmenge in
unterschiedlichen Teilmengen der Partition liegen müssen.
Wir wollen nun einen Algorithmus vorstellen und analysieren, der
eine zulässige Partitionierung der Kardinalität ovl(R) findet.
37
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Algorithmus Starttime-Ordering(R)
Eingabe: Menge R der Jobs
Ergebnis: zulässige Partitionierung der Kardinalität ovl(R)
1: sei Q eine leere Priorityqueue Q für Jobs i mit Prioritäten f (i).
2: sei r1 , . . . , rn die nach den Startzeiten sortierte Folge der Jobs
3: sei ℓ := 1, m(r1 ) := 1 und füge r1 in Q und in I1 ein
4: for i = 2 to n by +1 do
5:
sei rj das erste Element in Q
6:
if f (rj ) > s(ri ) then
7:
sei ℓ := ℓ + 1, m(ri ) := ℓ und füge ri in Q und in Iℓ ein
8:
else
9:
entferne rj aus Q
10:
sei m(ri ) := m(rj ) und füge ri in Q und in Im(rj ) ein
11:
end if
12: end for
13: Return(I1 , . . . , Iℓ )
38
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Warum ist Starttime-Ordering ein Greedy-Algorithmus?
◮
Wir müssen das lokale Entscheidungkriterium finden, welches
wir in jedem Schritt des Verfahrens benutzen:
◮
◮
39
In jedem Durchlauf der For-Schleife betrachten wir den noch
nicht betrachteten Job ri mit der minimalen Startzeit.
Wir fügen diesen Job in eine (beliebige) Teilmenge ein, deren
Jobs nicht zum aktuell betrachtete Job im Konflikt stehen.
◮
Alle diese Kriterien stellen lokale Entscheidungkriterien dar.
◮
Starttime-Ordering ist somit ein Greedy-Algorithmus.
40
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Wir wollen nun den Algorithmus Starttime-Ordering analysieren:
Lemma 4 Für die Ausgabe I1 , . . . , Iℓ von Starttime-Ordering gilt
ℓ = ovl(R).
Beweis von Lemma 4: Für die Priorityqueue Q gilt:
Beobachtung 2 Die Ausgabe I1 , . . . , Iℓ von Starttime-Ordering ist
eine zulässige Partition.
Beweis von Beobachtung 2: Wir betrachten zunächst die
Priorityqueue Q:
◮
Bei jedem Durchlauf der For-Schleife ist in Q für jede
nicht-leere Teilmenge Ij das zu letzt in Ij eingefügte Element
gespeichert.
◮
ri wird nur in eine Teilmenge Im(rj ) eingefügt wird, wenn
s(ri ) ≥ f (rj ) ist.
◮
Per Induktion über i folgt nun, dass ein Job ri nie in eine
Teilmenge eingefügt wird, welche einen Job rk enthält,
welches zu ri im Konflikt steht.
◮
In jedem Schleifendurchlauf gilt, dass die Endzeit des ersten
Elements in Q minimal unter allen Elementen in Q ist.
◮
In dem Schleifendurchlauf für einen Job ri wir nur dann eine
neue Teilmenge Ik generiert, wenn ri im Konflikt mit dem
ersten Element in Q und somit zu allen Elementen in Q steht.
Wird in einem Schleifendurchlauf für einen Job ri eine neue
Teilmenge Ik generiert, so gilt für alle Jobs rk in Q
◮
◮
◮
aufgrund der Sortierung in Zeile 2: s(rk ) ≤ s(ri ) und
aufgrund der Eigenschaften der Priorityqueue: f (rk ) > s(ri ).
42
41
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Beobachtung 3 Die Laufzeit von Starttime-Ordering ist in
O(n · log n).
Beweis von Beobachtung 3:
◮ Um die n Jobs zu sortieren benötigen wir O(n log n) Schritte.
◮ Für jeden Job ri mit i ≥ 2 müssen wir einmal den Rumpf der
For-Schleife durchlaufen. Um den Rumpf einmal zu
durchlaufen müssen wir
Beweis von Lemma 4 (Teil 2):
◮
Werden also mehr als ovl(R) viele Teilmengen Ik generiert, so
gibt es ein ri , so dass es in R zumindest ovl(R) + 1 viele Jobs
h1 , . . . , hovl(R)+1 mit
◮
s(hj ) ≤ s(ri ) < f (hj ) .
◮
◮
◮
Diese Jobs bilden somit eine Konfliktmenge der Kardinalität
ovl(R) + 1.
◮
Dieses ist ein Widerspruch zur Definition von ovl(R).
◮
einmal auf das erste Element von Q zugreifen (O(1)),
ein Element in Q einfügen (O(log ℓ)) und
unter Umständen das erste Element aus Q entfernen
(O(log n)).
Diese Laufzeiten folgen aus unserer Annahme von Folie 10.
Da die Anzahl der Teilmengen durch die Anzahl der Elemente
beschränkt ist, erhalten wir eine Laufzeit von
O(n · log n + n · log ℓ)
=
O(n · log n)
43
44
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Fassen wir unsere Beobachtungen von den Folien 38 bis 44
zusammen, so erhalten wir:
Definition 4 [Intervall-Scheduling mit Deadline] Gegeben sei
◮
◮
Wie können wir den Beweis der Optimalität von Starttime-Ordering
mit Hilfe unserer beiden Schemata von Folie 7 interpretieren?
◮
i∈R
eine Menge R = {1, . . . , n} von n Jobs und
zwei Funktionen δ, τ : R → N.
Mit τ (i) bezeichnen wir die Laufzeit von Job i und mit δ(i) die
Deadline von i:
Für jeden Zeitpunkt t mit
min s(i) ≤ t
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
2.4 Intervall-Scheduling mit Deadline
Satz 4 Es gibt ein Greedy-Algorithmus, dar das
Intervall-Partitionierungs Problem in Zeit O(n · log n) löst.
◮
Andreas Jakoby
Universität zu Lübeck
< max f (i)
Starten wir Job i zum Zeitpunkt t, so endet die Berechnung
von i zum Zeitpunkt t + τ (i).
Eine Schedule S für R weist jedem Job i einen Startzeitpunkt S(i)
zu. Eine Schedule S nennen wir zulässig, wenn für alle Paare
i, j ∈ R mit i 6= j gilt:
i∈R
gilt:
Für alle Jobs i ∈ R mit s(i) ≤ t generiert
Starttime-Ordering maximal so viele Teilmengen, wie
ein optimaler Algorithmus generieren würde.
◮
die Intervalle [S(i), S(i) + τ (i)[ und [S(j), S(j) + τ (j)[
überlappen sich nicht.
46
45
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Definition 4 (Teil 2) Wir sagen, dass sich ein Job i in einer
Schedule um den Wert
Algorithmus Earliest-Deadline-First(R)
Eingabe: Menge R der Jobs mit Laufzeiten τ (i) und Deadlines δ(i)
Ergebnis: eine optimale Schedule S
1: sei r1 , . . . , rn die nach der Deadlines sortierte Folge der Jobs
2: sei t := 0
3: for i := 1 to n by +1 do
4:
schedule ri für den Zeitpunkt t, d.h. S(ri ) := t
5:
setze t := t + τ (ri )
6: end for
7: Return(S)
v (i) := max{0, S(i) + τ (i) − δ(i)}
verspätet. Wir definieren die Verspätung einer Schedule S als
L(S) := max v (i) .
i∈R
Eine Schedule S nennen wir optimal, wenn
◮
S zulässig ist und für alle
◮
anderen zulässige Schedules S ′ für R gilt
L(S) ≤ L(S ′ ) .
Aufgabe: Finde eine optimale Schedule!
47
48
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Um die Optimalität des Resultats von Earliest-Deadline-First zu
zeigen, werden wir folgende Punkte analysieren:
◮
Eine Schedule S besitzt Leerzeiten, wenn für einen Zeitpunkt
t
Beobachtung 4 Es gibt eine optimale Schedule ohne Leerzeiten.
∈ [0, max{S(i) + τ (i)}[
Lemma 5 Alle Schedules ohne Inversion und ohne Leerzeiten
besitzen die gleiche maximale Verspätung.
i∈R
keinen Job i ∈ R mit
S(i) ≤ t
Beweis von Lemma 5:
< S(i) + τ (i)
◮
existiert.
◮
◮
Für eine Schedule S nennen wir ein Paar (i, j) nennen wir
Inversion, wenn
S(i) < S(j)
und
Seien S und S ′ zwei unterschiedliche Schedules ohne Inversion
und ohne Leerzeiten.
S und S ′ unterscheiden sich nur in der Startreihenfolge der
Jobs mit gleicher Deadline.
δ(i) > δ(j)
ist.
49
Algorithmik WS 06/07
2. Vorlesung, 23.10.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 5 (Teil 2):
◮
50
Andreas Jakoby
Universität zu Lübeck
Um den folgenden Satz zu beweisen werden wir ein exchange
argument anwenden.
Sei D(i) := { j ∈ R | δ(i) = δ(j) } und sei d(i, S) der Job
aus D(i), der in S als letztes ausgeführt wird, dann gilt für
alle i ∈ R
X
S(d(i, S)) + τ (d(i, S)) =
τ (j)
Satz 5 Es existiert eine optimale Schedule ohne Inversion und
ohne Leerzeiten.
Beweis von Satz 5:
j∈{k∈R|δ(k)≤δ(i)}
◮
Nach Beobachtung 4 gibt es eine optimale Schedule O ohne
Leerzeiten.
◮
Gibt es in O eine Inversion, dann gibt es ein Paar i, j ∈ R, so
dass i unmittelbar nach j ausgeführt wird — d.h.
S(i) = S(j) + τ (j) — und δ(j) > δ(i) ist.
= S ′ (d(i, S ′ )) + τ (d(i, S ′ )) .
◮
Da L(S) = maxi∈R S(d(i, S)) + τ (d(i, S)) − δ(i) ist, gilt
L(S) = L(S ′ ).
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
51
52
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 5 (Teil 2):
◮ Tauschen wir das Paar i und j, dann
◮
◮
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Die vom Algorithmus Earliest-Deadline-First generierte Schedule
ist:
hat die neue Schedule O ′ eine Inversion weniger und
die maximale Verspätung von O ′ ist kleiner gleich der
maximalen Verspätung von O.
◮ O′
ist somit eine optimale Schedule ohne Leerzeiten und einer
Inversion weniger als O.
◮
Andreas Jakoby
Universität zu Lübeck
◮
ohne Leerzeiten aufgrund der Wahl von t in Zeile 2 und 5 und
◮
ohne Inversion aufgrund der Sortierens der Jobs bezüglich
ihrer Deadlines in Zeile 1.
Aus Lemma 5 und Satz 5 folgt nun unmittelbar:
Wir können somit Schritt für Schritt alle Inversionen aus O
entfernen.
Satz 6 Earliest-Deadline-First generiert eine optimale Schedule.
53
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
2.5 Online-Scheduling — das Caching–Problem
◮
◮
◮
◮
◮
◮
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Definition 5 [Caching-Problem] Gegeben ist
◮ eine Anfragesequenz X = x1 , x2 , . . . über einem Universum U
und
◮ ein Cache C der Größe k, d.h. C kann k Elemente aus U
speichern.
Eine Schedule für das Caching-Problem besteht aus einer Folge
von Operationen. Zur Verfügung stehen:
◮ load-Operationen: load(x) legt das Datenelement x auf einem
freien Cacheplatz ab. Diese Operation verursacht Kosten 1.
◮ eject-Operationen: eject(x) entfernt das Datenelement x aus
dem Cache und hinterläßt einen freien Cacheplatz. Diese
Operation verursacht keine Kosten.
◮ nop-Operationen: nop führt zu keiner Veränderung des
Caches. Diese Operation verursacht keine Kosten.
Die letzte Operation ist nicht unbedingt nötigt. Sie vereinfacht
jedoch die Darstellung der Schedule.
In viele Scheduling–Anwendungen sind nicht alle zeitlichen
Daten vorab bekannt.
In einem solchen Szenario müssen oft sukzessive
Entscheidungen über eine Schedule getroffen werden, bevor
weitere zeitliche Informationen bekannt werden.
Fehlende Informationen über die Zukunft verhindern
zumindest in einem worst–case Szenario, dass die von einem
Algorithmus getroffenen sukzessiven online–Entscheidungen zu
einem optimalen Schedule vervollständigt werden können.
Ein Beispiel für eine solche Aufgabe ist das Caching-Problem:
◮
54
Datenelemente müssen in einem lokalen Cache gehalten
werden, damit ein Prozessor schnell auf sie zugreifen kann.
Die Kapazität k (Anzahl der Speicherplätze) ist viel kleiner als
die Anzahl der Datenelemente.
Soll ein Datenelement x verwendet werden, dass nicht im
Cache vorhanden ist, so spricht man von einem Cache-Miss.
55
56
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Definition 5 (Teil 2) Eine Schedule (oder Strategie) für eine
Anfragesequenz X = x1 , x2 , . . . ist eine Sequenz O = o1 , o2 , . . . von
Cache-Operationen, die zu einer Folge von Cache-Zuständen
C0 , C1 , C2 , . . . führt, wobei

∅
für i = 0



Ci−1
für oi = nop
Ci :=
C
\ {x} für oi = eject(x)


 i−1
Ci−1 ∪ {x} für oi = load(x)
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Vorbemerkungen:
◮ Ein Algorithmus muss entscheiden:
◮
◮
und die folgenden Bedingungen erfüllt sein müssen:
◮ für alle i ist |Ci | ≤ k und
◮ für alle i ist xi ∈ C2i .
Die Kosten einer Schedule sind die Summe der ausgeführten
load-Operationen.
Aufgabe: Finde eine Schedule für die Sequenz X mit
minimalen Kosten, d.h. mit einer minimalen Anzahl von
Cache-Misses!
wann eine load(x)-Operation für ein Element x ausgeführt
werden muss und
welches Element y durch eject(y ) zuvor entfernt werden muss.
◮
Führt eine Strategie erst dann load(x) aus, wenn x in der
Anfragesequenz erscheint, dann nennen wir diese Strategie
lazy.
◮
Zudem verlangen wir von einer lazy Strategie, dass sie nur
dann eine eject-Operation ausführt, wenn Platz im Cache
benötigt wird, d.h. unmittelbar vor einer notwendigen
load-Operation bei vollem Cache.
57
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Beweis von Lemma 6: Zunächst wandeln wir A in eine Strategie
um, die keine überflüssigen load- und eject-Operationen beinhaltet:
◮
◮
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 6 (Teil 2):
◮ Wir alle load-Operationen auf gerade und alle
eject-Operationen auf ungerade Stellen der Sequenz. Hierbei
verfahren wir wie folgt:
Lemma 6 Für jede Strategie A gibt es eine lazy Strategie B, die
maximal so viele Kosten als A verursacht.
◮
58
◮
Ist load(x) ∈ {o2i−1 , o2i }, dann gibt es ein j ≥ i mit xj = x,
so dass alle Operationen o2k−1 , o2k mit k ∈ [i; j] x nicht aus
dem Cache entfernen.
◮
Wir gehen von vorne nach hinten durch die Sequenz der
Operationen.
Hierbei sammeln wir die load- und die eject-Operationen auf
und plazieren sie neu in unsere Schedule:
◮
Ist oi = load(x), dann gibt x 6∈ Ci−1 .
◮
Ist oi = eject(x), dann gibt x ∈ Ci−1 .
◮
Alle load- und eject-Operationen, die diese Bedingungen nicht
erfüllen, sind überflüssig und können durch nop-Operationen
ersetzt werden.
◮
59
Sei S = o1 , o2 , . . . die alte und S ′ = o1′ , o2′ , . . . die neue
Schedule.
Zum Aufsammeln der Operationen benutzen wir Multimengen
L und E für die load- und die eject-Operationen.
Betrachten wir ein Paar o2i−1 , o2i von Operationen, so fügen
wir die vorhandenen load-Operationen zunächst in die Mengen
L und die vorhandenen eject-Operationen zunächst in die
Mengen E ein.
Mit Hilfe der Mengen L und E können wir jetzt das Paar
′
o2i−1
, o2i′ generieren.
60
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Beweis von Lemma 6 (Teil 3):
◮ Weiter mit der Umformung:
◮
◮
◮
′
Ist xi nach den Operationen o1′ , . . . , o2i−2
im Cache vorhanden,
′
′
dann können wir o2i−1 , o2i auf nop setzen.
′
Fehlt xi nach den Operationen o1′ , . . . , o2i−2
im Cache, dann
muss es für xi im Präfix o1 , . . . , o2i eine load-Operation
′
gegeben haben, die wir im Präfix o1′ , . . . , o2i−2
noch nicht
ausgeführt haben. Diese setzen wir jetzt auf o2i′ und entfernen
diese aus L.
′
Wird der Cache im Verlauf der Operationen o1′ , . . . , o2i−2
vollständig gefüllt, dann gibt es im Cache nach den
′
Operationen o1′ , . . . , o2i−2
ein Element, welches sich nach den
Operationen o1 , . . . , o2i nicht im Cache befindet. Da bei
unserem Verfahren die load-Operationen von vorne nach hinten
wandern, muss es für dieses Element in der Sequenz o1 , . . . , o2i
′
eine eject-Operation geben, die wir in o1′ , . . . , o2i−2
noch nicht
′
ausgeführt haben. Diese führen wir jetzt als o2i−1 aus und
erhalten Platz für die benötigte load-Operation o2i′ .
Es ist einfach zu zeigen, dass im Online-Fall für jede Strategie eine
Sequenz existiert, die Kosten in der Länge der Sequenz verursacht:
◮
In den ersten k Elementen füllen wir den Cache.
◮
Als das k + 1-te Element wählen wir ein Element, welches
noch nicht im Cache ist.
◮
Wir wählen xi für i ≥ k + 2 als das Element, welches wir als
letzten aus dem Cache entfernt haben.
Wenn die Sequenz x1 , . . . , xn im Voraus bekannt ist, können wir
mit Hilfe des folgenden Greedy-Algorithmus eine optimale Schedule
generieren.
61
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Algorithmus Evict-Furtherst-In-Future(X )
Eingabe: Sequenz X = x1 , . . . , xn von Datenelementen
Ergebnis: eine optimale Schedule o1 , . . . , o2n
1: C := ∅
2: for i := 1 to n by +1 do
3:
t(xi ) := min{j > i|xj = xi };
4:
if xi ∈ C then
5:
o2i−1 := nop; o2i := nop; C := C
6:
else if |C | < k then
7:
o2i−1 := nop; o2i := load(xi ); C := C ∪ {xi }
8:
else
9:
wähle xj ∈ C mit t(xj ) := maxx∈C t(x)
10:
o2i−1 := eject(xj ); o2i := load(xi ); C := (C ∪ {xi }) \ {xj }
11:
end if
12: end for
13: Return(o1 , . . . , o2n )
62
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Kommentare zum Algorithmus
◮
63
Bei der Berechnung von t(xi ) in den Zeile 3 gehen wir davon
aus, dass t(xi ) = +∞ ist, wenn auf das Element xi zukünftig
nicht mehr zugegriffen wird.
64
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 7 (Teil 2): Wir zeigen die folgende Aussage:
◮
Satz 7 Für jede Zugriffssequenz X konstruiert der Algorithmus
Evict-Furtherst-In-Future eine Schedule mit minimalen Kosten.
Beweis von Satz 7: Wir wollen diese Aussage über ein exchange
argument beweisen. Sei
Sei Oi eine optimale und lazy Schedule, die auf den ersten i
Elementen der Eingabe die gleichen eject-Operationen wie S
ausführt, dann können wir eine optimale und lazy Schedule
Oi+1 konstruieren, die auf den ersten i + 1 Elementen der
Eingabe die gleichen eject-Operationen wie S ausführt.
◮
O eine optimale und lazy Schedule und
◮
S eine Schedule wie sie über den Algorithmus konstruiert wird.
◮
Wir wollen nun O Schritt für Schritt so verändern, dass wir S
erhalten. Wir erhalten hierbei eine Sequenz von optimalen und lazy
Schedules O0 = O, O1 , . . . , On = S:
Oi und S führen auf das i + 1-te Element der Eingabe die
gleiche eject-Operation aus. In diesem Fall setzen wir
Oi+1 = Oi .
◮
Oi und S führen auf das i + 1-te Element der Eingabe
verschiedene eject-Operation aus. Sei y das Element, welches
hierbei in S aus dem Cache entfernt wird und sei z das
entsprechende Element in Oi . Wir ersetzen zunächst die
Operation eject(z) in Oi durch eject(y ) und erhalten Oi′ .
◮
Wir unterscheiden die folgenden Fälle:
Hierbei führt Oi auf den ersten i Elementen der Eingabe die
gleichen eject-Operationen wie S aus.
65
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Beweis von Satz 7 (Teil 3): Bezüglich y und z unterscheiden wir
die folgenden Fälle:
◮ Bevor y in der Eingabe wieder angefragt wird, wird y auch
von Oi′ aus dem Cache entfernt:
◮
◮
66
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Beweis von Satz 7 (Teil 4):
◮ Es bleibt jetzt noch der Fall, dass y in O ′ nicht aus dem
i
Cache entfernt, bis y erneut angefragt wird. In diesem Fall
verfahren wir wie folgt:
Gibt es bis zu diesem Zeitpunkt keine neue Anfrage nach z,
dann ersetzen wir diese eject-Operation in Oi′ durch eject(z),
und wir erhalten einen Cache, der nach dieser Operation für Oi
und Oi′ identische ist. Sei jetzt Oi+1 := Oi′ .
Vor diesem Zeitpunkt gibt es eine neue Anfrage nach z. Wir
betrachten die erste dieser Anfragen nach der i + 1-ten
Anfrage. Da in Oi′ das Element z nicht aus dem Cache entfernt
wurde, können wir die entsprechende load(z)-Operation aus Oi′
sowie die gefundene eject(y )-Operation aus Oi′ entfernen. Die
resultierende Schedule ist jetzt nicht mehr lazy. Wir können
diese Bedingung jedoch analog zu Lemma 6 wieder herstellen
ohne die Operationen für die ersten i + 1-Eingabeelemente zu
ändern. Sei Oi+1 die resultierende Schedule.
◮
Wir starten eine Suche nach dem ersten Auftauchen von z in
der Eingabe nach dem i + 1-ten Eingabeelement. Da z zu
diesem Zeitpunkt nicht im Cache bei der Schedule Oi ist,
müssen wir an dieser Stelle eine load(z)-Operation ausführen.
Bei Oi′ befindet sich jedoch z noch im Cache. Daher ist diese
load-Operation nicht mehr nötigt und wir können sie durch ein
load(y ) ersetzen.
Die resultierende Schedule ist jetzt nicht mehr lazy. Wir können
diese Bedingung jedoch analog zu Lemma 6 wieder herstellen
ohne die Operationen für die ersten i + 1-Eingabeelemente zu
ändern. Sei Oi+1 die resultierende Schedule.
67
68
Algorithmik WS 06/07
3. Vorlesung, 30.10.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmus von Dijkstra
2.6 Das Shortest-Path Problem
◮
◮
◮
◮
◮
◮
◮
Beim kürzesten Wegeproblem unterscheiden wir:
◮
Single Source Shortest Path Problem (SSSPP): Finde die
billigsten Wege von einer Quelle (Startknoten) zu allen
anderen Knoten.
All Pairs Shortest Path Problem (APSPP): Finde die
billigsten Wege zwischen allen Knotenpaaren.
Der Algorithmus von Dijkstra löst das SSSPP Problem.
Ideen:
◮
◮
Als Eingabe liegt bei diesen Problemen jeweils ein gewichteter
Graph G = (V , E ) mit einer Kantengewichtsfunktion
f : E → R+ vor.
◮
Beachte: Die Kantengewichtsfunktion weist jeder Kante ein
positives Gewicht ungleich 0 zu.
◮
Ist das Kantengewicht konstant 1, so können wir SSSPP mit
Hilfe der Breitensuche lösen.
◮
Zur Vereinfachung gehen wir davon aus, dass V = [1..n] und 1
die Quelle sind.
Sei C die |V | × |V |-Kostenmatrix von G , d.h.
f (u, v ) für (u, v ) ∈ E
C [u, v ] :=
∞
sonst.
In S speichern wir die Menge der Knoten v , für die wir bereits
einen kürzesten Weg von 1 aus gefunden haben. Zu Beginn ist
S = {1}.
Im Feld D speichern wir für jeden Knoten v die Kosten des
kürzesten bis jetzt gefundenen Pfades von 1 nach v , wobei wir
auf diesem Pfad nur über Knoten aus S laufen dürfen.
Im Feld W speichern wir den Vorgänger von v auf dem
kürzesten bis jetzt gefundenen Pfad.
69
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
70
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Beispiel:
◮
◮
Idee des Algorithmus von Dijkstra:
1. Setze S := {1}.
2. Suche den Knoten v ∈ V \ S, für den der bis jetzt
gefundene Weg minimal ist. Setze S := S ∪ {v } und
modifiziere die Felder D und W für die Knoten u ∈ V \ S
mit (v , u) ∈ E , falls sich durch die Hinzunahme von v zu
S ein kürzerer Pfad von 1 nach u ergibt.
3. Wiederhole den letzte Schritt bis S = V .
S:
2
3
4
◮
1
1
4
1
1
5
2
2
2
Wir gehen davon aus, dass G , S, D, W global gegeben sind.
3
71
4
Sei S = {1, 2, 3} und
◮
D[4] = 4, D[5] = 2, D[6] = 6,
◮
dann ist 5 der nächste Knoten,
der in S eingefügt wird.
◮
Der Pfad P5 ist 1, 2, 5.
6
72
Andreas Jakoby
Universität zu Lübeck
◮
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Wie finden wir den nächsten in S einzufügenden Knoten?
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Algorithmus next-node()
Eingabe: global gegeben
Ergebnis: u ∈ V \ S mit minimaler Distanz zu 1
1: min:= ∞
2: for v ∈ V \ S do
3:
if D[v ] < min then
4:
min:= D[v ]
5:
u := v
6:
end if
7: end for
8: Return(u)
Modifikation der Felder:
Algorithmus modify(u)
Eingabe: u ∈ V \ S mit minimaler Distanz zu 1
Ergebnis: modifizierte Datenstruktur
1: S := S ∪ {u}
2: for v ∈ V \ S mit (u, v ) ∈ E do
3:
if D[u] + C [u, v ] < D[v ] then
4:
W [v ] := u
5:
D[v ] := D[u] + C [u, v ]
6:
end if
7: end for
73
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
74
◮
Im Feld W steht für jeden Knoten v der kürzeste Weg über
die Knoten aus S vom Knoten 1:
◮
Algorithmus Dijkstra(C )
Eingabe: global gegebene Kostenmatrix C , die leere Menge S
sowie Felder D, W
Ergebnis: Lösung des SSSPP im Feld W
1: S := {1}
2: for v ∈ V \ S do
3:
D[v ] := C [1, v ]; W [v ] := 1
4: end for
5: while S 6= V do
6:
modify(next-node())
7: end while
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
◮
Initialisiert wird W durch W [v ] := 1 und setzen
D[v ] := C [1, v ].
Für jeden Knoten v ∈ V \ S sei D[v ] der Abstand von 1 und v
in S ∪ {v }.
Für jeden Knoten v ∈ V \ S sei W [v ] der Vorgänger von v auf
dem kürzesten Weg von 1 nach v in S ∪ {v }. Somit ist
Pv
= v , W [v ], W [W [v ]], . . . , W [W [· · · [W [v ]] · · · ]] = 1
der inverse kürzeste Weg von 1 nach v in S ∪ {v }.
◮
◮
75
Bei der Implementierung müssen wir für ∞ einen geeigneten
Wert finden, z.B.: 1 + n · maxi,j C [i, j].
Beachte: Dieses Verfahren generiert aus lokalen Eigenschaften
(wir wählen den lokal billigsten Nachfolger) eine globale
Eigenschaft (alle generierten Wege sind optimal) und ist somit
ein Greedy-Algorithmus.
76
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Beispiel:
Kostenmatrix:

45
50
1
10
2
3
20
10
15
C
30
30
20
4
◮
15
5
S = {1} und next-node= 4
v
D[v ]
1
∞
2
50
3
45
4
10
5
∞
50
∞
∞
∞
20
v
W [v ]
1
-


= 


S = {1, 4} und next-node= 5
v
D[v ]
∞
∞
∞
20
∞
45
10
∞
∞
30
2
1
∞
∞
30
15
∞
10
15
∞
∞
∞
3
1
4
1
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck

◮
◮
◮
1
∞
2
45
1
∞
2
45
1
∞
2
45
3
45
4
10
5
25
v
W [v ]
1
-
2
1
3
1
4
1
5
4
3
45
4
10
5
25
v
W [v ]
1
-
2
5
3
1
4
1
5
4
v
W [v ]
1
-
2
5
3
1
4
1
5
4
v
W [v ]
1
-
2
5
3
1
4
1
5
4
S = {1, 2, 4, 5} und next-node= 3
v
D[v ]
5
1
2
50
S = {1, 4, 5} und next-node= 2
v
D[v ]





1
∞
3
45
4
10
5
25
Endzustand: S = {1, 2, 3, 4, 5}
v
D[v ]
3
45
4
10
5
25
77
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
78
Beweis von Lemma 7 (Teil 2):
◮ Wir betrachten nun eine Menge S der Kardinalität k und den
Knoten v , der im nächsten Schritt zu S hinzugefügt wird.
◮ Betrachten wir einen Pfad Pu von 1 zu einem Knoten u ∈ S,
so erkennen wir, dass dieser vollständig in S verläuft.
Der Beweis, dass der Algorithmus von Dijkstra eine optimale
Lösung findet erfolgt über ein greedy algorithm stays ahead
Argument.
Lemma 7 Sei S eine beliebige Menge, die im Algorithmus Dijkstra
in einem Aufruf der Prozedur modify berechnet wird, dann gilt für
alle u ∈ S, dass Pu der kürzeste Pfad von 1 nach u.
◮
◮
Sei v der Knoten, der im k + 1-ten
Schritt in S eingefügt wird.
◮
Sei (u, v ) die letzte Kante in Pv .
◮
Nach Induktion ist Pu der kürzeste
Pfad von 1 nach u.
◮
Sei P ein beliebiger Pfad von 1 nach
v . Wir wollen zeigen, dass P
mindestens die Länge von Pv hat.
◮
Sei y der erste Knoten auf P, der
nicht in S ist und sei x der direkte
Nachfolger von y .
S:
x
Beweis von Lemma 7: Der Beweis erfolgt über vollständige
Induktion über die Kardinalität von S.
◮
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
y
Px
Für |S| = 1, d.h. S = {1}, ist das Lemma trivialer Weise
erfüllt.
1
Pu
Wir nehmen nun an, dass die Aussage für das Lemma für
Mengen S mit |S| ≤ k erfüllt ist.
u
79
v
80
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 7 (Teil 3):
◮ Es gilt:
◮
◮
◮
P hat mindestens die Länge des kürzesten Pfades von 1 nach
x, d.h. D[x]
plus der Länge (Gewicht) der Kante (x, y )
plus der Länge des Suffixes des Pfades P von y nach v .
◮
Die Länge von P ist zumindest D[x] + C [x, y ].
◮
Wir wählen jedoch (u, v ) so, dass D[u] + C [u, v ] minimal ist
für alle u ∈ S und v ∈ V \ S.
◮
Somit ist |P| ≥ D[x] + C [x, y ] ≥ D[u] + C [u, v ] ≥ |Pv |.
Satz 8 Der Algorithmus von Dijkstra löst SSSPP.
Beweis: In Lemma 7 haben wir gezeigt, dass der Algorithmus von
Dijkstra für jede der konstruierten Menge S und für jeden Knoten
v ∈ S eine kürzesten Pfades von 1 nach v konstruiert. Dieses gilt
insbesondere für S = V .
81
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
82
Definition 6 (Teil 2) Ein Fluss in N ist eine Funktion
f : E → R+
0 mit folgenden Eigenschaften:
3 Das Flussproblem für Netzwerke
◮
3.1 Netzwerke mit Kapazitätsbeschränkung
Definition 6 Ein Netzwerk N = (V , E , γ, q, s) besteht aus
◮
einem gerichteten Graph G = (V , E ),
◮
einer Quelle q ∈ V und einer Senke s ∈ V
◮
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
die Kapazitätsschranken der Kanten werden eingehalten, d.h.
∀e ∈ E : f (e) ≤ γ(e)
◮
sowie einer Kapazitätsfunktion γ : E → R+
0.
Es sei n := |V | und m := |E |.
für alle Knoten v ∈ V \ {q, s} wird die Kirchhoffsche Regel
eingehalten, d.h.
X
X
∀v ∈ V \ {q, s} :
f ((u, v )) =
f ((v , w )) .
(u,v )∈E
83
(v ,w )∈E
84
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Definition 6 (Teil 3) Als Wert eines Flusses definieren wir als
X
X
W (f ) :=
f ((q, v )) =
f ((u, s)) .
(q,v )∈E
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
4
u
5
5
3
(u,s)∈E
Die Eigenschaft, dass der Ausfluss aus der Quelle identisch sein
muss mit dem Abfluss in die Senke folgt unmittelbar aus der
Kirchhoffschen Regel, da im Netzwerk kein Fluss verloren geht.
Ein Fluss heißt maximal, falls sein Wert größtmöglich unter allen
Flüssen in N ist. MAXFLOW(N) bezeichnet diesen Wert.
w
4
5
5
4
7
q
s
6
6
v
3
4
7
q
4
u
v
s
6
6
w
x
4
x
Ein Netzwerk und ein Fluss mit dem Wert 3.
85
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Es sollen möglichst viele Einheiten einer Ware von einem
Absender zu einem Empfänger zu schicken, wobei gewisse
Kapazitätsschranken auf dem Transportweg eingehalten
werden müssen.
Lenkung von Verkehrsströmen (Eisenbahn, PKWs) oder
◮
Lenkung von Nachrichtenströmen (Telefonverkehr,
Datenverkehr im Internet).
◮
die Kapazität der Quelle (die Summe der Kapazitäten aller
Kanten, die die Quelle verlassen) und
◮
die Kapazität der Senke (die Summe der Kapazitäten aller
Kanten, die in der Senke enden).
Es sei
Beispiele für solche Transportprobleme sind:
◮
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Der maximale Fluss ist beschränkt durch
Ein Fluss ist somit ein Transportproblem:
◮
86
γmax := max γ(e) .
e∈E
Da höchstens |V | − 1 Kanten die Quelle verlassen, ist der
maximale Fluss ist beschränkt durch
◮
87
|V | · γmax .
88
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Definition 7 Die Zerlegung der Kontenmenge V = Q ∪ S mit
Q ∩ S = ∅ nennen wir q|s-Schnitt, falls q ∈ Q und s ∈ S ist.
Die Schnittkapazität eines q|s-Schnittes definieren wir als
X
γ(Q, S) :=
γ((u, v )) .
G
γ(e1 )
S
q
Ein minimaler Schnitt von N ist ein q|s-Schnitt (Q, S), so dass
γ(Q, S) minimal unter allen q|s-Schnitten ist. MINCUT(N)
bezeichnet diesen Wert.
s
γ(er )
Für einen Fluss f sei der Nettofluss von f über einen Schnitt
(Q, S) definiert als
X
X
f (Q, S) :=
f ((u, v )) −
f ((v , u)) ≤ γ(Q, S) .
u∈Q, v ∈S
γ(e2 )
Q
(u,v )∈E , u∈Q, v ∈S
q|s-Schnitt (Q, S) mit Schnittkapazität γ(Q, S).
u∈Q, v ∈S
90
89
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 8 (Teil 2)
Lemma 8 Für jeden q|s-Schnitt (Q, S) gilt
f (Q, S) = W (f ) .
G
Beweis von Lemma 8 Der Beweis erfolgt per Induktion über die
Mächtigkeit von Q.
◮
◮
Q
Für |Q| = 1, d.h. für Q = {q} folgt die Behauptung aus der
Definition von W (f ).
q
S
f1
f4
s
v
Sei |Q| > 1 und v ∈ Q mit v 6= q. Nach Voraussetzung gilt
f3
f2
f (Q \ {v }, S ∪ {v }) = W (f ) .
91
92
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Definition 8 Der Restgraphen G ′ = (V , E ′ ) für einen Fluss f
definieren wir über die Kantenmenge E ′ , wobei:
Beweis von Lemma 8 (Teil 3)
◮
◮
◮
Sei f1 der Gesamtfluss nach v von Knoten aus Q \ {v } und f2
der Gesamtfluss nach v von Knoten aus S.
◮
◮
Sei f3 der Gesamtfluss aus v nach Q \ {v } und f4 der
Gesamtfluss von v nach S.
◮
Die Flussbedingung garantiert
f1 + f2 = f3 + f4
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Für jede Kante e ∈ E mit f (e) < γ(e) ist e ∈ E ′ mit
Kapazität γ(e) − f (e).
Für jede Kante e = (u, v ) ∈ E mit 0 < f (e) ist die
Rückwärtskante ˜(e) = (v , u) in E ′ mit Kapazität f (e).
oder f4 − f2 + f3 − f1 = 0.
4
u
5
5
f (Q, S) lässt sich darstellen als
3
5−3=2
s
v
3−3
5
=0
3
4
7
q
4
u
v
4
7
q
s
3
f (Q, S) = f (Q \ {v }, S ∪ {v }) + f4 − f2 + f3 − f1
6
6
= f (Q \ {v }, S ∪ {v }) = W (f ) .
w
4
x
3
6
6−3=3
w
4
x
94
93
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
4. Vorlesung, 06.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Sei f ein Fluss in N = (V , E , q, s, γ) und π ein zunehmender Weg
in Nf = REST(N, f ) = (V , E ′ , q, s, γ). Wir gehen im folgeden
davon aus, dass ein zunehmender Weg jeden Knoten maximal
einmal besucht. Der nachfolgende Algorithmus modifiziert f :
Definition 8 (Teil 2) Sei G ′ = (V , E ′ ) der Restgraph von G für
einen Fluss f , dann ist REST(N, f ) := (V , E ′ , q, s, r ) mit

 γ(e) − f (e) falls e ∈ E und γ(e) > f (e)
f (e)
falls e = (u, v ), (v , u) ∈ E
r (e) :=

und f (e) > 0.
Algorithmus modify(N, f , π)
Eingabe: Netzwerk N, Fluss f in N und zunehmender Weg π in Nf
Ergebnis: um π erhöhter Fluss f ′ in N
1: ρ := min{r (ei )|ei ∈ π}
2: for ei ∈ π do
3:
if ei ist Vorwärtskante in Nf , d.h. ei ∈ E then
4:
f (ei ) := f (ei ) + ρ
5:
else if ei ist Rückwärtskante in Nf , d.h. ei ∈ E ′ \ E then
6:
f (ei ) := f (ei ) − ρ
7:
end if
8: end for
9: Return(f )
Ein Weg von der Quelle zur Senke im Restgraphen heißt
zunehmender Weg.
95
96
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Lemma 9 Ist f ein Fluss in N und π ein zunehmender Weg in Nf ,
dann ist modify(N, f , π) auch ein Fluss in N.
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 9 (Teil 2): Als zweites müssen wir nun
zeigen, dass die Kirchhoffsche Regel für jeden Knoten v auf π (bis
auf q und s) erfüllt ist:
X
X
f ((u, v )) =
f ((v , w ))
Beweis von Lemma 9: Wir müssen zunächst zeigen, dass
f ′ := modify(N, f , π)
die Kapazitätsschranken γ einhält. Da wir nur den Fluss auf dem
Weg π verändern, genügt es, wenn wir für alle Kanten e ∈ π
zeigen, dass
0 ≤ f ′ (e) ≤ γ(e)
(u,v )∈E
◮
Betritt und verlässt π den Knoten v auf jeweils einer
Vorwärtskante, dann erhöhen wir beide Summen um den Wert
ρ. Die Kirchhoffsche Regel bleibt somit erfüllt.
◮
Betritt und verlässt π den Knoten v auf jeweils einer
Rückwärtskante, dann verringern wir beide Summen um den
Wert ρ. Die Kirchhoffsche Regel bleibt somit erfüllt.
gilt. Ist e eine Vorwärtskante, dann gilt
0 ≤ f (e) ≤ f (e) + ρ ≤ f (e) + r (e) = γ(e) .
(v ,w )∈E
Ist e eine Rückwärts Kante, dann gilt
0 = f (e) − f (e) ≤ f (e) − ρ ≤ f (e) ≤ γ(e) .
97
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
(u ′ , v )
Betreten wir v über eine Vorwärtskante
und verlassen
wir v auf einer Rückwärtskante (v , w ′ ), dann
X
X
f ′ ((u, v )) =
f ((u, v )) − f ((u ′ , v )) − f ((w ′ , v ))
(u,v )∈E
(u,v )∈E
′
′
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 9 (Teil 4):
Beweis von Lemma 9 (Teil 3):
◮
98
′
(v ,w )∈E
(v ,w )∈E
′
+f ((v , u ′ )) + f ′ ((v , w ′ ))
X
=
f ((v , w )) − f ((v , u ′ )) − f ((v , w ′ ))
′
+f ((u , v )) + f ((w , v ))
X
=
f ((u, v )) − f ((u ′ , v )) − f ((w ′ , v ))
(u,v )∈E
′
Betreten wir v über eine Rückwärtskante (u ′ , v ) und verlassen
wir v auf einer Vorwärtsskante (v , w ′ ), dann
X
X
f ′ ((v , w )) =
f ((v , w )) − f ((v , u ′ )) − f ((v , w ′ ))
(v ,w )∈E
+f ((v , u ′ )) − ρ + f ((v , w ′ )) + ρ
X
f ((u, v )) .
=
′
+f ((u , v )) + ρ + f ((w , v )) − ρ
X
=
f ((v , w )) .
(u,v )∈E
(v ,w )∈E
Die Kirchhoffsche Regel bleibt somit erfüllt.
Die Kirchhoffsche Regel bleibt somit erfüllt.
Wir haben somit bewiesen, dass f ′ ein Fluss ist, wenn f ein Fluss
ist.
99
100
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Satz 9 [MAXFLOW-MINCUT-Theorem] Für jedes Netzwerk N
gilt:
MAXFLOW(N) = MINCUT(N) .
Aus der Konstruktion von REST(N, f ) folgt, dass jeder
zunehmende Weg q immer über eine Vorwärtskante verlässt, und
dass jeder zunehmende Weg s über eine Vorwärtskante erreicht. Es
folgt somit:
Beweis von Satz 9: Nach Lemma 8 gilt für einen maximalen
Fluss f und für jeden q|s-Schnitt (Q, S)
Lemma 10 Führen wir modify(N, f , π) für einen Fluss f und einen
zunehmenden aus, so gilt für den resultierenden Fluss f ′ :
MAXFLOW(N) = W (f ) = f (Q, S) ≤ γ(Q, S) .
′
W (f ) < W (f ) .
Insbesondere gilt für den minimalen q|s-Schnitt (Q, S)
Existiert somit in REST(N, f ) ein zunehmender Weg, dann ist f
kein maximaler Fluss.
MAXFLOW(N) ≤ γ(Q, S) = MINCUT(N) .
101
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
102
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 9 (Teil 3): Insbesondere gilt für den q|s-Schnitt
(Q, S):
Beweis von Satz 9 (Teil 2): Es verbleibt zu zeigen, dass
◮
MAXFLOW(N) ≥ MINCUT(N) .
Es gibt keine Vorwärtskanten von Q nach S in G ′ . Somit gilt
für jede Kante e ∈ Q × S:
f (e) = γ(e) .
Sei f ein maximaler Fluss in N.
◮
◮
◮
Aus Lemma 10 folgt, dass es in REST(N, f ) = (V , E ′ , q, s, r )
keinen zunehmenden Weg gibt, d.h. es gibt in G ′ = (V , E ′ )
keinen Weg von q nach s.
◮
Es gibt keine Rückwärtskanten von Q nach S in G ′ . Somit gilt
für jede Kante e ∈ S × Q:
f (e) = 0 .
Sei Q die Menge der Knoten, die von q aus in G ′ erreichbar
sind, und sei S := V \ Q.
Wir erhalten
(Q, S) ist ein q|s-Schnitt.
MINCUT(N) ≤ γ(Q, S) = f (Q, S)
= W (f ) = MAXFLOW(N) .
103
104
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Aus den bisher angestellten Beobachtungen (Lemma 10 und
Satz 9) können wir den folgenden Algorithmus für das
MAXFLOW-Problem herleiten
Eine entscheidende Bedingung für das Terminieren unseres oben
angegebenen Verfahrens General-MAXFLOW liegt darin, dass die
Kapazitätsschranken und jeder konstruierte Fluss ganzzahlig sind:
Algorithmus General-MAXFLOW(N)
Eingabe: Netzwerk N
Ergebnis: maximaler Fluss f in N
1: for e ∈ E do f (e) := 0 end for
2: while es existiert ein zunehmender Weg in REST(N, f ) do
3:
sei π ein zunehmender Weg in REST(N, f )
4:
f :=modify(N, f , π)
5: end while
6: Return(f )
Lemma 11 Sei N ein Netzwerk mit Kapazitätsschranken γ(e) ∈ N,
dann gilt für jeden in General-MAXFLOW konstruierten Fluss f :
∀e ∈ E : f (e) ∈ N .
Beweis von Lemma 11: Der Beweis erfolgt über eine Induktion
über die Anzahl t der ausgeführten while-Schleifen-Durchläufe:
◮
Für t = 0 ist f (e) = 0 für alle Kanten e ∈ E . Die Aussage des
Lemmas ist somit erfüllt.
105
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
106
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Beweis von Lemma 11 (Teil 2):
◮
Annahme: die Aussage ist für den Fluss erfüllt, den wir nach
dem t-ten Durchlauf der while-Schleife mit t > 0 erhalten.
◮
Im t + 1-ten Durchlauf wählen wir ρ, so dass dieser Wert
entweder der Restkapazität einer Kante oder dem Fluss auf
einer Kante entspricht. ρ ist somit ganzzahlig.
◮
◮
Aus Lemma 10 und Lemma 11 folgt:
Da wir die ganzzahligen Werte des alten Flusses nur um den
Wert von ρ erhöhen oder verringern, sind die resultierenden
Werte wieder ganzzahlig.
Die Bedingung, dass die resultierenden Werte auch in N
liegen, folgt aus der Beobachtung, dass das Ergebnis von
modify(N, f , π) wieder ein Fluss ist.
◮
Jeder Durchlauf durch die while-Schleife erhöht den Fluss um
mindestens 1.
◮
Da der maximale Fluss durch (|V | − 1) · γmax beschränkt ist,
ist auch die Anzahl der Durchläufe durch die while-Schleife
durch (|V | − 1) · γmax beschränkt.
Satz 10 Die Laufzeit von General-MAXFLOW(N) ist durch
O(|V | · γmax · TWeg ) nach oben beschränkt, wobei TWeg die Zeit
ist, die wir benötigen um einen zunehmenden Weg zu finden.
107
108
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Bemerkungen
◮
Bemerkungen
Bei ungünstiger Wahl der zunehmenden Wege in entsprechend
konstruierten Netzwerken, können wir zeigen, dass die
Laufzeit unseres Verfahren tatsächlich Ω(|V | · γmax )
Durchläufe durch die while-Schleife benötigt. Ein Beispiel für
ein solches Netzwerk, ist:
◮
Sind die Kapazitätsschranken nicht ganzzahlig, so können
Beispiele konstruiert werden, für die ein maximaler Fluss bei
entsprechender Wahl der zunehmenden Wege nicht nach einer
endlichen Anzahl von Iterationen konstruiert worden ist.
◮
Es sei
a
M
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
M
β :=
1
q
√
s
M
5−1
= 0, 618 . . . und α := 1 + β
2
β steht in enger Beziehung zur Fibonacci-Folge und ergibt
sich aus der Lösung des goldenen Schnitt-Problems. Es gilt
M
b
β 2 + β = 1 und somit β k+2 = β k − β k+1
Wählen wir den zunehmenden Weg abwechselnd über die
Kante (a, b) und über die Rückwärtskante (b, a), so benötigen
wir 2M Iterationen der while-Schleife.
für alle k ≥ 2.
109
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
α
v1
v3
1
v6
α
α
α
β
α
α
v4
β
α
v2
1.
2.
3.
4.
5.
6.
α
α
α
α
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Wir betrachten eine Folge von Phasen k = 0, 1, 2, . . .. Wobei jede
Phase aus 6 Flußerhöhungen besteht. Wir betrachten hierbei 6
zunehmende Wege:
Als Netzwerk wählen wir:
q
110
α
s
v5
α
Wir betrachten nun die Rest Kapazitäten des Netzwerks, nach dem
wir verschiedene Pfade in den Fluss aufgenommen haben.
Pfad
Pfad
Pfad
Pfad
Pfad
Pfad
q
q
q
q
q
q
−
−
−
−
−
−
v1
v2
v1
v2
v1
v2
−
−
−
−
−
−
v2
v1
v2
v1
v2
v1
−
−
−
−
−
−
v3
v3
v4
v4
v5
v5
−
−
−
−
−
−
v6
v6
v6
v6
v6
v6
−
−
−
−
−
−
s
v5 − s
s
v3 − s
s
v4 − s
Erhöhung
β 1+3k
β 2+3k
β 2+3k
β 3+3k
β 3+3k
β 4+3k
Diese 5 Pfade erhöhen den Fluss um
β 1+3k + 2 · (β 2+3k + β 3+3k ) + β 1+3(k+1) .
111
112
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Wir wollen im folgenden betrachten, wie sich die ausgewählten
Pfade auf den Fluss auswirken. Da nur die Kanten (v1 , v2 ),
(v3 , v6 ), (v4 , v6 ) und (v6 , v5 ) sowohl als Vorwärtskanten als auch
als Rückwärtskanten eingesetzt werden, werden wir die
Kapazitätsschranken der anderen Kanten im Folgenden
vernachlässigen.
Nach ℓ Runden ist der Fluss
2·
= 2·
≤
ℓ
X
i:=0
3ℓ+4
X
i:=1
β 1+3i + β 2+3i + β 3+3i
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
− β + β 1+3(ℓ+1)
Pfad 1 erhöht den Fluss um β:
βi − β
q − v1 − v2 − v 3 − v6 − s .
v1
2
− β − 2 = 2, 618 . . . ≤ 2 · α .
1−β
β2
v3
β
β
q
0
β
v6
α
v4
s
v2
v5
113
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Pfad 2 erhöht den Fluss um β 2 :
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Pfad 3 erhöht den Fluss um β 2 :
q − v2 − v 1 − v3 − v 6 − v5 − s .
v1
114
q − v1 − v2 − v4 − v6 − s .
0
v3
1
v1
v6
1
β2
β3
v4
β2
v2
v6
β3
β
q
0
v3
q
1 + β3
0 β
v4
β2
s
v5
v2
115
β2
1 + β3
s
v5
116
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Pfad 4 erhöht den Fluss um β 3 :
Pfad 5 erhöht den Fluss um β 3 :
q − v2 − v 1 − v4 − v 6 − v3 − s .
v1
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
q − v1 − v2 − v5 − v6 − s .
β3
v3
1 − β3
v1
1 − β3
v6
0
q
β3
β
2
v4
v2
v6
0
q
β
β2
β3
v3
1 + β3
0
β
v4
β4
s
v2
v5
β
1 + 2β 3
s
v5
117
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
q − v1 − v 2 − v5 − v 6 − v4 − s .
◮
β3
v3
1 − β3
v6
β4
q
β4 β − β4
◮
◮
1+β
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Wähle unter allen zunehmenden Wegen einen Weg mit
maximaler Flusserhöhung.
Es kann gezeigt werden, dass:
v4 β − β 4
0
v2
Andreas Jakoby
Universität zu Lübeck
Effiziente Wahl der Flusserhöhungen: Um die Laufzeitschranke
aus Satz 10 zu verbessern können wir verschiedene Ansätze
verfolgen:
Pfad 6 erhöht den Fluss um β 4 :
v1
118
s
◮
v5
◮
119
Nach maximal 2|E | Flusserhöhungen hat sich die maximal
noch zu erzielende Flusserhöhung halbiert.
Die Anzahl der Iterationen ist höchstens 2|E | · log2 γmax .
Einen maximal zunehmenden Weg können wir mit Hilfe des
SSSP-Algorithmus finden.
Die Gesamtlaufzeit ist somit O((m + n log n) · m · log γmax ).
120
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
◮
◮
Wähle einen kürzesten zunehmenden Wegen.
Hierbei entspricht die Länge eines Weges der Anzahl der
Kanten auf dem Weg. Es kann gezeigt werden, dass:
◮
◮
◮
◮
◮
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Betrachte alle kürzesten zunehmenden Wegen
gleichzeitig und vergrößere den Fluss entlang all dieser
Wege.
Es kann gezeigt werden, dass:
◮
Jede Flussvergrößerung sättigt mindestens eine Kante des
Restgraphens (bei gegebener Weglänge).
Nach maximal m Flussvergrößerungen müssen wir die
Weglänge um 1 erhöhen.
Die maximale Pfadlänge ist n − 1.
Einen kürzesten zunehmenden Weg können wir mit Hilfe der
Breitensuche in Zeit O(m) finden.
Die Gesamtlaufzeit ist somit O(n · m2 ).
◮
◮
◮
Wir teilen den Restgraphen in eine Folge von Stufen auf, wobei
die i-te Stufe aus allen Knoten besteht, deren Entfernung von
der Quelle exakt i ist.
Wir betrachten zunächst den Teilgraph des Restgraphen, der
nur die Kanten beinhaltet, die aufeinanderfolgende Stufen
verbinden. Diesen Teilgraph nennen wir Niveaugraph.
Die Flussvergrößerung wird entlang zunehmender Wege im
Niveaugraphen solange durchgeführt, bis q von s getrennt
wird.
Derartige Wege kann man mit Hilfe der Breitensuche mit
linearem Aufwand finden.
122
121
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
In den letzten Jahrzehnten wurden verschieden Algorithmen zur
Lösung des MAXFLOW-Problems vorgestellt:
◮
◮
Weiter zu: Betrachte alle kürzesten zunehmenden Wegen
gleichzeitig und vergrößere den Fluss entlang all dieser Wege:
◮
◮
◮
◮
◮
◮
Jede Flussvergrößerung sättigt mindestens eine Kante. Somit
gibt es für jeden Niveaugraphen maximal m Iterationen und
der Aufwand für jede Iteration ist in O(n).
Konstruieren wir den neuen Niveaugraphen, so wächst die
Entfernung zwischen Quelle und Senke um mindestens 1.
Wir betrachten hächstens n viele Niveaugraphen.
Die Gesamtlaufzeit ist somit O(m · n2 ).
◮
◮
◮
◮
◮
◮
◮
◮
◮
123
1956 Ford, Fulkerson: O(n · m · γmax )
1972 Edmonds, Karp: O(n · m2 )
1970 Dinic: O(n2 · m)
1974 Karzanov: O(n3 )
1977 Cherkasky: O(n2 ·
√
m)
1978 Malhotra, Kumar, Maheshwari: O(n3 )
1980 Galil: O(n5/3 · m2/3 )
1978 Shiloach, 1980 Galil, Naamand: O(n · m · log2 n)
1982 Shiloach, Vishkin: O(n3 )
1983 Sleator, Tarjan: O(n · m · log n)
1984 Tarjan: O(n3 )
1985 Gabow: O(n · m · log γmax )
124
Algorithmik WS 06/07
5. Vorlesung, 13.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Weitere Algorithmen:
◮
◮
◮
◮
◮
◮
◮
1985 Goldberg: O(n3 )
3.2 Das Transport-Problem
1986 Bertsekas: O(n3 )
Definition 9 [Transport-Problem] Gegeben sind zwei Folgen
α1 , . . . , αn ∈ N und β1 , . . . , βm ∈ N mit
1986 Goldberg, Tarjan: O(n · m · log(n2 /m))
1987 Cheriyan, Maheshwari: O(n2 ·
√
m)
n
X
1987 Ahuja, Orlin: O(n · m + n2 · log γmax )
1988 Ahuja, Orlin, Tarjan:
O(n · m + n2 · log γmax / log log γmax )
◮
=
m
X
βi .
i=1
i=1
Gesucht sind n · m Werte xi,j ∈ N mit i ∈ [1..n], j ∈ [1..m], so dass
1989 Cheriyan, Hagerup:
O(min{n · m · log n, n · m + n2 · log2 n})
∀i ∈ [1..n] :
Probabilistische Algorithmen und deren erwartete Laufzeit:
◮
αi
m
1994 King, Rao, Tarjan: O((n · m log n)/ log n·log
n ) für
m ≥ 2n log n
m
X
xi,j = αi
j=1
und ∀i ∈ [1..m] :
n
X
xi,j = βj .
i=1
1996 Cheriyan, Hagerup, Mehlhorn: O(n3 / log n)
126
125
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Das Transport-Problem kann mit Hilfe eines Netzwerks und eines
MAXFLOW-Problems dargestellt werden:
◮
Interpretation:
◮
Wir betrachten n Produzenten P1 , . . . , Pn , die alle die gleiche
Wahr produzieren. Pi produziert αi Stücke dieser Wahre.
◮
Wir betrachten m Kunden K1 , . . . , Km für die von den
Produzenten hergestellten Wahren. Kunde Kj möchte βj
Stücke dieser Wahre erhalten.
◮
Wir betrachten ein Netzwerk mit n + m + 2 Knoten
{q, s, v1 , . . . , vn , u1 , . . . , um } und n + m + n · m Kanten
E =
v1
σ
σ
α1
Produzent Pi liefert xi,j Stücke der Wahre an den Kunden Kj .
α2
{(q, vi )|1 ≤ i ≤ n} ∪ {(uj , s)|1 ≤ j ≤ m}
∪ {(vi , uj )|1 ≤ i ≤ n, 1 ≤ j ≤ m} .
v2
σ
◮
u1
β1
σ
σ
u2
γ((vi , uj )) :=
β2
σ
q
Als Gewichtsfunktion definieren wir
s
n
X
αi
i=1
γ((q, vi )) := αi
σ
αn
vn
127
βm
σ
σ
γ((uj , s)) := βj
um
für alle i ∈ [1..n] und j ∈ [1..m].
128
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
4 Lineare Programmierung
4.1 Was ist lineare Programmierung
Wir wollen zunächst einige Begriffe definieren:
Definition 10 [Optimierungsprobleme]
◮ Eine Instanz eines Optimierungsproblems ist ein Paar
(F , f ) wobei
Wir erkennen:
◮
◮
Das MAXFLOW-Problem für die so generierte P
Instanz besitzt
immer eine ganzzahlige Lösung f mit W (f ) = ni=1 αi .
◮
Der Flüsse über die Kanten (vi , ui ) entspricht einer Lösung für
das Transport-Problem mit xi,j := f ((vi , uj )).
◮
◮
F eine Menge von möglichen Lösungen und
f : F → R eine Kostenfunktion dieser Lösungen abgibt.
Eine Lösung x ∈ F nennen wir global optimal oder kurz
optimal, wenn für alle y ∈ F gilt
f (x) ≥ f (y ) .
◮
◮
Gesucht ist eine optimale Lösung bezüglich der
Kostenfunktion!
Ein Optimierungsproblem ist eine Menge von Instanz eines
Optimierungsproblems.
130
129
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Die Definition des Transport-Problem gibt uns ein System von
Gleichungen oder Ungleichungen vor und kann recht einfach als ein
Optimierungsproblem (Maximierungsproblem) dargestellt werden:
Anmerkungen zu Definition 10:
◮
F
Die Form von Optimierungsproblemen aus Definition 10
nennen wir auch Maximierungsprobleme, da wir eine Lösung
x ∈ F mit f (x) ≥ f (y ) für alle y ∈ F suchen.
◮
Suchen wir ein x ∈ F mit f (x) ≤ f (y ) für alle y ∈ F , so
sprechen wir auch von einem Minimierungsproblem.
◮
Beispiele für solche Minimierungs- und Maximierungsprobleme
haben wir schon einige in dieser Vorlesung kennen gelernt.
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
∈ Nm×n |
m
X
xi,j
∀i ∈ [1..n] : αi ≤
:= { x = (xi,j )i∈[1..n],
j∈[1..m]
∀j ∈ [1..m] : βj ≤
f (x) :=
X
j=1
n
X
i=1
xi,j }
xi,j .
i∈[1..n], j∈[1..m]
Optimierungsprobleme dieser Form nennen wir auch lineare
Programme.
131
132
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Definition 11 (Teil 2) Einen Vektor ~x nennen wir eine zulässige
Lösung des Optimierungsproblems, falls:
Definition 11 [Lineares Optimierungsproblem (LP)] Ein
lineares Optimierungsproblem über einem geordneten Ring R ist
folgendermaßen spezifiziert:
◮
◮
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Gegeben sind zwei Vektoren




b1
c1




~c =  ...  ∈ R n und ~b =  ...  ∈ R m .
bm
cn
Für alle i ∈ [1..m] die Bedingung
n
X
j=1
ai,j · xj
≤ bi
erfüllt ist. Kompakt schreiben wir auch A · ~x ≤ ~b.
Gesucht ist eine zulässige Lösung x, welche
und eine Matrix


a1,1 . . . a1,n

..  ∈ R m×n .
..
A =  ...
.
. 
am,1 . . . am,n
Z
=
n
X
j=1
c j · xj
oder kompakt Z = ~c T · ~x maximiert, wobei ~c T die Transponierte
von ~c bezeichnet.
134
133
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Beispiel: Optimale Produktion
◮ Ein klassisches Beispiel für die lineare Programmierung aus
der Ökonomie stellt die Optimierung einer Produktion unter
gegebenen Randbedingungen dar.
◮ Ein Unternehmen möchte den Gewinn, den es mit einer
Maschine macht, optimieren.
Definition 11 (Teil 3) Im Wesentlichen betrachten wir lineare
Programme über Z, Q und R und unterscheiden daher zwischen
◮
Integer linearen Programmen (ILP) oder ganzzahligen
linearen Programmen mit R = Z,
◮
rationalen linearen Programmen (QLP) mit R = Q und
◮
◮
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
reelen linearen Programmen (RLP) mit R = R.
◮
Beim linearen Programmieren stellen wir ein Optimierungsproblem
mit Hilfe eines Systems von linearen Ungleichungen über n
Unbekannten dar. Ferner geben wir eine lineare Zielfunktion an,
die es zu optimieren gilt, d.h. deren Wert es zu maximieren bzw.
zu minimieren gilt.
Diese Maschine kann zwei Produkte P1 und P2 herstellen.
Eine Einheit von P1 kann mit Gewinn von 7 Euro und eine
Einheit von P2 mit Gewinn von 4 Euro verkauft werden.
Sei x1 die Anzahl der Einheiten, die die Maschine von dem
Produkt P1 herstellt, und x2 die Anzahl der Einheiten, die die
Maschine von dem Produkt P2 herstellt, dann gilt es, die
Produktion so einzustellen, dass wir den Wert von
g (x1 , x2 ) := 7 · x1 + 4 · x2
◮
135
maximieren.
Es existieren jedoch einige Bedingungen, die wir bei der
Einstellung der Maschine, d.h. bei der Bestimmung der
optimalen Werte x1 und x2 , berücksichtigen müssen.
136
x2
6000
5000
4000
5000
3000
x1
2000
Vertrag P1
140
Zum Vergleich: Die benachbarten Eckpunkte 1000/4000 und
3000/1200 haben die Zielwerte 23000 bzw. 25800.
◮
139
Solche Einschränkungen nennen wir redundant.
◮
Im obigen Fall führt jede Ungleichung zu einer Einschränkung
der Lösungsmenge. Dieses ist nicht immer der Fall. Gilt für
den Rohstofflieferung x1 ≤ 4000, so führt dieses zu keiner
Einschränkung der Lösungsmenge.
◮
4000
3000
Maschinenzeit
(min)
1000
Lagerplatz
Umwelt
2000
Rohstoffzulieferung
Maschinenzeit (max)
1000
Der optimale Gewinn (Zielwert) ist 7 · 2200 + 4 · 2800 = 26600.
x1
1000
Vertrag P2
◮
Unter ihnen ist die mit den
optimalen Zielwerten für
g (x1 , x2 ) ausfindig zu machen.
2000
Genau die Tupel (x1 , x2 ), die
konform zu allen Restriktionen
sind, sind Lösungen unseres
Systems.
◮
3000
200/1700
800/500
3000/500
3000/1200
2200/2800
200/4000
1000/4000
4000
x2
5000
Das Ungleichungssystem faßt
die Einschränkungen über den
Lösungsraum zusammen.
◮
Andreas Jakoby
Universität zu Lübeck
◮
Gesucht ist die höchste Gerade,
die das Planungsvieleck
1000 2000 3000 4000 5000 6000
berührt.
◮ In unserem Fall ist der Punkt 2200/2800 optimal.
Weiter oben verlaufenden
Geraden stellen höhere Gewinne
dar.
◮
◮
Die zusätzlichen Linien stellen
eine Auswahl von möglichen
Gewinngleichungen
g (x1 , x2 ) = c für verschiedene
Gewinne c dar.
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Bei der Produktion von P2 werden 5 g eines umweltpolitisch
nicht unbedenklichen Gases freigesetzt. Der monatliche
Ausstoß dieses Gases soll daher auf 20.000 g beschränkt sein.
Wir erhalten
5 · x2 ≤ 20000 .
◮
Die Produktion von P1 benötigt 3 Liter eines Rohstoffs pro
Einheit, von dem im Monat 9000 Liter zur Verfügung stehen.
Es gilt somit
3 · x1 ≤ 9000 .
◮
4 · x1 + 2 · x2 ≤ 14400 .
◮
138
137
Und schließlich muss jedes Produkt nach der Herstellung eine
gewisse Zeit gelagert werden. Die monatliche Lagerkapazität
des Unternehmens beschränkt sich auf 5000 Einheiten. Wir
erhalten
x1 + x2 ≤ 5000 .
◮
4 · x1 + 2 · x2 ≥ 4200 .
Wird die Maschine weniger als 4200 Minuten im Monat
eingesetzt, dann besteht die Gefahr, dass sie Schaden nimmt.
Um dieses zu verhindern fordern wir
◮
und x2 ≥ 500 .
x1 ≥ 200
Für 200 Einheiten von P1 und für 500 Einheiten von P2
existieren bereits feste Verträge. Somit gilt
◮
◮
Beschränkungen für die Produktion:
◮
Die Produktion einer Einheit von P1 benötigt 4 Minuten und
die Produktion einer Einheit von P2 benötigt 2 Minuten. Für
die Produktion stehen insgesamt 240 Maschinenstunden im
Monat zur Verfügung, das sind 14400 Minuten. Es gilt somit
◮
Beschränkungen für die Produktion (Teil 2):
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Bei der Bestimmung der optimalen Lösung können zwei Fälle
auftreten:
1. Die Geraden der Punkte gleicher Zielwerte verlaufen
nicht parallel zu einer der relevanten Seiten des Vielecks.
In diesem Fall stellt ein konkreter Eckpunkt des Vielecks
die eindeutige optimale Lösung dar.
2. Die Geraden der Punkte gleicher Zielwerte verlaufen
parallel zu einer der relevanten Seiten des Vielecks. In
diesem Fall hat jeder Punkt entlang dieser Seite
denselben optimalen Zielwert. Insbesondere stellen auch
die beiden Eckpunkte optimale Lösungen dar.
◮
In jedem der beiden Fälle ist eine Ecke des Vielecks optimal.
◮
Es genügt also einfach die Ecken des Planungsvielecks
auszuwerten.
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
◮
Die Auswertung der Eckpunkte ist bei zwei Variablen noch
relativ überschaubar. Bei einer größeren Anzahl von Variablen
– d.h. bei einer höheren Dimension – wird diese Aufgabe
schnell sehr viel schwerer.
◮
Bilden die Einschränkungen kein geschlossenes Vieleck, so ist
der Lösungsraum in einer Richtung unbegrenzt.
◮
In diesem Fall müssen wir die obige Betrachtungen sinngemäß
anpassen.
142
141
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
4.2 Komplexität von linearen Programmen
A∈
◮
und ein Wert z ∈ R.
Frage: Existiert eine Lösung ~x ∈
~c T · ~x ≥ z ist.
R n,
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Der Beweis, dass das Entscheidungsproblem zum ILP in N P liegt,
ist relativ aufwendig und soll an dieser Stelle nicht untersucht
werden. Vielmehr wollen wir hier den einfachen Beweis der
N P-härte vorstellen. Wir gehen davon aus, dass
Um die Komplexität der eingeschränkten Versionen von linearen
Programmen zu analysieren betrachten wir naheliegende
Abwandlungen von linearen Programmen als
Entscheidungsproblem:
◮ Gegeben sind die beiden Vektoren ~
b ∈ R m , ~c ∈ R n , die Matrix
R m×n
Andreas Jakoby
Universität zu Lübeck
◮
so dass A · ~x ≤ ~b und
N P und N P-hart bzw. N P-schwierig,
◮
polynomial-Zeit- und logarithmisch-Platz-reduzierbar sowie
◮
das 3-SAT Problem
dem Teilnehmer der Veranstaltung bekannt sind.
Satz 11 Das Entscheidungsproblem zum ILP ist N P-schwierig.
Eine wesentliche Erkenntnis über lineare Programme ist, dass
dieses Entscheidungsproblem in polynomieller Zeit lösbar ist, wenn
wir R = R betrachten. Jedoch ist das Problem N P-vollständig für
den Fall, dass wir eine ganzzahlige Lösung suchen.
Beweis von Satz 11: Um den Satz 11 zu beweisen, wollen wir
eine Reduktion von 3-SAT auf das Entscheidungsproblem zum ILP
angegeben.
143
144
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 11 (Teil 3): Für die auf der letzten Folie
beschriebene Instanz des 3-SAT Problems generieren wir folgende
Instanz für das ILP-Entscheidungsproblem:
◮ Für jede Variable xi des 3-SAT Problems betrachten wir zwei
Variablen yi0 und yi1 in unserem linearen Programm.
◮ Wir generieren folgende Ungleichungen:
Beweis von Satz 11 (Teil 2): Wir betrachten eine Instanz des
3-SAT Problems:
◮
Gegeben ist eine Folge von Klauseln C1 , . . . , Cm über den
Variablen x1 , . . . , xn mit
α
α
α
= xi,1i,1 ∨ xi,2i,2 ∨ xi,3i,3
Ci
yi0 + yi1 ≤ 1 und
∈ {x1 , . . . , xn }
xi,1 , xi,2 , xi,3
−yi0 ≤ 0 und
Hierbei gilt
α
xi,ji,j
:=
x i,j
xi,j
− yi0 − yi1 ≤ −1
sowie
∈ {0, 1} .
αi,1 , αi,2 , αi,3
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
für αi,j = 0
für αi,j = 1 .
◮
− yi1 ≤ 0 .
Diese beiden Ungleichungen garantieren in einer zulässigen
Lösung des ILPs, dass genau eine dieser Variable yi0 , yi1 den
Wert 1 und eine den Wert 0 hat.
α
α
α
Für jede Klausel Ci = xi,1i,1 ∨ xi,2i,2 ∨ xi,3i,3 generieren wir die
folgenden Ungleichung
α
α
α
−yi,1i,1 − yi,2i,2 − yi,3i,3 ≤ −1 .
145
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 11 (Teil 4): Optimieren wollen wir die Summe
aller Variablen und wählen
n
X
i=1
(yi0 + yi1 ) ≥ n .
C1 ∧ C2 ∧ . . . ∧ Cm .
Dann gilt:
◮
⇐⇒
xi = 0
yi1 = 1
⇐⇒
xi = 1
Aufgund unserer Vereinbarung gilt yi1 = bi und yi0 = 1 − bi ,
und somit
yi0 + yi1 = 1 − bi + bi
eine erfüllende Belegung besitzt. Hierbei können wir
=1
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 11 (Teil 5): Sei x1 = b1 , . . . , xn = bn eine
erfüllende Belegung für
Es ist einach zu erkennen, dass jede zulässige Lösung des
Ungleichungssystems von Folie 146 diese Ungleichung erfüllt. Wir
wollen nun zeigen, dass das ILP genau dann eine zulässige Lösung
besitzt, wenn
C1 ∧ C2 ∧ . . . ∧ Cm
yi0
146
= 1.
Folglich sind alle Ungleichungen vom Typ
yi0 + yi1 ≤ 1 und
und
− yi0 − yi1 ≤ −1
erfüllt.
wählen.
147
148
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 11 (Teil 6):
◮
Da x1 = b1 , . . . , xn = bn eine erfüllende Belegung ist, gibt es
α
α
für jede Klausel Ci ein Literal xi,ji,j mit xi,ji,j = 1. Somit gilt
α
yi,ji,j = 1. Somit gilt
α
α
Beweis von Satz 11 (Teil 7):
Sei y10 = 1 − y11 = b1 , . . . , yn0 = 1 − yn1 = bn eine zulässige Lösung
des ILPs. Dann gilt für alle Klauseln Ci , dass
α
yi,1i,1 + yi,2i,2 + yi,3i,3 ≥ 1 .
◮
α
Somit sind auch alle Ungleichungen vom Typ
α
α
α
α
−yi,1i,1 − yi,2i,2 − yi,3i,3 ≤ −1
α
Somit gilt xi,ji,j = 1 und folglich ist auch die Klausel Ci erfüllt.
α
−yi,1i,1 − yi,2i,2 − yi,3i,3 ≤ −1
erfüllt.
◮
Es gibt somit eine zulässige Lösung.
150
149
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
4.3 Geometrische Interpretation von linearen Programmen
x3
Eine geometrische Interpretation von linearen Programmen haben
wir bereits in dem Beispiel auf den Folien 139 und 140 vorgestellt.
◮
Jede Gleichung
n
X
j=1
ai,j · xj
◮
(0, 0, 3)
(1, 0, 3)
= bi
x1 +
x1
(0, 2, 3)
−x1 +
Eine Ungleichung
(0, 0, 0)
n
X
j=1
x1
(2, 0, 0) ◮
ai,j · xj
≤ bi
definiert einen Halbraum des n-dimensionalen
Raums auf der
Pn
richtigen Seite der Hyperebene j=1 ai,j · xj = bi .
◮
x2
151
(0, 2, 0)
(2, 2, 0)
x3 ≤
≤
x3 ≤
+
x3 ≤
+
x3 ≤
≤
−x3 ≤
x2 +
(2, 0, 2)
mit festen Werten ai,j und bi definiert eine n − 1-dimensionale
Hyperebene im n-dimensionalen Raum.
◮
Ungleichungen:
3x2
x2
−x2
4
2
3
6
0
0
0
Blau ist die Hyperebene x3 = 3
eingezeichet.
Der Halbraum x3 ≤ 3 befindet
sich unter der Hyperebene.
152
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
x3
◮
(0, 0, 3)
(1, 0, 3)
(2, 0, 2)
◮
(0, 2, 3)
◮
x1
(0, 0, 0)
x2
(0, 2, 0)
(2, 0, 0)
(2, 2, 0)
Mit S bezeichnen wir die
Menge aller zulässigen
Lösungen.
◮
◮
S ist der Schnitt aller
durch die Hyperebenen
beschriebenen Halbräume.
Das LP heißt unlösbar, falls es keine zulässige Lösung besitzt.
Für die Ringe der rationalen und reellen Zahlen gilt:
◮
◮
◮
Mit Sopt ⊆ S wir die
Menge der optimalen
zulässigen Lösungen, die
Menge der zulässigen
Lösungen für die die
Zielfunktion Z = ~c T · ~x
maximal ist.
◮
Ist S beschränkt, so bildet S ein konvexes Polyeder.
Sopt ist entweder leer, einelementig oder unendlich groß.
Ist Sopt 6= ∅, dann enthält die Menge Sopt mindestens einen
Eckpunkt des durch A · ~x ≤ ~b beschriebenen Polyeders.
Ist Sopt leer, obwohl S nicht leer ist, dann kann die
Zielfunktion Z beliebig groß werden. In diesem Fall nennen wir
das LP unbeschränkt.
153
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
154
Algorithmik WS 06/07
6. Vorlesung, 20.11.2006
Andreas Jakoby
Universität zu Lübeck
4.4 Formen linearer Programme
Bevor wir auf den Simplex-Algorithmus eingehen, wollen wir noch
auf eine Vereinfachung eingehen:
◮
◮
◮
1
◮
Wir erhalten folgende Variante des LPs
◮
Maximiere
xj+ , xj−
Wir ersetzen jede Variable xj durch ein Paar
von
+
−
Hilfsvariablen für die wir xj ≥ 0 und xj ≥ 0 verlangen. Diese
Ungleichungen nehmen wir in unser Ungleichungssystem mit
auf.
Z
=
n
X
j=1
◮
Hierbei substituieren wir das Vorkommen von xj durch
xj+ − xj− .
P
Wir führen für jede Bedingung nj=1 ai,j · xj ≤ bi führen wir
eine P
sogenannte Schlupfvariable1 yi ein, die angibt, um wie
viel nj=1 ai,j · xj kleiner als bi ist.
cj · (xj+ − xj− )
unter den Bedingungen
yi +
n
X
j=1
und
ai,j · (xj+ − xj− ) = bi
x1+ , x1− , . . . , xn+ , xn− , y1 , . . . , ym
≥ 0.
Nicht Schlumpfvariable!
155
156
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Formen von linearen Programmen
In der Literatur unterscheiden wir drei Formen von linearen
Programmen über einem Ring R:
◮ die generelle Form:
◮
◮
◮
◮
◮
◮
◮
◮
gegeben. Abhängig vom Typ des linearen Programms
unterscheiden wir zwischen dem Minimierungproblem, bei dem
die Zielfunktion zu minimieren ist, und dem
Maximierungsproblem, bei dem die Zielfunktion zu maximieren
ist.
für alle i ∈ N1 gilt xi ≤ 0,
für alle i ∈ N2 gilt xi ≥ 0 und
für alle i ∈ N3 ist die Variable xi nicht weiter beschränkt.
Ferner ist ein Vektor ~c ∈ R n und somit die Zielfunktion
gegeben. Abhängig vom Typ des linearen Programms
157
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
die Standardform:
◮
◮
158
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Gegeben ist eine Matrix A ∈ R
und ein Vektor ~b ∈ R m .
n
Damit eine Lösung ~x ∈ R gültig ist, müssen die folgenden
Bedingung erfüllt ist:
m×n
A · ~x
◮
Ferner ist ein Vektor ~c ∈ R n und somit die Zielfunktion
~c T · ~x
für alle i ∈ M1 gilt Ai · ~x ≤ bi ,
für alle i ∈ M2 gilt Ai · ~x = bi und
für alle i ∈ M3 gilt Ai · ~x ≥ bi .
~c T · ~x
◮
die generelle Form (Teil 2):
Sie 0 das neutrale Element in R bezüglich der Addition, dann
gibt es eine Poritionierung N1 , N2 , N3 von {1, . . . , n}, so dass
◮
◮
◮
Gegeben ist eine Matrix A ∈ R m×n und ein Vektor ~b ∈ R m .
Desweiteren ist eine Partition von {1, . . . , m} in drei paarweise
disjunkte Teilmengen M1 , M2 , M3 gegeben. Seien A1 , . . . , An
die Zeilenvektoren der Matrix A. Damit eine Lösung ~x ∈ R n
gültig ist, müssen die folgenden Bedingungen erfüllt sein:
die kanonische Form:
◮
≤ ~b .
Gegeben ist eine Matrix A ∈ R m×n und ein Vektor ~b ∈ R m .
Damit eine Lösung ~x ∈ R n gültig ist, müssen die folgenden
Bedingung erfüllt ist:
A · ~x
Sie 0 das neutrale Element in R bezüglich der Addition, dann
gibt
xi ≥ 0 .
◮
Ferner ist ein Vektor ~c ∈ R n und somit die Zielfunktion
◮
= ~b .
Sie 0 das neutrale Element in R bezüglich der Addition, dann
gibt
xi ≥ 0 .
Ferner ist ein Vektor ~c ∈ R n und somit die Zielfunktion
~c T · ~x
~c T · ~x
gegeben. Gesucht ist eine Lösung ~x ∈ R n , die die Zielfunktion
zu minimiert.
gegeben. Gesucht ist eine Lösung ~x ∈ R n , die die Zielfunktion
zu minimiert.
159
160
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
4.5 Der Simplex-Algorithmus
Der Simplex-Algorithmus (1951 von G. Dantig vorgestellt) ist das
bekannteste Verfahren zur Lösung linearer Programme. Jedoch
konnte bisher für keine Variante des Simplex-Algorithmus
nachgewiesen werden, dass diese polynomielle Zeit benötigt. Wir
werden daher im Verlauf dieser Vorlesung noch auf andere
Verfahren zum Lösen linearer Programme eingehen.
Es ist recht einfach einzusehen, dass sich jedes lineare Programm
P1 , welches in der generellen Form gegeben ist, auch als ein
lineares Programm P2 in kanonischer Form so darstellen läßt, dass
aus einer optimalen Lösung von P2 eine optimale Lösung von P1
abgeleitet werden kann. Die jeweiligen Transformationen können
linearer Zeit2 ausgeführt werden.
Der Simplex-Algorithmus arbeitet in drei Phasen:
◮
◮
◮
Phase 1: Finde eine Basislösung oder zeige, dass das LP
unlösbar ist.
Phase 2: Finde eine zulässige Basislösung oder zeige, dass
das LP unlösbar ist.
Phase 3: Verbessere die aktuelle zulässige Basislösung
solange, bis
◮
2
◮
Die lineare Zeit bezieht sich auf das Modell einer RAM.
die aktuelle zulässige Basislösung optimal (d.h. minimal) ist
oder gezeigt werden kann, dass das LP unlösbar ist.
161
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
~x ist eine zulässige Lösung des LP mit A, ~b, ~c , wenn
A · ~x = ~b und ~x ≥ 0 ist.
◮
Es existieren m linear unabhängiger Spalten Aj1 , . . . , Ajm in A
und die Matrix B = (Aj1 , . . . , Ajm ).
◮
Da B eine nicht-singuläre m × m-Matrix ist, existiert die
Inverse B −1 .
Sei ~x B := B −1 · ~b, dann erfüllt x ∈ Rn mit
B
xi falls j = ji ist und
xj =
0
sonst
◮
Sei A eine Matrix vom Rang m, d.h. die Zeilen von A sind linear
unabhängig. Seien Aj1 , . . . , Ajm m linear unabhängiger Spalten und
B = (Aj1 , . . . , Ajm ) die Matrix, die sich aus diesen Spalten
zusammensetzt.
◮ ~
x B ist eine Basislösung des LP mit A, ~b, ~c , wenn B · ~x B = ~b
◮
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Beobachtung 5 Sei A eine Matrix deren Zeilen linear unabhängig
sind, dann gilt:
Definition 12 Sei A ∈ Rm×n , ~b ∈ Rm , ~c ∈ Rn ein LP in
kanonischer Form mit m ≤ n. Mit A1 , . . . , An bezeichnen wir die
Spalten von A, d.h. Aj ist die j-te Spalte von A.
◮ ~
x ist eine Lösung des LP mit A, ~b, ~c , wenn A · ~x = ~b ist.
◮
162
ist.
◮
~x B ist eine zulässige Basislösung des LP mit A, ~b, ~c , wenn
B · ~x B = ~b und ~x B ≥ 0 ist.
◮
die Gleichung A · ~x = ~b.
Ist ~x B ≥ 0, dann ist auch ~x ≥ 0.
Sei ~c B := (cj1 , . . . , cjm ), dann gilt
~c T · ~x
163
= (~c B )T · ~x B .
164
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Lemma 12 Besitzt ein kanonisches lineares Programm eine
zulässige Lösung, dann gibt es für dieses lineare Programm auch
eine zulässige Basislösung.
Beobachtung 5 (Teil 2)
◮
Beweis von Lemma 12: Sei ~x ∈ Rn eine zulässige Lösung und sei
p ≤ n die Anzahl der Variablen xi mit xi > 0.
◮ Durch Vertauschen der Spalten in A und der Positionen in ~
x , ~c
können wir garantieren, dass x1 , . . . , xp größer 0 sind.
◮ Da ~
x eine zulässige Lösung ist, gilt xi = 0 für alle
i ∈ [p + 1..n], es gilt somit
Sei Y := B −1 · A und ~z := ((~c B )T · Y )T , dann gilt
~z T · ~x
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
= (~c B )T · B −1 · A · ~x
= (~c B )T · B −1 · ~b = (~c B )T · ~x B .
Im Folgenden gehen wir zunächst davon aus, dass die Zeilen von A
linear unabhängig sind.
p
X
Der Einfachheit halber nennen wir die Lösung ~x , die wir aus ~x B
gemäß der Regel auf der Folie 164 konstruieren auch Basislösung.
j=1
◮
xj · Aj
= ~b .
Sind A1 , . . . , Ap linear unabhängig, dann ist p ≤ m und wir
können A1 , . . . , Ap mit Hilfe von m − p weiteren Spalten aus
A zu einer Matrix B ergänzen. ~x B ist somit eine zulässige
Basislösung.
165
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Die Lösung
xj′
Es existieren p Werte α1 , . . . , αp , von denen zumindest ein
Wert αr ungleich 0 ist, so dass
p
X
j=1
αj · Aj
j∈[1..p]\{r }
◮
xj −
αj
· xr
αr
=
xj −
0
αj
αr
xj −
· xr
für j ∈ [1..p] \ {r }
sonst.
ist zulässige, wenn für alle j ∈ [1..p] \ {r }
= 0
ist. Dann gilt
X
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 12 (Teil 3):
Beweis von Lemma 12 (Teil 2):
◮ Sind A1 , . . . , Ap linear abhängig, dann sind nicht alle diese
Spalten in einer Matrix B enthalten. Es gilt:
◮
166
αj
· xr
αr
≥ 0
ist.
· Aj
= ~b .
◮
◮
Wir erhalten eine Lösung mit höchstens p − 1 Einträgen
ungleich 0. Wir müssen jedoch zunächst annehmen, dass dieses
keine zulässig Lösung ist.
Ist αj = 0, so ist dieses erfüllt.
Ist αj =
6 0, so muss
◮
◮
167
xj
xr
−
≥ 0 für αj > 0 und
αj
αr
xj
xr
−
≤ 0 für αj < 0 sein.
αj
αr
168
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Um diese Bedingungen zu erfüllen wählen wir entweder
xj xr
αj > 0
= min
αr
αj j∈[1..p]
oder
◮
xr
αr
=
max
j∈[1..p]
xj αj < 0
.
αj und die r -te Zeile durch
1
· (ar ,1 , . . . , ar ,n ) .
ar ,s
◮
Wir können diesen Schritt wiederholen, bis eine zulässige
Basislösung entstanden ist.
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Eine zentrale Komponente im Simplex-Algorithmus ist die
Pivotierung oder die Gaußelimination:
◮ Sei ar ,s 6= 0 ein Eintrag in A.
◮ Wir ersetzen jede Zeile von A mit i 6= r durch
ai,s
· (ar ,1 , . . . , ar ,n )
(ai,1 , . . . , ai,n ) −
ar ,s
Beweis von Lemma 12 (Teil 4):
◮
Andreas Jakoby
Universität zu Lübeck
◮
◮
Durch diesen Schritt wird aus der s-ten Spalte
(0, . . . , 0, 1, 0, . . . , 0), wobei die 1 an der r -ten Stelle steht.
Um eine Basislösung zu finden, wählen wir iterativ für
i = 1, 2, . . . , m ein ai,ji 6= 0 in Zeile i und pivotieren auf ai,ji .
Auf diese Weise wählen wir m linear unabhängige Spalten
Aj1 , . . . , Ajm von A und bestimmen eine Basislösung ~x B mit
B = (Aj1 , . . . , Ajm ).
170
169
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Phase 1: Finde eine Basislösung:
◮
Algorithmus Pivotieren(A, r , s)
Eingabe: k × ℓ-Matrix A, Position r ∈ [1..k] und s ∈ [1..ℓ]
Ergebnis: modifizierte Matrix A mit s-ter Spalte
(0, . . . , 0, 1, 0, . . . , 0)
1: for i = 1 to k by +1 with i 6= r do
a
2:
(ai,1 , . . . , ai,ℓ ) := (ai,1 , . . . , ai,ℓ ) − ari,s,s · (ar ,1 , . . . , ar ,ℓ )
3: end for
4: (ar ,1 , . . . , ar ,ℓ ) := a1 · (ar ,1 , . . . , ar ,ℓ )
r ,s
5: Return(A)
◮
◮
171
Mit Hilfe von Tableaus reduziert sich der
Simplex-Algorithmus darauf, bezüglich bestimmter Einträge
zu pivotieren.
Ein Tableau eines kanonischen linearen Programms ist die
(m + 1) × (n + 1)-Matrix
A ~b
.
T :=
~c T 0
Sei B ∈ Rm×m eine invertierbare Teilmatrix von A, wie wir sie
auf der Folie 163 beschrieben haben. Zur Vereinfachung gehen
wir davon aus, dass die Spalten von B durch die ersten m
Spalten von A gegeben sind, dann hat das Tableau die Form
B
Am+1 . . . An ~b
T :=
.
(c B )T cm+1 . . . cn 0
172
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
◮
Algorithmik WS 06/07
7. Vorlesung, 27.11.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmus Finde-Basislösung(T )
Multiplizieren wir dieses Tableau von links mit
B −1
0
.
(~c B )T · B −1 1
A ~b
Eingabe: m + 1 × n + 1-Tableau T =
~c T 0
Ergebnis: Tableau mit Basislösung ~x B oder infeasible
1: r := 1
2: while r ≤ m do
3:
s := min({j ∈ [1..n]|T [r , j] 6= 0} ∪ {∞})
4:
if s = ∞ ∧ T [r , n + 1] 6= 0 then Return(infeasible)
5:
else if s = ∞ ∧ T [r , n + 1] = 0 then
6:
for i = r + 1 to m + 1 by +1 do
7:
(T [i − 1, 1], .., T [i − 1, n + 1]) := (T [i, 1], .., T [i, n + 1])
8:
end for
9:
m := m − 1
10:
else setze T :=Pivotieren(T , r , s), jr := s und r := r + 1
11:
end if
12: end while
13: Return(T , j1 , . . . , jm )
so erhalten wir
~x B
~x B
Y
I
Ym+1
...
Yn
=
~c T − ~z T −Z
0 cm+1 − zm+1 . . . cn − zn −Z
wobei I die m × m-Einheitsmatrix ist.
◮
Algorithmisch können wir dieses mit Hilfe der Pivotierung und
dem Algorithmus Finde-Basislösung auf Folie 174 lösen.
◮
Hierbei ist zu beachten, dass wir in diesem Algorithmus nicht
davon ausgehen, dass sich B in den ersten m Spalten von A
befindet. Ferner gehen wir nicht davon aus, dass die Zeilen
von A linear unabhängig sind.
173
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
174
◮
Sei ~e = (e1 , . . . , em )T ∈ Rm mit
−1 falls xiB < 0 und
ei =
0
falls xiB ≥ 0
◮
Sei x0 eine neue Variable, dann betrachten wir das neue
kanonische lineare Programm KLP 2:
Phase 2: Finde eine zulässigen Basislösung:
◮
In Phase 1 haben wir eine Basislösung ~x B = B −1 · ~b des
kanonischen Programms KLP 1:
◮
◮
minimiere Z = ~c T · ~x
unter der Bedingung A · ~x = ~b und ~x ≥ 0
◮
gefunden und dabei das Tableau
~x B
Y1
...
Yn
c1 − z1 . . . cn − zn −Z
◮
◮
berechnet.
◮
Ist xiB < 0 für eine Zeile i, dann ist die gefundene Lösung
nicht zulässig.
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
minimiere Z ∗ = x0
unter der Bedingung ~e · x0 + Y · ~x = ~x B und x0 , ~x ≥ 0.
Wir betrachten hierbei das Tableau


~e
~x B
Y1
...
Yn
T ∗ =  0 c1 − z1 . . . cn − zn −Z 
1
0
...
0
0
mit den Spalten 0 bis n + 1 und den Zeilen 1 bis m + 2. Die
Zeile m + 1 belassen wir zur Vereinfachung im Tableau. Sie
wird nicht berücksichtigt, wenn wir das LP lösen. Wir
modifiziere sie jedoch beim pivotieren.
175
176
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 13 (Teil 2):
◮
Lemma 13 KLP 2 ist immer lösbar und hat einen nicht-negativen
Wert.
Beweis von Lemma 13:
◮
Sei r die Zeile, für die xrB minimal ist.
◮
Wir pivotieren auf Zeile r und Spalte s = 0.
◮
Hierbei gilt T ∗ [r , s] = −1 und
−1 falls xiB < 0 und
∗
T [i, s] =
0
sonst.
Durch die Pivotierung erhalten wir
(T ∗ [i, 0], . . . , T ∗ [i, n + 1])

−(T ∗ [r , 0], . . . , T ∗ [r , n + 1])




falls i = r



(T ∗ [i, 0], . . . , T ∗ [i, n + 1])
=
falls i 6= r und xiB ≥ 0



∗
∗


(T [i, 0], . . . , T [i, n + 1]) − (T ∗ [r , 0], . . . , T ∗ [r , n + 1])


falls i 6= r und xiB < 0 .
◮
Somit ist das Ergebnis eine zulässige Lösung des KLP 2.
◮
Wegen x0 ≥ 0 kann der optimale Wert nicht negativ sein.
Beachte: Nach dem im Beweis beschriebenen Schritt liegt uns
eine zulässige Basislösung des KLP 2 vor, und wir können diese
analog zu Phase 3 verbessern!
177
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Lemma 14 KLP 1 ist genau dann lösbar, wenn das dazugehörige
LP KLP 2 eine Lösung mit dem Wert Z ∗ = 0 besitzt. Ist Z ∗ = 0
für x0 , ~x ≥ 0, dann ist ~x eine zulässige Lösung von KLP 1.
178
Beweis von Lemma 14 (Teil 2):
◮
Beweis von Lemma 14:
◮
◮
= ~x
= Y · ~x
und folglich
Wir betrachten zunächst den Fall, dass Z ∗ = x0 = 0 ist. Dann
gibt es ein ~x ≥ 0 in Rn , so dass
= Y · ~x
Somit gilt für diese Lösung
B −1 · A · ~x
Nach Lemma 13 ist der Wert der Zielfunktion Z ∗ von KLP 2
nicht negativ.
~e · x0 + Y · ~x
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
A · ~x
◮
B
= ~x B
= B −1 · ~b
= ~b .
Dieses ~x ist folglich eine zulässige Lösung des ursprünglichen
LP KLP 1.
ist (siehe Bedingung von KLP 2).
179
180
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 14 (Teil 3): Wir betrachten nun die
Rückrichtung:
◮ Sei ~
x eine zulässige Lösung von KLP 1, d.h. A · ~x = ~b.
◮
◮
Um eine erste zulässige Basislösung zu finden können wir wie folgt
vorgehen:
Dann gilt
◮
Wir generieren aus einer Basislösung für ein kanonisches
lineares Programm ein neues kanonisches lineares Programm
in der Form von KLP 2.
Folglich ist x0 = 0 zusammen mit diesem Vektor ~x eine
zulässige Lösung für das KLP 2, wobei der Wert der
Zielfunktion
Z ∗ = x0 = 0
◮
Wir bestimmen eine zulässige Basislösung für dieses LP wie
im Beweis von Lemma 13 beschrieben.
◮
Verfahren analog zur Phase 3 um eine optimale Lösung zu
finden.
ist.
◮
Interpretiere diese Lösung wie in Lemma 14 beschrieben.
Y · ~x
◮
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
= B −1 · A · ~x
= B −1 · ~b = ~x B .
Da eine Bedingung des KLP 2 x0 ≥ 0 ist, ist diese Wert der
Zielfunktion minimal.
181
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Algorithmus Finde-zulässige-Basislösung(T
, j1 , . . . , jm ) ~x B
Y
Eingabe: m + 1 × n + 1-Tableau T :=
T
T
~c − ~z
−Z
B
Ergebnis: Tableau mit zulässiger Basislösung ~x oder infeasible
1: if ∀i ∈ [1..m] : T [i, n + 1] ≥ 0 then Return(T , j1 , . . . , jm ) end if
2: generiere in T Spalte 0 und Zeile m + 2
3: T [m + 2, 0] := 1, T [m + 1, 0] := 0
4: for i = 1 to n + 1 by +1 do T [m + 2, i] := 0 end for
5: for i = 1 to m by +1 do
6:
if T [i, n + 1] < 0 then T [i, 0] := −1 else T [i, 0] := 0 end if
7: end for
8: wähle r ∈ [1..m] mit T [r , n + 1] ≤ T [i, n + 1] für alle i ∈ [1..m]
9: setze jr := 0 und T :=Pivotieren(T , r , 0)
10: setze H =Verbessere-zulässige-Basislösung-2(T , j1 , . . . , jm )
11: if H =unb ∨ T [m + 2, n + 1] 6= 0 then Return(infeasible) end if
12: setze (T , j1 , .., jm ) := H und entferne in T Spalte 0 und Zeile m + 2
13: Return(T , j1 , . . . , jm )
183
182
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Phase 3: Verbessern einer zulässigen Basislösung:
◮ Da die Idee hinter dem verbessern einer zulässigen Basislösung
einfacher ist, wollen wir diese Phase vorziehen.
◮ Sei ~
x B = B −1 · ~b eine zulässige Basislösung eines kanonischen
linearen Programms und Z = (~c B )T · ~x B .
◮ Sei Y = B −1 · A und Yj = (y1,j , . . . , ym,j ) die j-te Spalte von
Y.
◮ Da B regulär ist, gilt
m
X
yi,j · Bi .
Aj = B · Yj =
i=1
◮
Ist yr ,j 6= 0, dann sind auch die Spalten
B1 , . . . , Br −1 , Aj , Br +1 , . . . , Bm linear unabhängig und wir
können B durch
B ∗ = (B1 , . . . , Br −1 , Aj , Br +1 , . . . , Bm )
∗
ersetzen und eine neue Basislösung ~x B = (B ∗ )−1 · ~b .
184
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
∗
Wir untersuchen nun, unter welchen Voraussetzungen ~x B eine
zulässige Basislösung ist. Es gilt:
◮ Ist xrB = 0, dann sind beide Ungleichungen aus Lemma 15
erfüllt.
◮ Ist xrB 6= 0, dann folgt aus der zweiten Ungleichung von
Lemma 15, dass yr ,j > 0 ist. Ist yi,j < 0, dann ist auch die
erste Ungleichung erfüllt.
∗
◮ Ist xrB 6= 0 und yr ,j < 0, dann ist nach Lemma 15 ~
x B keine
zulässige Basislösung.
◮ Wir müssen nun noch den Fall xrB 6= 0, yr ,j > 0 und yi,j > 0
betrachten.
∗
◮ Damit ~
x B eine zulässige Basislösung ist, muss nach
Lemma 15 in diesem Fall
∗
~x B muss keine zulässige Basislösung sein. Mit Hilfe einiger
elementarer Umformungen folgt:
∗
Lemma 15 ~x B ist genau dann eine zulässige Basislösung, wenn
für alle i ∈ [1..m] \ {r }
xiB − xrB ·
ist und
yi,j
≥ 0
yr ,j
xrB
≥ 0
yr ,j
gilt.
xrB
yr ,i
≤
xiB
yi,j
gelten.
185
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
◮
186
∗
Damit ~x B eine zulässige Basislösung ist, müssen wir r so aus
B auswählen, dass
B xi xrB
=
min
yi,j > 0
=: θ
yr ,i
yi,j i∈[1..m]
Mit Hilfe einiger elementarer Umformungen3 folgt:
Lemma 16 Der Wert der Zielfunktion der zulässige Basislösung
∗
~x B ist
ist.
◮
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Z∗ = Z +
Idee für einen Algorithmus: Wir wählen eine (beliebige) Spalte
Aj von A, die nicht in B vorkommt. Gibt es ein yi,j > 0, dann
gibt es in B eine Spalte Br , die wir durch Aj ersetzen können,
∗
um eine zulässige Basislösung ~x B zu erhalten. Diese Spalte
können wir mit Hilfe der obigen Formel bestimmen.
xrB
· (cj − zj ) = Z + θ · (cj − zj ) .
yr ,j
3
187
und etwas rechnen
188
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Idee für einen Algorithmus:
◮
◮
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Wann liegt eine unbeschränkte Lösung vor?
Wir wählen eine Spalte Aj von A, die nicht in B vorkommt,
für die (cj − zj ) < 0 ist und für die es ein yi,j > 0 gibt.
Wählen wir ein geeignetes Br und ersetzen Br durch Aj , dann
erhalten wir einen neuen Wert der Zielfunktion Z ∗ ≤ Z . Ist
die Basislösung ~x B nicht degeneriert, d.h. ist xrB 6= 0, dann
gilt sogar Z ∗ < Z .
◮
◮
Wir betrachten eine Spalte Aj mit yi,j ≤ 0 für alle i ∈ [1..m].
Es gilt
~b = B · ~x B
=
m
X
Bi · xiB
m
X
Bi · xiB − θ · Aj + θ · Aj
m
X
Bi · yi,j .
i=1
wobei der Wert der Zielfunktion Z = (~c B )T · ~x B ist.
Bezüglich des Tableaus
~x B
I
Ym+1
...
Yn
0 cm+1 − zm−1 . . . cn − zm −Z
◮
Für einen beliebigen Wert θ gilt
~b = B · ~x B − θ · Aj + θ · Aj
von ~x B bedeutet dieses: Wir suchen eine Spalte j mit
negativem Eintrag in der letzten und positivem yi,j in der
i-ten Zeile. Für jeden positiven Eintage yi,j berechnen wir
θi = xiB /yi,j und wählen r , so dass θr minimal ist. Dann
pivotieren wir auf Zeile r und Spalte j.
=
i=1
und
Aj
= B · Yj
=
i=1
190
189
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
◮
m
X
i=1
◮
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Somit ist
~b =
◮
Andreas Jakoby
Universität zu Lübeck
Bi · (xiB − θ · yi,j ) + θ · Aj .
Für unseren Algorithmus merken wir uns:
Ist θ > 0, dann ist xiB − θ · yi,j ≥ xiB ≥ 0 für alle i ∈ [1..m].
◮
Gibt es eine Spalte Aj , die nicht in B vorliegt und für die
sowohl cj − zj < 0 als auch Yj = B −1 · Aj ≤ 0 ist, dann ist
das lineare Programm unbeschränkt.
◮
Gibt es im Tableau eine Spalte j in der kein Eintrag positiv
und der letzte Eintrag negativ ist, dann ist das lineare
Programm unbeschränkt.
Aus der obigen Gleichung erhalten wir eine neue zulässige
Lösung für das LP:
xi
=
xiB
− θ · yi,j für i ∈ [1..m]
und
xj
◮
◮
= θ.
Als Wert der Zielfunktion erhalten wir Z ∗ = Z + θ · (cj − zj ).
Ist cj − zj < 0, dann können wir den Wert der Zielfunktion
beliebig klein machen.
191
192
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 17 (Teil 2):
◮ Sei ~
x ′ eine beliebige zulässige Lösung des LPs und
Z ′ = ~c T · ~x ′ der dazugehörige Wert der Zielfunktion.
◮ Für alle Lösungen ~
x (also insbesondere auch für ~x ′ ) gilt
Wann ist eine zulässige Lösung optimal?
Lemma 17 Sei ~x B = B −1 · ~b eine zulässige Basislösung des
kanonischen linearen Programms A, ~b, ~c wobei Z = (~c B )T · ~x B . Ist
cj − zj ≥ 0 für alle Spalten Aj , die nicht zu B gehören,4 dann ist Z
minimal und ~x B beschreibt eine optimale zulässige Lösung für das
lineare Programm.
B · ~x B = b = A · ~x = B · Y · ~x
und somit
~x B
Beweis von Lemma 17:
◮
Jede Spalte Aj von A kann als Linearkombination Aj = B · Yj
geschrieben werden. Wir erhalten
A = B ·Y
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
◮
= Y · ~x .
Betrachten wir nun die Zielfunktion, so erkennen wir, dass
Z = (~c B )T ·~x B = (~c B )T · Y ·~x ′ = ~z T ·~x ′ ≤ c T ·~x ′ = Z ′ .
und ~z T = (~c B )T · Y .
◮
4
Das bedeutet, dass der Wert der aktuellen Lösung nicht durch Austausch
einer Spalte von B mit einer anderen Spalte aus A verbessert werden kann.
Die letzte Ungleichung folgt aus der Tatsache, dass ~z ≤ ~c und
~x ≥ 0 ist.
Z ist somit minimal und folglich ist ~x B eine optimale zulässige
Lösung.
194
193
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Gibt es im Tableau keinen negativen Eintrag in der letzten
Zeile, dann haben wir eine optimale Lösung gefunden.
◮
Um die optimale Lösung auszugeben, suchen wir die m
Spalten j1 , . . . , jm im Tableau , die die m × m-Einheitsmatrix
auf den ersten m Zeilen enthalten. Dann gilt für die optimale
Lösung ~x ∈ Rn :
B
xi falls j = ji ist und
xj =
0
sonst
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Algorithmus Verbessere-zulässige-Basislösung(T , j1 , . . . , jm )
Eingabe: Tableau T ∈ Rm+1×n+1
Ergebnis: Tableau mit optimaler Lösung ~x B oder unbounded
1: while ∃j ∈ [1..n] : T [m + 1, j] < 0 do
2:
if ∃j ∈ [1..n]∀i ∈ [1..m] : T [i, j] ≤ 0 ∧ T [m + 1, j] < 0 then
3:
Return(unbounded) end if
4:
wähle s ∈ [1..n] \ {j1 , . . . , jm } mit T [m + 1, s] < 0
T [i,n+1]
5:
wähle r ∈ [1..m] mit TT[r [r,n+1]
,s] ≤ T [i,s] für alle i ∈ [1..m]
6:
mit T [i, s] > 0 und
T [r , s] > 0
7:
setze T :=Pivotieren(T , r , s) und jr := s
8: end while
9: Return(T , j1 , . . . , jm )
Für unseren Algorithmus gilt:
◮
Andreas Jakoby
Universität zu Lübeck
195
196
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Terminierung
◮ Aus unserer Analyse folgt bis jetzt nicht, ob die Suche nach
einer optimalen Lösung jemals terminiert.
◮ Die Terminierung hängt im wesentlichen von der Wahl des
Pivotelements in Zeile 4 (und 5) der Algorithmen
Verbessere-zulässige-Basislösung und
Verbessere-zulässige-Basislösung-2 ab. Die Regel nach der
dieses Element ausgewählt wird nennen wir Pivotregel.
◮ Wenden wir die smallest-index-Regel an, dann hält die
Suche nach einer optimalen Lösung immer. Die
smallest-index-Regel wählt s, r wie folgt:
Algorithmus Verbessere-zulässige-Basislösung-2(T , j1 , . . . , jm )
Eingabe: Tableau T ∈ Rm+2×n+2
Ergebnis: Tableau mit optimaler Lösung ~x B für KLP 2
oder unb
1: while ∃j ∈ [0..n] : T [m + 2, j] < 0 do
2:
if ∃j ∈ [0..n]∀i ∈ [1..m] : T [i, j] ≤ 0 ∧ T [m + 2, j] < 0 then
3:
Return(unb) end if
4:
wähle s ∈ [0..n] \ {j1 , . . . , jm } mit T [m + 2, s] < 0
T [i,n+1]
5:
wähle r ∈ [1..m] mit TT[r [r,n+1]
,s] ≤ T [i,s] für alle i ∈ [1..m]
6:
mit T [i, s] > 0 und
T [r , s] > 0
7:
setze T :=Pivotieren(T , r , s) und jr := s
8: end while
9: Return(T , j1 , . . . , jm )
◮
◮
wähle s minimal, so dass T [m + 1, s] < 0 bzw. T [m + 2, s] < 0
ist uns
wähle r minimal, so dass T [r , s] > 0 und für alle i ∈ [1..m] mit
T [i, s] > 0
T [i, n + 1]
T [r , n + 1]
≤
T [r , s]
T [i, s]
ist.
197
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Algorithmus Simplex-Algorithmus(A, ~b, ~c )
Eingabe: kanonisches lineares Programm mit m × n-Matrix A,
m-dimensionalem Vektor ~b und
n-dimensionalem Vektor ~c
Ergebnis: optimaler Lösung ~x des kanonischen linearen Programms
A ~b
1: generiere das Tableau T :=
~c T 0
2: H :=Finde-Basislösung(T )
3: if H =infeasible then Return(infeasible) end if
4: H :=Finde-zulässige-Basislösung(H)
5: if H =infeasible then Return(infeasible) end if
6: sei (T , j1 , . . . , jm ) = H
7: if ∃i ∈ [1..m] : ji = 0 then
8:
wähle k ∈ [1..n] \ {j1 , . . . , jm } mit T [i, k] 6= 0
9:
T := Pivotieren(T , i, k), ji := k
10: end if
198
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Simplex-Algorithmus (Teil 2):
11:
12:
13:
14:
15:
16:
17:
199
H :=Verbessere-zulässige-Basislösung(T , j1 , . . . , jm )
if H =unbounded then Return(unbounded) end if
sei (T , j1 , . . . , jm ) = H
for i := 1 to n by +1 do xi := 0 end for
for i := 1 to m by +1 do xji := T [i, n + 1] end for
Z := −T [m + 1, n + 1]
Return(Z , x1 , . . . , xn )
200
Algorithmik WS 06/07
8. Vorlesung, 04.12.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Analysieren wir die Lösungen, die der Simplex-Algorithmus findet,
so erkennen wir:
Beobachtung 6 Bestimmt der Simplex-Algorithmus eine optimale
Lösung, dann ist diese Lösung für ein lineares Programme
A ∈ Nm×n , ein Vektor ~b ∈ Nm und ein Vektor ~c ∈ Nn immer ein
rationaler Vektor ~x ∈ Qn .
Satz 12 Der Simplex-Algorithmus terminiert immer und bestimmt
die optimale Lösung für ein kanonisches lineares Programm
korrekt, wenn wir die smallest-index-Regel anwenden.
Beobachtung 7 Für die zulässigen Basislösungen ~x , die der
Simplex-Algorithmus auf Eingabe eines linearen Programms
A ∈ Nm×n , ein Vektor ~b ∈ Nm und ein Vektor ~c ∈ Nn bestimmt,
gilt ~x ∈ Qn und sowohl die Beträge der Einträge in ~x als auch
deren Nenner sind durch 2L beschränkt, wobei
L = m · n + ⌈log2 |P|⌉
und |P| das Produkt der Einträge in A, ~b und ~c ist, die ungleich 0
sind.
201
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
202
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
4.6 Lineare Ungleichungen
Im Verlauf unserer weiteren Untersuchungen wird sich das folgende
Lemma als sehr hilfreich erweisen:
Im Folgenden wollen wir die folgenden drei Probleme betrachten:
◮
~x ′
Lemma 18 Seien ~x und zwei zulässige Basislösungen eines
linearen Programms in kanonischer Form mit
k · 2−2L < ~c T · ~x , ~c T · ~x ′ ≤ (k + 1) · 2−2L
A · ~x = ~b,
für ein k ∈ N, dann ist ~c T · ~x = ~c T · ~x ′ .
Beweis von Lemma 18: Sei ~c T · ~x 6= ~c T · ~x ′ .
◮
◮
~c T
~x ≥ 0
und ~c T · ~x minimal ist.
◮
~c T
· ~x ′
Nach Beobachtung 7 sind dann
· ~x und
zwei
rationale Zahlen mit jeweils einem Nenner größer 2L .
Somit ist |~c T · ~x − ~c T · ~x ′ | ≥ 2−2L .
Lineare Programme in kanonischer Form: Gegeben sind eine
m × n-Matrix A ∈ Nm×n , ein Vektor ~b ∈ Nm und ein Vektor
~c ∈ Nn . Gesucht ist ein Vektor ~x ∈ Qn , so dass
◮
203
Lineare Ungleichungen: Gegeben sind eine m × n-Matrix
A ∈ Nm×n und ein Vektor ~b ∈ Nm . Frage: Gibt es einen
Vektor ~x ∈ Qn , so dass A · ~x ≤ ~b ist.
Strikte Lineare Ungleichungen: Gegeben sind eine
m × n-Matrix A ∈ Nm×n und ein Vektor ~b ∈ Nm . Frage: Gibt
es einen Vektor ~x ∈ Qn , so dass A · ~x < ~b ist.
204
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Wir wollen nun zeigen:
◮
◮
◮
◮
Die Existenz eines Algorithmus, der das Probleme der lineare
Ungleichungen in Polynomialzeit löst, impliziert die Existenz
eines polynomialzeit Algorithmus für das Problem der linearen
Programme.
Ein wichtiges Hilfsmittel beim folgenden Algorithmus ist die binäre
Suche:
◮
Im Folgenden sei LI-Solve ein Algorithmus zum Lösen des
Problems der linearen Ungleichungen.
◮
Gesucht ist eine Zahl x ∈ N mit 0 ≤ x ≤ h − 1 (h ∈ N).
Um x zu finden, können wir Fragen der Form
Ist x ≥ a?
Zur Vereinfachung stellen wir die Eingabe von LI-Solve als
Ungleichungen dar — auf die Formatierung und die
Zusammenfassung der Koeffizienten in eine Matrix A
verzichten wir.
für beliebige Werte a an ein Orakel stellen.
Es gilt:
Lemma 19 x können wir mit Hilfe von ⌈log2 h⌉ Orakelfragen
finden.
Das Ergebnis von LI-Solve ist 1 oder 0 (bzw. true oder false),
wenn eine Lösung für die lineare Ungleichungen existiert bzw.
nicht existiert.
205
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
206
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
2. Wir testen, ob das LP unbeschränkt ist, indem wir LI-Alg
einmal für das Ungleichungssystem
A · ~x ≥ ~b,
Unser Algorithmus zum Lösen eines kanonischen LPs verfährt wie
folgt:
A · ~x ≤ ~b,
~x ≥ 0,
~c T · ~x ≤ −22L − 1
aufrufen. Aus Beobachtung 7 folgt:
1. Wir testen, ob das LP lösbar ist, indem wir LI-Alg einmal für
das Ungleichungssystem
A · ~x ≥ ~b,
A · ~x ≤ ~b,
◮
~x ≥ 0
◮
aufrufen. Wenn das Ungleichungssystem nicht lösbar ist, dann
ist auch das LP nicht lösbar.
Ist ein LP lösbar und beschränkt, d.h. der Simplex-Algorithmus
findet eine optimale Lösung, dann existiert eine solche Lösung
~x , so dass 0 ≤ xi ≤ 2L für alle i ∈ [1..n] ist.
Betrachten wir den minimalen Wert von ~c T · ~x , so erkennen
wir, dass dieser größer gleich der Summe
−
n
X
i:=1
|ci | · 2L ≥ −2L · (|P| + n) ≥ −22L
ist.
Wenn das obige Ungleichungssystem lösbar ist, dann ist auch
das LP unbeschränkt.
207
208
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
4. Besitzt unser LP eine optimale Lösung ~x und kennen wir den
Wert von k, so dass
3. Besitzt unser LP eine optimale Lösung ~x , dann können wir
den Wert der Zielfunktion für diese Lösung ~x approximieren:
◮
◮
◮
k · 2−2L < ~c T · ~x
Mit Hilfe der binären Suche bestimmen wir den Wert von k, so
dass k · 2−2L < ~c T · ~x ≤ (k + 1) · 2−2L ist.
Da der Betrag von ~c T · ~x maximal 22L ist, gilt
−24L ≤ k
A · ~x ≤ ~b,
≤ 24L .
~x ≥ 0,
T
~c · ~x ≤ 2
−2L
≤ (k + 1) · 2−2L
ist, dann können wir die Werte von j mit xj = 0 in einer
zulässigen optimalen Basislösung ~x Schritt für Schritt für
j = 1, 2, . . . , n bestimmen. Sei S(j) die Menge dieser Indizes,
die wir bis in den Runden 1 bis j − 1 bestimmt haben, d.h.
S(1) = ∅. In der j-ten Runde verfahren wir wie folgt:
Nach Lemma 19 benötigen wir hierzu 4L + 1 Aufrufe von
LI-Alg für Ungleichungssysteme
A · ~x ≥ ~b,
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
◮
Wir rufen LI-Alg für das Ungleichungssysteme
A·~x ≥ ~b,
·a
A·~x ≤ ~b,
~x ≥ 0,
k ·2−2L ≤ ~c T ·~x ≤ (k +1)·2−2L
und
wobei die Werte von a ∈ N durch die Aufrufe der binären
Suche bestimmt.
xj ≤ 0,
◮
∀i ∈ S(j) : xi ≤ 0
auf.
Hat das obige Ungleichungssystem eine Lösung, dann setzen
wir S(j + 1) := S(j) ∪ {j} und ansonsten S(j + 1) := S(j).
210
209
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
5. Sei H := {1, . . . , n} \ S(n + 1).
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
9. Wir ergänzen nun H, so dass über H genau m linear
unabhängig Spalten aus A indiziert werden. Diese Spalten
geben uns eine Matrix B an, wie wir sie im
Simplex-Algorithmus untersucht haben. Wir können somit
eine optimale zulässige Basislösung über
6. Da alle Variablen xj mit j ∈ H einen Wert größer 0 haben
müssen, damit ~x eine optimale Lösung ist, können wir aus
dem Simplex-Algorithmus folgern, dass H maximal m Indizes
beinhaltet.
7. Aus dem Simplex-Algorithmus folgt zudem, dass die durch die
Indizes j ∈ H indizierten Spalten aus A linear unabhängig sind.
~x B
8. Sind die Zeilen aus A linear unabhängig (ansonsten
vereinfachen wir die Problemstellung, indem wir sukzessive
Zeilen aus A entfernen), dann gibt es auch m linear
unabhängig Spalten in A.
:= B −1 · ~b
berechnen.
10. Die Matrix B −1 können wir mit Hilfe der Gaußelimination aus
B in polynomieller Zeit bestimmen.
211
212
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Algorithmus LP-Solve(A, ~b, ~c )
Eingabe: lineares Programm A, ~b, ~c in kanonischer Form
Ergebnis: optimaler Lösung ~x des linearen Programms
1: if ¬LI-Solve(A · ~
x ≥ ~b, A · ~x ≤ ~b, ~x ≥ 0) then
2:
Return(infeasible)
3: else if LI-Solve(A~
x ≥ ~b, A~x ≤ ~b, ~x ≥ 0, ~c T ~x ≤ −22L − 1) then
4:
Return(unbounded)
5: end if
6: δ := 24L−1 , k+1 := 0
7: while δ ≥ 1 do
8:
if LI-Solve(A~x ≥ ~b, A~x ≤ ~b, ~x ≥ 0, ~c T ~x ≤ 2−2L k+1 ) then
9:
k+1 := k+1 − δ, δ := δ/2
10:
else
11:
k+1 := k+1 + δ, if δ > 2 then δ := δ/2 end if
12:
end if
13: end while
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
LP-Solve (Teil 2):
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
sei n die Dimension von ~x und S := ∅
for i = 1 to n by +1 do
if LI-Solve(A~x ≥ ~b, A~x ≤ ~b, ~x ≥ 0, ∀j ∈ S ∪ {i} : xj ≤ 0
~c T ~x ≤ k+1 /22L , ~c T ~x ≥ (k+1 − 1)/22L ) then
S := S ∪ {i}
end if
end for
Sei m die Dimension von ~b und H := [1..n] \ S
if |H| < m then
Ergänze H um m − |H| Spaltenindizes aus A, so dass die über
H indizierten Spalten aus A alle linear unabhängig sind.
end if
Sei H := {j1 , . . . , jm }.
213
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
28:
29:
30:
31:
32:
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Analysieren wir den Algorithmus LP-Solve, so sehen wir, dass wir
ein lineares Programm in kanonischer Form mit Hilfe einer
polynomiellen Anzahl von Aufrufen von LI-Solve lösen können. Da
wir ein System linearer Ungleichungen mit Hilfe eines Aufrufs eines
linearen Programms lösen können folgt:
LP-Solve (Teil 3):
27:
214
Sei B := (Aj1 , . . . , Ajm ) wobei Ai die i-te Spalte aus A ist.
Bestimme ~x B := B −1 · ~b, bzw.
löse das System linearer Gleichungen B · ~x B = ~b.
for j = 1 to n by +1 do xi := 0 end for
for all ji ∈ H do xji := xiB end for
Return(~c T · ~x , x1 , . . . xn )
Satz 13 Es existiert genau dann ein polynomialzeit Programm für
lineare Programme, wenn es ein polynomialzeit Programm zur
Lösung linearer Ungleichungen gibt.
215
216
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Der nächste Schritt in Richtung eines polynomialzeit Programms
zum Lösen linearer Programme ist es lineare Ungleichungen mit
Hilfe strikter linearer Ungleichungen zu lösen.
Beweis von Lemma 20:
Lemma 20 Ein System linearer Ungleichungen
A · ~x
≤ ~b
◮
Der genau dann-Fall ist trivial.
◮
Auf den wenn-Fall werden wir hier nicht weiter eingehen, da
dieser Fall nicht weiter zum Verständnis des Verfahrens zur
Lösung von linearen Ungleichungen bzw. strikten linearen
Ungleichungen beiträgt.
hat genau dann eine Lösung, wenn das System strikter linearer
Ungleichungen
~ai · ~x
< bi + ε
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
für allei ∈ [1..m]
mit ε = 2−2L eine Lösung hat, wobei ~b T = (b1 , . . . , bm ) und ~ai der
i-te Zeilenvektor von A ist.
217
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Satz 14 Es existiert ein polynomialzeit Programm zum Lösung
linearer Ungleichungen, wenn es ein polynomialzeit Programm zur
Lösung strikter linearer Ungleichungen gibt.
218
Beweis von Satz 14 (Teil 2):
◮
Beweis von Satz 14:
◮ Betrachten wir ein System linearer Ungleichungen
~ai · ~x
◮
≤ bi
für i ∈ [1..m] .
(1)
◮
Aus Lemma 20 wissen wir, dass dieses System genau dann
eine Lösung hat, wenn das System strikter Ungleichungen
~ai · ~x
< bi + 2−2L
Die Größe der Ungleichungen (als Eingabe für ein Programm)
vom Typ 2 wächst im Vergleich zur Größe der ursprünglichen
Gleichungen vom Typ 1 maximal um den Faktor 2L, d.h. die
Größe wächst maximal auf das doppelte des Quadrats der
ursprünglichen Eingabe.
Gibt es ein polynomialzeit Programm zum Lösung strikter
linearer Ungleichungen, dann gibt es ein polynomialzeit
Programm zur Lösung linearer Ungleichungen:
◮
für i ∈ [1..m]
◮
bzw.
◮
22L · ~ai · ~x
< 22L · bi + 1
für i ∈ [1..m]
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
(2)
Führe die Transformation vom Typ 1 auf den Typ 2 durch.
Teste, ob es eine Lösung dieses strikten Ungleichungssytem
existiert.
Es existiert eine Lösung des ursprünglichen Systems, genau
dann, wenn es eine Lösung des transformierten Systems
existiert.
eine Lösung hat.
219
220
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
4.7 Affine Transformationen und Ellipsoide
◮
Bevor wir den Ellipsoid-Algorithmus vorstellen, werden wir noch auf
einige Konzepte und Ergebnisse aus der linearen Algebra eingehen:
◮ Sei Q eine nicht singuläre n × n-Matrix mit Q ∈ R n×n und
~t ∈ R n .
◮ Sei T : R n → R n mit T (~
x ) := ~t + Q · ~x für alle ~x ∈ R n , dann
nennen wir T eine affine Transformation.
◮ Da Q nicht singulär ist, ist T invertierbar, wobei das Inverse
T −1 von T wieder eine affine Transformation ist.
◮ Die n-Sphäre Sn (oder Einheitskugel) definieren wir über
Sn
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Sei T eine affine Transformation, dann nennen wir
T (Sn∗ ) := { T (~x ) | ~x ∈ Sn∗ }
einen Ellipsoiden. Alternativ gilt
T (Sn∗ ) = { ~y | (~y − ~t)T · B −1 · (~y − ~t) ≤ 1 },
wobei T (~x ) = ~t + Q · ~x und B = Q · Q T ist.
◮
:= { ~x ∈ R n | ~x T · ~x = 1 }
◮
und die dazugehörige Vollkugel bzw. Ball
Sn∗ := { ~x ∈ R n | ~x T · ~x ≤ 1 } .
Da B das Produkt zweier nicht singulärer Matrizen ist, ist B
positiv definit, d.h. für alle Vektoren ~x ∈ R n die ungleich
dem 0-Vektor sind gilt ~x T · B · ~x > 0.
Eine affine Transformation T mit ~t = 0 und Q · Q T = I
nennen wir Rotation. Wie wir einfach aus aus der
alternativen Darstellung von T (Sn∗ ) erkennen können, bildet
eine Rotation Sn∗ auf sich selber ab.
221
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
222
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Beispiel: Wir betrachten
2
~t :=
3
Wir werden nun einige nützliche Ergebnisse aus der linearen
Algebra (ohne Beweise) vorstellen:
und Q :=
und somit
Lemma 21 Affine Transformationen T erhalten die Teilmengenbeziehung, d.h. sei S ⊆ S ′ ⊆ R n , dann ist T (S) ⊆ T (S ′ ).
B = Q ·Q
Lemma 22 Sei S ⊆ R n eine Teilmenge von R n mit Volumen V ,
dann hat T (S) ein Volumen von V · | det(Q)|.
T
=
4 0
0 1
und B
−1
2 0
0 1
:=
Das Volumen dieses Ellipsoids ist 2π.
1/4 0
0 1
.
y
Lemma 23 Sei ~a ∈ R n ein Vektor der Länge ||~a||, dann existiert
eine Rotation TR , so dass
T
T
TR (~a) = QR · ~a = (||a||, 0, . . . , 0)
ist.
x
223
224
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Für das nun folgende Lemma müssen wir noch einmal zur
geometrischen Interpretation von Ungleichungssystemen
zurückkehren:
Definition 13 (Teil 2) f ist eine Fläche (Face) von P, wenn für
eine Hyperebene H entweder
Definition 13 Für eine m × n-Matrix A ∈ R m×n und einen
m-dimensionalen Vektor ~b ∈ R m sei
P
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
P ∩ HS + ⊆ H
oder P ∩ HS − ⊆ H
und f = P ∩ H ist.
= { ~x ∈ R n | A · ~x ≤ ~b }
◮
das durch A und ~b definierte konvexe Polytop. Für einen Vektor
~a ∈ R n und einen Wert d definieren wir die Hyperebene H und die
Halbräume HS + und HS − über
Eine Fläche f ist eine Facette von P, wenn f
(n − 1)-dimensional ist.
◮
Eine Fläche f ist ein Knoten von P, wenn f 1-dimensional ist.
◮
Eine Fläche f ist eine Kante von P, wenn f 2-dimensional ist.
Für das Polytop P definieren wir
H = { ~x | ~aT · ~x = d }
HS + = { ~x | ~aT · ~x ≥ d }
Int(P) := { ~x ∈ R n | A · ~x < ~b } .
HS − = { ~x | ~aT · ~x ≤ d }
225
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
x3
(0, 0, 3) (1, 0, 3)
(0, 0, 3) (1, 0, 3)
(2, 0, 2)
(2, 0, 2)
◮
keine
Face
(0, 0, 0)
x1
(0, 0, 0)
Kante
(0, 2, 0)
(2, 2, 0)
x2
(0, 2, 0)
(2, 2, 0)
227
Sind alle Mengen von n + 1 Knoten linear abhängig, dann
liegt P auf einer (n − 1)-dimensionalen Hyperebene H.
◮
Sei ~x ∈ Int(P) und ε > 0 der kleinste Abstand von ~x zu einer
Face von P.
◮
Die Vollkugel um ~x mit Durchmesser ε liegt vollständig in P.
◮
Dieses ist ein Widerspruch, da keine n-dimensionale Vollkugel
in einem (n − 1)-dimensionalen Hyperraum liegen kann.
x1
(2, 0, 0)
(2, 0, 0)
x2
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Beweis von Lemma 24: Der Beweis erfolgt über eine
Widerspruchsannahme.
(0, 2, 3)
Knoten
Andreas Jakoby
Universität zu Lübeck
Lemma 24 Gilt für ein n-dimensionales Polytop P Int(P) 6= ∅,
dann hat P mindestens n + 1 linear unabhängige Knoten.
x3
Facette
(0, 2, 3)
226
228
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Beispiel: Ellipsoid in Runde j mit
9 0
0
und Bj =
tj =
0 4
0
4.8 Ellipsoid-Algorithmus für strikte lineare Ungleichungen
Grundidee des Ellipsoid-Algorithmus:
◮
Der Algorithmus arbeitet in Runden.
◮
Zu jedem Zeitpunkt betrachten wir ein Ellipsoid, welches eine
Lösung des strikten linearen Ungleichungssystems beinhaltet,
sofern eine Lösung existiert.
◮
In jeder Runde ersetzen wir den aktuellen Ellipsoid durch einen
kleineren Ellipsoid welcher ebenfalls eine Lösung beinhaltet.
◮
Nach einer hinreichenden Anzahl von Runden finden wir
Lösung oder wir erhalten einen Ellipsoid, der zu klein ist, um
noch eine Lösung zu beinhalten. In diesem Fall können wir
ausgeben, dass keine Lösung existiert.
und einer Ungleichung x + y < −1.
y
x + y < −1
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Ellipsoid in Runde j + 1 mit
√
−3/ √13
84/13 −32/13
tj+1 =
.
und Bj+1 =
−32/13 496/117
−4/(3 13)
y
x + y < −1
Ej
x
230
229
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Andreas Jakoby
Universität zu Lübeck
Ej
x
tj+1
Ej+1
231
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
9. Vorlesung, 11.12.2006
Algorithmus Ellipsoid-Algorithmus(A, ~b, L)
Eingabe: striktes lineares Ungleichungssystem A · ~x < ~b
der Größe L.
Ergebnis: ~x mit A · ~x < ~b, wenn ein solcher Vektor existiert,
und infeasible sonst.
1: Setze j := 0, ~t0 := (0, . . . , 0)T und B0 := n2 · 22L · I
2: while j ≤ K = 16n(n + 1)L do
3:
if A · ~tj < ~b then Return(~tj ) end if
4:
Wähle eine Ungleichung aus A · ~x < ~b, so dass ~aiT · ~tj ≥ bi ist,
5:
d.h. eine Ungleichung, die von ~tj nicht erfüllt wird.
B ·~a
1
~tj+1 := ~tj − n+1
6:
· √ Tj i
~ai Bj ~ai
(B ·~a )(Bj ·~ai )T
n2
2
· j ~aTi ·B ·~
7:
Bj+1 := n2 −1 Bj − n+1
j ai
i
8:
j := j + 1
9: end while
10: Return(infeasible)
232
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Um die erste Frage zu beantworten zeigen wir den folgenden Satz:
Satz 15 Sei Bj ∈ R n×n positiv definite, ~tj ∈ R n und ~ai ∈ R n ein
beliebiger Vektor, ungleich dem 0-Vektor. Seien ~tj+1 und Bj+1 ein
Vektor und eine Matrix, wie sie aus Bj , ~tj ,~ai in den Zeilen 6 und 7
des Ellipsoid-Algorithmus berechnet werden, dann gilt
1. Bj+1 ist positiv definit und somit
Was bleibt zu zeigen?
◮
◮
◮
Findet der Ellipsoid-Algorithmus immer eine Lösung, wenn
eine Lösung existiert?
−1
Ej+1 := { ~x ∈ R n | (~x − ~tj+1 )T · Bj+1
· (~x − ~tj+1 ) ≤ 1 }
Wie können wir den Algorithmus implementieren und die
Wurzel ziehen?
ein Ellipsoid.
2. Der Halbellipsoied
Mit welcher Präzision muss die Wurzel berechnet werden?
1
ai ]
2 Ej [~
:= { ~x ∈ Ej | ~aiT · (~x − ~tj ) ≤ 0 }
ist vollständig in Ej+1 enthalten.
3. Für die Volumen der Ellipsoiden Ej und Ej+1 gilt
vol(Ej+1 )
vol(Ej )
< 2−1/(2(n+1)) .
233
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Um den Satz 15 zu beweisen zeigen wir zunächst zwei Lemmata:
234
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 25:
Teil 1: Betrachten wir die Diagonalmatrix Q mit Diagonale
Lemma 25 Sei B ∈ R n×n die Diagonalmatrix mit Diagonale
n
n
n
,√
,..., √
n + 1 n2 − 1
n2 − 1
2
2
n2
, n , . . . , n2n−1 ,
(n+1)2 n2 −1
und
~t := (−1/(n + 1), 0, . . . , 0) ∈ R n
E := { ~x ∈ R n | (~x − ~t)T · B −1 · (~x − ~t) ≤ 1 }
so erkennen wir, dass B = Q · Q T ist. Folglich ist B ist positiv
definit und somit E ein Ellipsoid.
dann gilt
1. B ist positiv definit und somit ist E ein Ellipsoid.
2. Die Halbvollkugel5
1 ∗
2 Sn
Teil 2: Wir betrachten ~x ∈ 12 Sn∗ . Es gilt
(~x − ~t)T · B −1 · (~x − ~t)
2
·
x1 +
= (n+1)
2
n
:= { ~x = (x1 , . . . , xn )T ∈ Sn∗ | x1 ≤ 0 }
ist vollständig in E enthalten.
3. Für die Volumen der Vollkugel Sn∗ und des Ellipsoids E gilt
vol(E )
vol(Sn∗ )
5
< 2
−1/(2(n+1))
≤
≤
.
oder halb voll Kugel?
235
1
n+1
2
n2 −1 T
~x ~x + 2n+2
(x12
n2
n2
1 + 2n+2
(x12 + x1 )
n2
+
n2 −1
n2
+ x1 ) +
·
Pn
2
i=2 xi
1
n2
≤ 1.
Die letzte Ungleichung folgt aus der Beobachtung, dass |x12 | ≤ |x1 |
für −1 ≤ xi ≤ 0 ist.
236
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 25 (Teil 2):
Teil 3: Da E = T (Sn∗ ) ist, wobei die zu T gehörige Matrix durch
Q gegeben ist, folgt aus Lemma 22:
(n−1)/2
n2
n
vol(E )
= | det(Q)| =
·
.
vol(Sn∗ )
n+1
n2 − 1
Lemma 26 Sei Bj ∈ R n×n positiv definite, ~tj ∈ R n und ~ai ∈ R n ein
beliebiger Vektor, ungleich dem 0-Vektor. Seien ~tj+1 und Bj+1 ein
Vektor und eine Matrix, wie sie aus Bj , ~tj ,~ai in den Zeilen 6 und 7
des Ellipsoid-Algorithmus berechnet werden. Ferner seien B, E und
1 ∗
2 Sn wie im Lemma 25 definiert, dann gilt gibt es eine affine
Transformationen T , so dass
1. T (Sn∗ ) = { ~x ∈ R n | (~x − ~tj )T · Bj−1 · (~x − ~tj ) ≤ 1 }
Für alle x > 0 gilt
1 + x ≤ ex
und
1 − x ≤ e −x
und somit
Wir erhalten
n
n+1
n2
n2 − 1
1
n+1
≤
= 1+
1
n2 −1
≤ e 1/(n
n−1
| det(Q)| < e 2(n2 −1)
1
− n+1
2. T ( 21 Sn∗ ) = { ~x ∈ R n | (~x − ~tj )T · Bj−1 · (~x − ~tj ) ≤ 1,
~aiT · (~x − ~tj ) ≤ 0 }
e −1/(n+1)
= 1−
2 −1)
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
−1
3. T (E ) = { ~x ∈ R n | (~x − ~tj+1 )T · Bj+1
· (~x − ~tj+1 ) ≤ 1 }
.
ist.
< e −1/2(n+1) < 2−1/2(n+1) . 237
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 26: Wir betrachten zunächst einmal die
Voraussetzungen von Lemma 26 und einige Beobachtungen,
welche aus diesen folgern:
◮
◮
T (Sn∗ ) = { T (~y ) | ~y T · ~y ≤ 1}
= { ~x | T −1 (~x )T · T −1 (~x ) ≤ 1}
= { ~x | (~x − ~tj )T · (Q −1 )T · QR · QRT · Q −1 · (~x − ~tj ) ≤ 1}
= { ~x | (~x − ~tj )T · (Q −1 )T · Q −1 · (~x − ~tj ) ≤ 1}
= { ~x | (~x − ~tj )T · Bj−1 · (~x − ~tj ) ≤ 1} .
Nach Lemma 23 existiert eine Rotation TR mit dazugehöriger
Matrix QR , so dass
= (||Q T · ~ai ||, 0, . . . , 0)T
ist. TR ist wieder eine affine Transformationen.
◮
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 26 (Teil 2):
Teil 1: Es gilt
Da Bj positiv definit ist, existiert eine nicht singuläre Matrix
Q mit Bj = Q · Q T .
QRT · Q T · ~ai
238
Teil 2: Es gilt QR = (QRT )−1 und somit gilt nach Lemma 21:
Wir untersuchen nun die Transformation
T ( 12 Sn∗ ) = T ({~y = (y1 , . . . , yn )T ∈ Sn∗ |y1 ≤ 0})
= { ~x | (~x − ~tj )T · Bj−1 · (~x − ~tj ) ≤ 1, ~aiT · (~x − ~tj ) ≤ 0} .
T (~x ) := ~tj + Q · QR · ~x .
und untersuchen, ob T die drei Bedingungen des Lemmas
erfüllt.
239
240
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 26 (Teil 3):
Teil 3: Zunächst betrachten wir Zeile 7 des Ellipsoid-Algorithmus.
Es gilt
(Bj · ~ai )(Bj · ~ai )T
n2
2
Bj+1 =
·
Bj −
n2 − 1
n+1
~aiT · Bj · ~ai
QQR QRT Q T · ~ai · ~aiT QQR QRT Q T
2
n2
Bj −
·
=
n2 − 1
n+1
~aiT · QQR QRT Q T · ~ai
QQR diag(||Q T~ai ||2 , 0, . . . , 0)QRT Q T
n2
2
=
·
Bj −
n2 − 1
n+1
||Q T · ~ai ||2
wobei diag(z1 , . . . , zn ) die n × n-Diagonalmatrix mit der Diagonale
z1 , . . . , zn bezeichnet. Die letzte Gleichung folgt aus der
Beobachtung
QRT · Q · ~ai
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Beweis von Lemma 26 (Teil 4):
2
n2
T T
QQR diag(1, 0, . . . , 0)QR Q
Bj −
Bj+1 =
n2 − 1
n+1
n2
2
T T
T T
=
QQR diag(1, 0, . . . , 0)QR Q
QQR IQR Q −
n2 − 1
n+1
n2
n−1
QQR diag( n+1
=
, 1, . . . , 1)QRT Q T
n2 − 1
= QQR BQRT Q T .
= (||Q T~ai ||, 0, . . . , 0)T .
241
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
242
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Beweis von Lemma 26 (Teil 5): Zunächst betrachten wir Zeile 6
des Ellipsoid-Algorithmus. Es gilt
~x − ~tj+1 = ~x − ~tj +
= ~x − ~tj +
= ~x − ~tj
Beweis von Lemma 26 (Teil 6): Fassen wir zusammen:
T (E ) = { T (~y ) | (~y − ~t)T B −1 (~y − ~t) ≤ 1 }
= { ~x | (T −1 (~x ) − ~t)T B −1 (T −1 (~x ) − ~t) ≤ 1 }
= { ~x | (~x − ~tj+1 )T (Q −1 )T QR B −1 QRT Q −1 (~x − ~tj+1 ) ≤ 1 }
−1
= { ~x | (~x − ~tj+1 )T Bj+1
(~x − ~tj+1 ) ≤ 1 } .
QQR QRT Q T~ai
q
(n + 1) ~aiT QQR QRT Q T ~ai
QQR (||Q T ~ai ||, 0, . . . , 0)T
(n + 1)||Q T ~ai ||
QQR (1, 0, . . . , 0)T
+
n+1
~
− QQR t = QQR (T −1 (~x ) − ~t) .
= ~x − ~tj +
= ~x − ~tj
Bj · ~ai
1
·q
n+1
~aiT Bj ~ai
243
244
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Fassen wir Lemma 25 und 26 zusammen, so können wir jetzt Satz
15 beweisen:
Beweis von Satz 15:
Teil 1:
◮
◮
◮
Beweis von Satz 15 (Teil 2)
Teil 3:
Nach Lemma 26.3 gibt es eine affine Transformation T mit
T (E ) = Ej+1 .
◮
Nach Lemma 22 und 25.3 gilt
Nach Lemma 25.1 gibt es eine affine Transformation T ′ mit
T ′ (Sn∗ ) = E .
vol(Ej+1 )
vol(Ej )
Somit ist T ′ ◦ T eine affine Transformation und
T ′ ◦ T (Sn∗ ) = Ej+1 ein Ellipsoid — die Komposition zweier
affiner Transformationen ist eine affine Transformation.
=
=
vol(T (E ))
vol(T (Sn∗ ))
det(QR) · vol(E )
det(QR) · vol(Sn∗ )
Teil 2:
◮
Nach Lemma 26.2 gilt T ( 21 Sn∗ ) = Ej [~ai ].
◮
Nach Lemma 25.2 gilt 12 Sn∗ ⊆ E .
◮
< 2−1/(2(n+1)) .
Nach Lemma 26.3 gilt Ej [~ai ] ⊆ T (E ) = Ej+1 .
246
245
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 27 (Teil 2):
◮ Nach Lemma 24 hat dieses Polytop n + 1 linear unabhängige
Knoten {~v0 , . . . , ~vn }.
◮ Alle Punkte in der konvexen Hülle dieser Knoten sind
Lösungen für A · ~x < ~b und liegen innerhalb der Vollkugel mit
Radius n · 2L .
◮ Das Volumen dieser konvexen Hülle ist
1 1 1 . . . 1 6= 0 .
· det
~v0 ~v1 . . . ~vn n! Wir können nun ein Lemma zeigen, aus dem eine Schranke für die
Anzahl der Schleifendurchläufe folgt.
Lemma 27 Hat ein striktes lineares Ungleichungssystem der Größe
L eine Lösung, dann hat die Menge der Lösungen in der Vollkugel
mit Radius n · 2L ein Volumen der Größe ≥ 2−(n+2)L .
Beweis von Lemma 27:
◮ Es gilt: Hat A · ~
x < ~b eine Lösung, dann hat auch
A · ~x < ~b
und ∀i : xi < 2L
◮
eine Lösung.
◮
Somit hat das Polytop
A · ~x ≤ ~b
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
◮
und ∀i : xi ≤ 2L
Jeden Vektor ~vi gilt ~vi = ~ui /Di wobei ~ui ein Integervektor und
Di eine Determinante mit Absolutwert kleiner gleich 2L ist.
Somit ist das Volumen der konvexen Hülle mindestens
!−1
n
Y
n!
|Di |
> 2−(n+2)L .
i=0
einen inneren Punkt.
247
248
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 16 (Teil 2):
◮
Wir kommen nun zum zentralen Satz dieses Abschnitts:
Hat das strikte Ungleichungssystem eine Lösung, dann
existiert nach Lemma 27 eine Lösungsmenge
Satz 16 Der Ellipsoid-Algorithmus entscheidet korrekt, ob ein
striktes Ungleichungssystem eine Lösung besitzt.
S
mit einem Volumen von mindestens 2−(n+2)L .
Beweis von Satz 16:
◮
◮
⊂ E0 = { ~x ∈ R n | ~x T B0−1~x }
◮
Stoppt der Ellipsoid-Algorithmus mit einer Ausgabe in Zeile 3,
dann ist diese Ausgabe eine Lösung des Systems und das
Ergebnis dieses Verfahrens somit korrekt.
◮
Nach Satz 15.2 bleibt diese Menge eine Teilmenge von Ej für
alle j ∈ [1..K ].
Nach Satz 15.3 gilt
Wir müssen somit zeigen, dass das Ergebnis infeasible immer
korrekt ist.
vol(EK ) < vol(E0 ) · 2−K /(2(n+1))
< (2 · n2 22L )n · 2−8nL < 2−(n+2)L .
◮
Somit ist S 6⊆ EK , wenn das strikte Ungleichungssystem eine
Lösung besitzt.
250
249
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Definition 14 Sei x̃ der approximierte bzw. berechnete Wert von
x. Die Berechnung eines Werts x erfolgt mit Präzision p ∈ N,
wenn für ein θ ∈ R mit −1 < θ < 1 gilt
4.9 Präzision einer Berechnung
Damit der Ellipsoid-Algorithmus implementiert werden kann,
müssen wir untersuchen, wie genau wir die zu berechnenden
nicht-rationalen Werte approximieren müssen. Dieses Abschätzung
stellt eine weitere Herausforderung dar. Da jedoch bei der
Entwicklung von Algorithmen solche Abschätzungen öfter eine
Rolle spielen, werden wir hier näher darauf eingehen.
x̃
= x · (1 + θ2−p ) .
Betrachten wir Approximationen wir eine Matrix A oder einen
Vektor ~t, so können wir für alle Einträge unterschiedliche Werte
von θ wählen.
Frage: Mit welcher Präzision p müssen wir die Berechnungen in
der Zeile 6 und damit auch in der Zeile 7 des Ellipsoid-Algorithmus
ausführen, um in wieviel Runden K korrekt entscheiden zu können,
ob ein striktes Ungleichungssystem eine Lösung besitzt?
251
252
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Eine Berechnung mit Präzision p auf Eingaben die ihrerseits mit
Präzision p gegeben sind besteht aus zwei Schritten:
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Bemerkungen zum Ellipsoid-Algorithmus:
◮ Sei Ej := (~
tj , Bj ) der in Runde i berechnete Ellipsoid.
◮ Die Werte ~
tj+1 , Bj+1 werden mit Hilfe der Funktionen F und
G (Zeile 6 und 7 des Ellipsoid-Algorithmus) berechnet:
1. Ausführen einer Operation (Addition, Subtraktion oder
Vergleich) der Exponenten von 2.
2. Ausführen einer Operation auf p-Bit Integers.
~tj+1 := F (~tj , Bj )
Für den Ellipsoid-Algorithmus gilt:
1. Der Ellipsoid-Algorithmus hat polynomielle Laufzeit. In jedem
Schritt wird der Wert einer Zahl maximal verdoppelt oder
halbiert. Somit ist der Exponent von 2 maximal exponentiell in
L. Stellen wir L als Binärzahl dar, so können wir die benötigten
Operationen in polynomieller Zeit in L durchführen.
und Bj+1 := G (~tj , Bj ) .
Bemerkungen zum modifizierten Ellipsoid-Algorithmus mit
Präzision p:
˜t , B̃ · (1 + δ)j ) der in Runde i berechnete Ellipsoid,
◮ Sei Ẽ := (~
j
◮
2. Die Operationen auf den p-Bit Integerwerten können wir
wieder mit einer Präzision von p mit Hilfe bekannter
Verfahren (z.B. mit Hilfe des Newton-Verfahrens) in
polynomieller Zeit berechnen.
j
j
wobei wir δ noch bestimmen müssen.
Die Werte ~˜tj+1 , B̃j+1 werden mit Hilfe der Funktionen F̃ und
G̃ berechnet:
~˜tj+1 := F̃ (~˜tj , B̃j )
und B̃j+1 := G̃ (~˜tj , B̃j ) .
254
253
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Lemma 28 Für p = c · K · n2 und δ =
1
ai ]
2 Ẽj [~
◮
◮
Der Faktor (1 + δ)j soll garantieren, dass garantieren, dass ein
Ellipsoid Ẽj+1 eine Lösungsmenge S des strikten
Ungleichungssystems A · ~x < ~b enthält, wenn der Ellipsoid Ẽj
diese Menge beinhaltet.
1
Kn
ist
= { ~x ∈ Ẽj | ~aiT · (~x − ~˜tj ) ≤ 0}
in Ẽj+1 enthalten, wobei c eine geeignete Konstante ist.
Beweis von Lemma 28: Es genügt zu zeigen, dass
˜t , B̃ ), G (~˜t , B̃ ) · (1 + δ)j ) bzw.
◮ H = (F (~
j
◮
Wir führen diese Multiplikation nicht im Detail aus! Sie wird
nur in unserer Argumentation bezüglich der Ellipsoiden Ẽj
benötigt.
j
j
j
j
alle Punkte am Rand von Hj
in Ẽj+1 enthalten sind, da 21 Ẽj [~ai ] ⊆ Hj ist. Wir können also die
Aussage von Lemma 28 darauf reduzieren, dass
(~x − F (~˜tj , B̃j ))T G (~˜tj , B̃j )−1 (~x − F (~˜tj , B̃j )) = (1 + δ)j
impliziert, dass
~x
∈ Ẽj+1
ist.
255
256
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 28 (Teil 2):
◮ Betrachten wir nun die Definition von Ẽj+1 , so sehen wir, dass
~x genau dann in Ẽj+1 ist, wenn
Beweis von Lemma 28 (Teil 3):
◮ Den absolute Fehler, den wir mit einer Operation erhalten,
können wir somit durch M · 2−p nach oben abschätzen und
jede Sequenz von ℓ Operationen resultiert in einem absoluten
Fehler kleiner gleich ℓ · M · 2−p .
◮ Zählen wir die Anzahl der benötigten arithmetischen
Operationen, die wir bei einem Durchlauf (der while-Schleife)
des Ellipsoid-Algorithmus benötigen, so können wir diese
durch 9n2 ≤ 23n beschränken.
◮ Wir erhalten somit
(~x − F̃ (~˜tj , B̃j ))T G̃ (~˜tj , B̃j )−1 (~x − F̃ (~˜tj , B̃j )) ≤ (1 + δ)j+1
◮
ist.
Sei nun r ein beliebiger Wert, der als Eintrag in einem Vektor
oder einer Matrix im Ellipsoid-Algorithmus berechnet wird.
Für eine geeignete Konstante c gilt
|r | ≤ M
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
= 2cKn
F̃ (~˜tj , B̃j ) = F (~˜tj , B̃j ) + θ · M · 23n−p
und wir können sogar zeigen, dass
für einen Vektor θ und
|r | ≤ 22L+(2K +3)·log2 n
gilt. Wählen wir für n ≥ 2 den Wert c ≥ 3, so gilt die
Ungleichung |r | ≤ 2cKn .
Andreas Jakoby
Universität zu Lübeck
G̃ (~˜tj , B̃j ) = G (~˜tj , B̃j ) + θ · M · 23n−p
für eine Matrix θ (siehe Definition 14).
257
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
◮
◮
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 28 (Teil 5):
Beweis von Lemma 28 (Teil 4):
◮
258
◮
Es gilt somit
~x − F̃ (~˜tj , B̃j ) = ~x − F (~˜tj , B̃j ) + θ · M · 23n−p
für einen neuen Vektor θ.6
Für alle ~x auf dem Rand von Hj , d.h. die die Gleichung
(~x − F )T G −1 (~x − F ) = (1 + δ)j
von Folie 256 erfüllen, gilt somit
Im Folgenden wollen wir — um die Übersichtlichkeit zu
erhöhen — die Parameter ~˜tj , B̃j in den Funktionen F , G , F̃ , G̃
nicht mehr aufführen.
(~x −F̃ )T G̃ −1 (~x −F̃ ) = (~x −F )T G̃ −1 (~x −F )·(1+θ·M·23nL−p )2 .
Für jedes ~x auf dem Rand von Hj gilt |~x − F | ≥ 2−2nL . Aus
der obigen Gleichung erhalten wir somit
~x − F̃ = (~x − F ) · (1 + θ · M · 23nL−p ) .
Beachte hierbei, dass L ≥ n · m ≥ 4 für n, m ≥ 2. Auch an
dieser Stelle ändern wir θ wieder nach Bedarf.
◮
◮
6
Im Folgenden taucht an verschiedenen Stellen des Beweises θ auf. Die Werte
von θ sind jedoch nicht unbedingt korreliert und stellen nur einen Korrekturterm
dar, auf den wir in der abschließenden Ungleichung verzichten wollen.
Jeden Eintrage aus G̃ −1 können wir als Quotient der
Determinante einer Teilmatrix von G̃ und der Determinante
von G̃ berechnen.
Sei g̃ ein Eintrag in G̃ −1 und g der entsprechende Eintag in
G −1 , dann können wir zeigen, dass
g̃
259
= g + θ · M n+1 · 23nL−p (1 + δ)Kn .
260
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 28 (Teil 6):
◮
Wir erhalten für δ =
(~x −
F̃ )T G̃ −1 (~x
Ferner gilt
1
Kn
det(G̃ ) = det(G ) · (1 + θM n · 25nL−p · (1 + δ)Kn )
− F̃ )
und somit
= (~x − F )T G̃ −1 (~x − F ) · (1 + θ · M · 23nL−p )2
= (~x − F )T G −1 (~x − F ) · (1 + θ · M · 23nL−p )2
+θ · M n+3 · 25nL−p (1 + δ)Kn
vol(Ẽj+1 )
vol(Ẽj )
= (1 + δ)j · (1 + θ · M n+3 · 25nL−p (1 + δ)Kn ) .
◮
Wählen wir K = 32n(n + 1)L und p =
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
Andreas Jakoby
Universität zu Lübeck
5Kn2 ,
< 2−1/(2n+2) (1 + δ)n (1 + M n · 25nL−p · (1 + δ)Kn ) .
Wählen wir wieder K = 32n(n + 1)L und p = 5Kn2 , dann gilt
dann gilt
vol(Ẽj+1 )
(1 + θ · M n+3 · 25nL−p (1 + δ)Kn ) < (1 + δ)
vol(Ẽj )
< 2−1/(4n+4) .
und wir erhalten die zu beweisende Aussage von Folie 257. 261
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
10. Vorlesung, 18.12.2006
262
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
5 Matching-Probleme
5.1 Definition von Matching-Probleme
Nach K Durchläufen durch die while-Schleife konvergiert somit die
Suche nach einer Lösung, oder es existiert keine solche. Da nun
jede Operation in polynomieller Zeit ausgeführt werden kann,
erhalten wir:
Definition 15 [2-dimensionales Matching]
◮
Satz 17 Wählen wir K := 32n(n + 1)L und bestimmen wir die
Einträge von ~tj+1 und Bj+1 in jedem Durchlauf der while-Schleife
mit einer Präzision p := 5Kn2 , dann entscheidet der
Ellipsoid-Algorithmus in polynomieller Zeit korrekt, ob ein striktes
Ungleichungssystem eine Lösung besitzt.
◮
◮
◮
263
Sei G = (V , E ) ein ungerichteter Graph und E ′ ⊆ E . E ′ ist
ein Matching, wenn für alle Kantenpaare e1 , e2 ∈ E ′ mit
e1 6= e2 gilt, dass e1 ∩ e2 = ∅ ist, d.h. die beiden Kanten
verbinden unterschiedliche disjunkte Knotenpaare.
Ein Matching E ′ nennen wir maximal, wenn es keine echte
Obermenge E ′′ ⊃ E ′ gibt, die die Matching-Bedingung erfüllt.
E ′ heißt Maximum- oder optimales Matching, wenn die E ′
ein Matching größtmöglicher Kardinalität (in der Menge aller
Matchings von G ) ist.
E ′ ist ein perfektes Matching, falls jeder Knoten von G mit
einer Kante aus E ′ inzident ist.
264
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Definition 15 (Teil 2)
◮
Unter dem (2-dimensionalen) Matching-Problem verstehen
wir das Problem, für einen ungerichteten Graphen zu
entscheiden, ob für diesen ein perfektes Matching existiert.
◮
Ist zusätzlich zum Graphen G noch eine Kostenfunktion
κ : E → R auf den Kanten gegeben, so ergibt sich das
gewichtete Matching-Problem. Hierbei unterscheiden wir
zwei Varianten:
1. Gesucht ist ein Matching E ′ ⊆ E , welches den Wert des
Matchings
X
W (E ′ ) :=
κ(e)
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Eine für viele Anwendungen interessante Variante des
Matching-Problems erhalten wir, wenn wir uns auf bipartite
Graphen einschränken:
Definition 16
◮
Einen Graphen G = (V , E ) nennen wir bipartit oder
2-färbbar, falls wir seine Knotenmenge in zwei Teilmengen
V1 , V2 partitionieren können, so dass
V1 ∩ V2 = ∅,
V1 ∪ V2 = V
und jede Kanten mit einem Knoten aus V1 und mit einem
Knoten aus V2 inzident ist.
e∈E ′
maximiert.
2. Gesucht ist ein optimales Matching E ′ , so dass W (E ′ )
minimal ist.
Wir werden hier auf die zweite Variante eingehen.
◮
Das Matching-Problem für bipartite Graphen nennen wir auch
Heiratsproblem.
Anwendungen: Ressourcen optimal zuordnen, Prozesse zu
Prozessoren zuordnen oder Clients zu Servern zuordnen.
265
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Definition 17 [3DM, 3-DIM-MATCHING]
◮ Gegeben eine Menge M von Tripeln über einer Grundmenge
A × B × C paarweise disjunkter Komponentenmengen
A, B, C . Ein Matching von M ist eine Teilmenge M ′ ⊆ M, so
dass jedes Element aus A ∪ B ∪ C in höchstens einem Tripel
aus M ′ vorkommt.
◮ Ein Matching M ′ , bei dem jedes Element aus A ∪ B ∪ C
genau einmal vertreten ist, ist ein perfektes 3-dimensionales
Matching.
◮ Das Entscheidungsproblem, ob für eine Menge M ein
perfektes 3-dimensionales Matching existiert nennen wir
3-DIM-MATCHING oder kurz 3DM.
Definition 18 [X3C, exakte 3-Überdeckung]
◮ Ist M eine Menge von 3-elementigen Mengen über einer
endlichen Grundmenge C , wird aus dem 3DM Problem das
Problem für eine Menge M zu entscheiden, ob eine exakte
3-Überdeckung existiert. Wir nennen diese Problem X3C.
266
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
5.2 Das Heiratsproblem
Satz 18 [Heiratssatz] Ein bipartiter Graph G = (V , E ) mit
Knotenpartitionierung V1 , V2 besitzt genau dann ein perfektes
Matching, wenn |V1 | = |V2 | ist und für alle Teilmengen U1 ⊆ V1
und deren Korrespondenz auf der anderen Seite
Γ(U1 ) := { v ∈ V2 | ∃u ∈ U1 : {u, v } ∈ E }
die Ungleichung
|U1 | ≤ |Γ(U1 )|
erfüllt ist.
Bemerkung: Aus diesem Satz können wir keinen effizienten
Algorithmus für das Heiratsproblem herleiten, da es exponentiell
viele Teilmengen von V1 gibt.
267
268
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Beweis von Satz 18 (Teil 2): Um zu zeigen, dass die
Bedingungen des Satzes auch hinreichend sind, greifen wir auf Satz
9 (MAXFLOW-MINCUT-Theorem auf Folie 102) zurück. In einer
Übungsaufgabe haben wir bereits gesehen, dass wir das
Matching-Problem für bipartite Graphen einfach auf ein
Flußproblem reduzieren können:
Beweis von Satz 18: Die Notwendigkeit der beiden Bedingungen,
folgt unmittelbar aus der Definition des Heiratsproblems:
◮
Andreas Jakoby
Universität zu Lübeck
Sei E ′ ein perfektes Matching und U1 eine beliebige Teilmenge
von V1 , dann ist jeder Knoten aus U1 über E ′ mit genau
einem Knoten aus V2 verbunden. Somit gilt |U1 | ≤ |Γ(U1 )|.
◮
Füge eine Quelle q und eine Senke s zu G hinzu und verbinde
q mit alle Knoten aus V1 und alle Knoten aus V2 mit s.
◮
Richte alle Kanten von q nach s. Insbesondere richte alle
Kanten zwischen V1 und V2 , so dass sie von V1 nach V2
verlaufen.
◮
Gebe allen Kanten die Kapazität 1.
Sei H das resultierende Netzwerk.
270
269
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Beweis von Satz 18 (Teil 3):
V1
V2
u1
v1
u2
v2
q
Beweis von Satz 18 (Teil 4): Wir erkennen:
◮
s
um
vm
◮
Zu jedem Matching E ′ in G korrespondiert eindeutig ein Fluss
f in H gleicher Größe, wenn man über die Kanten in H, deren
Urbilder in G zu E ′ gehören, jeweils eine Einheit fließen läßt.
Analoges gilt auch in umgekehrter Richtung, wenn wir einen
ganzzahligen Fluss betrachten.
Wie wir aus dem Algorithmus zur Bestimmung des maximalen
Flusses (Algorithmus modify auf Folie 96) erkennen können,
existiert zu jedem Graphen mit ganzzahliger Kapazitätsfunktion
γ : E → N ein maximaler Fluss f , der ganzzahlig ist, d.h. ein Fluss
der Form f : E → N.
271
272
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Beweis von Satz 18 (Teil 6):
◮
Beweis von Satz 18 (Teil 5):
◮
Angenommen, ein bipartiter Graph G mit |V1 | = |V2 | besitzt
kein perfektes Matching.
Da q mit jedem Knoten in V1 ∩ S = V1 \ Q ′ und jeder Knoten
aus S ′ = Q ∩ V2 mit s verbunden ist, gilt
|V1 | > MAXFLOW((H, γ))
Aus der letzten Beobachtung auf der Folie 272 können wir
somit folgern, dass der Wert des maximalen Flusses kleiner als
|V1 | ist.
= γ(Q, S) =
◮
Wir betrachten nun einen minimalen q|s-Schnitt (Q, S) in H.
≥ |V1 \ Q ′ | + |Γ(Q ′ ) ∩ S| + |Γ(Q ′ ) ∩ Q|
◮
Die Schnittkapazität γ(Q, S) ist die Anzahl der Kanten, die
von Q nach S führen.
= |V1 | − |Q ′ | + |Γ(Q ′ )| .
◮
◮
X
γ((u, v ))
(u,v )∈E u∈Q,v ∈S
Sei Q ′ := Q ∩ V1 .
◮
◮
Dies impliziert |Q ′ | > |Γ(Q ′ )| und die zweite Bedingung ist
verletzt.
Gibt es kein perfektes Matching für einen bipartiten Graphen,
so gilt die zweite Bedingung nicht.
274
273
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
V1 ∩ S
V2
u1
v1
u2
v2
u3
v3
u4
v4
u5
v5
Q
q
′
Q = V1 ∩ Q
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Wie wir schon angemerkt haben, können wir aus Satz 18 keinen
effizienten Algorithmus zum Lösen des Matching-Problems für
bipartite Graphen herleiten. Unsere Überlegungen aus dem Beweis
von Satz 18 zeigt jedoch, dass unser Algorithmus von Folie 105 das
Matching-Problem für bipartite Graphen zu finden. Einen
zunehmenden Weg in dem von uns konstruierten Graphen können
wir in H Zeit O(|E |) finden.
Beweis von Satz 18 (Teil 7):
V1
Andreas Jakoby
Universität zu Lübeck
s
Satz 19 Ein optimales Matching für bipartite Graphen können wir
in Zeit O(|V | · |E |) finden.
Γ(Q ′ ) ∩ S
Es kann sogar gezeigt werden, dass Matching-Problems für
bipartite Graphen in Zeit O(|V |2,5 ) gelöst werden kann. Für das
gewichtete Matching-Problem für bipartite Graphen können wir
nicht so einfach einsehen, dass dieses Problem auch mit Hilfe des
General-MAXFLOW Algorithmus gelöst werden kann.
′
Γ(Q ) ∩ V2
275
276
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
◮
5.3 Heiratsproblem mit Kantenkosten
Unser Algorithmus basiert auf der Idee der zunehmenden Wegen
aus Kapitel 3.1. Wir gehen hierbei wie folgt vor:
◮
◮
◮
Gegeben ist ein ungerichteter bipartiter Graph
G = (V1 ∪ V2 , E ) mit |V1 | = |V2 | = n und eine
Gewichtsfunktion κ : E → R+ .
Wir betrachten jedoch einen Restgraphen, der sich vom
Restgraph von Folie 94 unterscheidet. Wir definieren:
◮
Für G bezeichnen wir mit H = (VH , EH ) den gewichteten
Graphen, den wir analog zu H im Heiratssatzes konstruiert
haben. Wir setzen jedoch für alle e = (u, v ) ∈ EH
0
für u = q oder v = s
γ((u, v )) =
κ({u, v }) für u ∈ V1 und v ∈ V2 .
◮
Für ein Matching M in G bezeichnen wir mit HM = (VM , EM )
den gewichteten Graphen mit VM := V1 ∪ V2 ∪ {q, s},
S
S
EM := {(q, u)|u ∈ V1 \ e∈M e} ∪ {(v , s)|v ∈ V2 \ e∈M e}
∪{(u, v ) ∈ V1 × V2 |{u, v } ∈ E \ M}
∪{(v , u) ∈ V2 × V 1|{u, v } ∈ M}
Unser Algorithmus konstruiert iterativ Matchings Mi der
Größe i = 1, . . .P
, n. Hierbei soll Mn minimale Kosten haben,
d.h. W (Mn ) = e∈Mn κ(e) soll minimal unter allen perfekten
Matchings sein.
Wir gehen wie folgt vor: Sei Mi ein Matching mit minimalen
Kosten der Größe i und Π ein zunehmender Weg mit
minimalen Kosten. Wir verschmelzen nun Mi und Π zu einem
Matching Mi+1 der Größe i + 1 mit minimalen Kosten.
und wir setzen für alle e = (u, v ) ∈ EM

für u = q oder v = s
 0
κ({u,
v
})
für u ∈ V1 , v ∈ V2 und {u, v } 6∈ M
γ((u, v )) =

−κ({u, v }) für u ∈ V1 , v ∈ V2 und {u, v } ∈ M .
278
277
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
◮
V1
V2
u1
v1
u2
v2
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Aus der Definition von HM und dem erweiterten Matching M ′
bezüglich eines alternierenden Pfades Π folgt:
Beobachtung 8 Sei M ein Matching und Π ein alternierender
q-s-Pfades in HM . Sei M ′ das über Π erweiterte Matching, dann
gilt
M = {{u1 , v2 }}
s
um
◮
Andreas Jakoby
Universität zu Lübeck
Ein gerichteter Pfad von q nach s in HM ist ein
alternierender Pfad:
q
◮
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
vm
M ′ = {{u1 , v1 }, {um , v2 }}
Sei M ein Matching in G und Π ein q-s-Pfad in HM , wir
konstruieren ein neues Matching M ′ , indem wir alle Kanten
von V1 nach V2 in Π zu M hinzufügen, und alle Kanten von
V2 nach V1 in Π aus M löschen. Wir erweitern M über Π.
Für einen q-s-Pfad ΠP= w0 , . . . , wt definieren wir die Kosten
von Π als W (Π) := i∈{1,...,t−2} γ((wi , wi+1 )).
|M ′ | = |M| + 1 und W (M ′ ) = W (M) + W (Π) .
Beobachtung 9 M ist genau dann ein perfektes Matching, wenn
es in HM keine Kante mehr gibt, die mit q oder s inzident ist.
279
280
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Wir nennen einen Kreis C = w1 , . . . , wt (mit w1 = wt ) in HM
negativ, wenn
X
W (C ) :=
γ((wi , wi+1 )) < 0
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Lemma 29 Sei M ein perfektes Matching, wobei es in HM keinen
negativen Kreis gibt, dann ist M ein minimales Matching.
Beweis von Lemma 29: Sei M ein nicht minimales perfektes
Matching, wobei es in HM keinen negativen Kreis gibt. Sei M ′ ein
perfektes Matching mit minimalen Kosten.
i∈{1,...,t−1}
ist. Modifizieren wir M über einen Kreis C , analog wie wir eine
Matching über einen q-s-Pfad erweitern, so erhalten wir:
Beobachtung 10 Sei M ein perfektes Matching und C ein
negativer Kreis in HM , dann gilt für das über C modifizierte
Matching M ′ : M ′ ist ein perfektes Matching und
W (M ′ ) = W (M) + W (C ) < W (M). Somit sind die Kosten für M
nicht minimal.
◮
Sei S die Menge der Kanten, die in einer der Mengen M oder
M ′ enthalten sind, aber nicht in beiden.
◮
Die Menge der Kanten in S formen eine Menge von
knotendisjunkten Kreisen {C1 , . . . , Ck } in HM .
P
Es gilt W (M ′ ) = W (M) + i∈{1,...,k} W (Ci ).
◮
◮
Wir können sogar die Umkehrung dieser Beobachtung zeigen.
Da W (M ′ ) < W (M) ist, gibt es einen Kreis Ci mit
W (Ci ) < 0.
282
281
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Um die Analyse zu vereinfachen, führen wir für alle Knoten
Gewichte δ : V → R+ ein. Wir nenne δ auf ein Matching
abgestimmt, wenn
Unser Ziel ist es nun die Matchings M1 , . . . , Mn so zu konstruieren,
dass
◮
wir Mi über einen minimalen q-s-Pfad erweitern und
◮
hierbei kein negativer Kreis in HMi+1 entsteht.
◮
für alle Knoten u ∈ V1 , welche nicht mit einer Kante aus M
inzident sind, gilt δ(u) = 0,
◮
für alle {u, v } ∈ E mit u ∈ V1 , v ∈ V2 gilt
δ(u) + κ({u, v }) ≥ δ(v ) und
◮
Somit erhalten wir nach Lemma 29 ein perfektes Matching Mn mit
minimalen Kosten.
für alle {u, v } ∈ E mit u ∈ V1 , v ∈ V2 mit {u, v } ∈ M gilt
δ(u) + κ({u, v }) = δ(v ).
Für jede Kante (x, y ) ∈ EM mit x, y ∈ V1 ∪ V2 des Graphen HM
definieren wir
γδ ((x, y )) := δ(x) + γ((x, y )) − δ(y ) .
283
284
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Beachte: Die Werte γ((x, y )) für {x, y } ∈ M und (x, y ) ∈ EM sind
negativ und zudem ist x ∈ V2 und y ∈ V1 . Aus der Definition von
γδ ((x, y )) folgt jedoch, dass für solche Kanten γδ ((x, y )) = 0 ist.
Betrachten wir nun das Problem einen q-s-Weg mit minimalen
Kosten zu finden:
Beobachtung 11 Die Werte γδ ((x, y )) sind für alle Kanten (x, y )
in HM zwischen V1 und V2 bzw. V2 und V1 immer größer oder
gleich 0.
Folgen wir nun einem Kreis C in HM , so gilt folglich:
Beobachtung 12 Für alle Kreise C = w1 , . . . , wt mit w1 = wt in
HM gilt
t−1
X
i=1
γδ ((wi , wi+1 )) =
t−1
X
i=1
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
◮
Für einen Knoten v ∈ V1 ∪ V2 seien dδ,M (v ) die minimalen
Kosten eines Wegs von q nach v in HM bei Kostenfunktion γδ .
◮
Sei v ∈ V2 ein Knoten, der nicht mit einer Kante des
Matchings M inzident ist, dann sind die minimalen Kosten
eines q-v -Wegs in HM bei Kostenfunktion γ durch
dδ,M (v ) + δ(v ) gegeben.
Es gilt:
Lemma 30 Da die Kostenfunktion γδ positiv ist, können wir den
kürzesten Weg von q zu jedem Knoten v ∈ V1 ∪ V2 bezüglich der
Kostenfunktion γδ mit Hilfe des Algorithmus von Dijkstra in Zeit
O(|E | · log2 n) bestimmen. Um einen den kürzesten q-s-Pfad
bezüglich der Kostenfunktion γ zu bestimmen benötigen wir
zusätzliche Kosten O(n).
γ((wi , wi+1 )) ≥ 0 .
Beobachtung 13 Gibt es für ein Matching M eine abgestimmte
Gewichtsfunktion δ, dann gibt es in HM keinen negativen Kreis.
285
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Betrachten wir nun die Funktion δ0 (u) := 0 für alle u ∈ V1 und
δ0 (v ) := min{u,v }∈E κ({u, v }) für alle v ∈ V2 , dann erkennen wir:
286
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 31:
◮ {x, y } ∈ M und x ∈ V1 :
Beobachtung 14 δ0 ist eine mit M0 := ∅ abgestimmte
Gewichtsfunktion.
Wir müssen somit nur noch zeigen, dass wir über unser Verfahren
zum Erweitern eines Matchings Mi immer garantieren können, dass
eine für Mi+1 abgestimmte Gewichtsfunktion existiert:
◮
Lemma 31 M ein Matching und δ eine für M abgestimmte
Gewichtsfunktion. Sei ferner M ′ das Matching, welches wir aus M
erhalten, indem wir dieses bezüglich eines q-s-Wegs mit minimalen
Kosten in HM erweitern, dann ist
◮
◮
◮
Es gilt (y , x) ∈ EM ist die einzige mit der wir x betreten
können.
Es gilt dδ,M (x) = dδ,M (y ) + γδ ((y , x)) mit
γδ ((y , x)) := δ(y ) + γ((y , x)) − δ(x) = 0.
Somit erhöhen wir sowohl δ ′ (x) als auch δ ′ (y ) um den Wert
dδ,M (y ).
Die Werte von δ ′ (x) und δ ′ (y ) erfüllen somit bezüglich der
Kante {x, y } die Bedingungen einer für M ′ abgestimmten
Gewichtsfunktion.
δ ′ (v ) := δ(v ) + dδ,M (v )
eine für M ′ abgestimmte Gewichtsfunktion.
287
288
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Beweis von Lemma 31 (Teil 2):
◮ {x, y } ∈ M ′ \ M und x ∈ V1 :
◮
◮
◮
Beweis von Lemma 31 (Teil 3):
◮ {x, y } 6∈ M ′ ∪ M und x ∈ V1 :
Die Kante (x, y ) ∈ EM befindet sich auf dem q-y -Weg mit
minimalen Kosten.
Es gilt dδ,M (y ) = dδ,M (x) + γδ ((x, y )) mit
γδ ((x, y )) := δ(x) + γ((x, y )) − δ(y ).
Wir erhalten
δ ′ (x)
:= δ(x) + dδ,M (x)
δ ′ (y )
:= δ(y ) + dδ,M (y )
=
◮
◮
◮
Der Konten y muss auf einem kürzeren Pfad ohne die Kante
(x, y ) in HM von q erreichbar sein.
Es gilt dδ,M (y ) ≤ dδ,M (x) + γδ ((x, y )) mit
γδ ((x, y )) := δ(x) + γ((x, y )) − δ(y ).
Wir erhalten
δ ′ (x) + γ((x, y )) − δ ′ (y )
= δ(x) + dδ,M (x) + γ((x, y )) − δ(y ) − dδ,M (y )
≥ 0.
δ(x) + dδ,M (x) + κ({x, y }) .
Für den neuen Graphen HM ′ gilt ferner
◮
γ((y , x)) := −κ({x, y }) .
◮
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Andreas Jakoby
Universität zu Lübeck
Die Werte von δ ′ (x) und δ ′ (y ) erfüllen somit bezüglich der
Kante {x, y } die Bedingungen einer für M ′ abgestimmten
Gewichtsfunktion.
Die Werte von δ ′ (x) und δ ′ (y ) erfüllen somit bezüglich der
Kante {x, y } die Bedingungen einer für M ′ abgestimmten
Gewichtsfunktion.
289
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
Algorithmus Bipartites-Matching(G , κ)
Eingabe: ungerichteter bipartiter Graph G = (V1 ∪ V2 , E ) und
Kostenfunktion κ
Ergebnis: perfektes Matching M mit minimalen Kosten
1: Sei M = ∅ und initialisiere δ := δ0 .
2: while M ist kein perfektes Matching do
3:
Finde eine q-s-Weg Π mit minimalen Kosten in HM
4:
bezüglich der Kostenfunktion γδ
5:
Erweitere M bezüglich Π. Sei M ′ das neue Matching.
6:
Berechne eine für M ′ abgestimmte Gewichtsfunktion δ ′
7:
Setze M := M ′ und δ := δ ′ .
8: end while
290
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
11. Vorlesung, 8.1.2007
5.4 Die Komplexität des Matching-Problems
Die folgenden Ergebnisse präsentieren wir wieder ohne Beweis:
Satz 21 3DM und X3C sind N P-vollständig. Das Problem für
einen Graphen zu entscheiden, ob es für diesen ein perfektes
Matching gibt, kann in polynomieller Zeit gelöst werden.
Der Beweis der N P-Vollständigkeit von 3DM und somit auch für
X3C kann in vielen Lehrbüchern der Komplexitätstheorie
nachgelesen werden. Der Beweis, dass ein perfektes Matching in
polynomieller Zeit generiert werden kann, ist sehr aufwendig und
ist daher nur in wenigen Lehrbüchern zu finden.
Satz 20 Bipartites-Matching findet ein perfektes Matching mit
minimalen Kosten für ungerichtete bipartite Graphen
G = (V1 ∪ V2 , E ) mit |V1 | = |V2 | = n in Zeit O(|E | · n · log2 n).
291
292
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
5.5 Eine Anwendung für das 2-dimensionalen Matching
Approximation von Rundwegen
◮
Satz 22 Der Algorithmus von Cristofides berechnet in Zeit
O(|V |3 ) auf Eingabe eines gewichteten vollständigen Graphen
G = (V , E ), dessen Kantengewichtsfunktion die
Dreiecksungleichung erfüllt, einen Rundweg, der alle Knoten
mindestens einmal besucht und dessen Kosten maximal um den
Faktor 23 schlechter sind als die Kosten eines optimalen Rundwegs.
Wir betrachten nun folgende Variante des Rundwege
Problems:
◮
◮
◮
Gegeben ist ein vollständiger Graph G = (V , E ), d.h. es
existiert eine Kante zwischen jedem Knotenpaar aus V .
Gegeben eine Kantengewichtsfunktion f : E → R+ , die die
Dreiecksungleichung erfüllt, d.h.
f ({u, w }) ≤ f ({u, v }) + f ({v , w }) für alle u, v , w ∈ V .
Gesucht ist ein Rundweg, der alle Knoten mindestens einmal
besucht und der minimale Kosten besitzt.
◮
Dieses Problem wird in der Literatur auch metrisches TSP
(Traveling Salesperson Problem) genannt.
◮
Viele Rundreiseprobleme, die in der Praxis vorkommen, können
wir so darstellen, dass sie dem metrischen TSP entsprechen.
◮
Dieses Problem ist N P-vollständig.
Anstelle des Algorithmus von Cristofides wollen wir zunächst einen
sehr einfachen und schnellen Algorithmus vorstellen, der zwar nur
einen um den Faktor ≤ 2 schlechtere Rundreise konstruiert, für den
wir aber nur auf das MST und das Eulertour Problem
zurückgreifen müssen.
293
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
294
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Das Königsberger Brückenproblem – die Eulertour
◮
Algorithmus TSP-via-MST(G )
Eingabe: ungerichteter Graph G
Ergebnis: eine Rundreise
1: Finde einen MST T von G .
2: Verdopple die Kanten in T . Sei T ′ der resultierende Multigraph.
3: Berechne eine Eulertour auf T ′ .
4: Gebe die Knoten in der Reihenfolge aus, in der sie besucht
5:
werden.
In der Innenstadt von Königsberg vereinigen sich der Alte und
der Neue Pregel zum Pregelfluß. Im 18. Jahrhundert führten 7
Brücken über die verschiedenen Flüsse, die die vier Stadtteile
A, B, C und D miteinander verbanden.
Stadtteil C
Stadtteil B
Stadtteil D
Stadtteil A
◮
295
Der damalige Herrscher von Königsberg frage sich, ob es
möglich ist eine Rundfahrt (Start- und Zielort sind gleich) zu
unternehmen, wobei jede Brücke genau einmal überquert wird.
296
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
◮
C
D
A
◮
◮
◮
◮
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Algorithmus Eulertour(G )
Eingabe: ungerichteter Graph G
Ergebnis: eine Eulertour in G oder keine Tour, wenn keine
Eulertour existiert
1: Sei v ein beliebiger Knoten in G und S eine leerer Stack.
2: Lege v auf S ab und sei Π ein Pfad der nur aus v besteht.
3: while S ist nicht leer do
4:
Sei v der oberste Stackeintrag, entferne v von S.
5:
Suche einen Kreis in G von v nach v , indem wir sukzessive
6:
noch nicht benutzte Kanten benutzen und diese aus G löschen.
7:
if es existiert kein solcher Kreis then Return(keine Tour) end if
8:
Sei Π′ der gefundene Kreis von v nach v .
9:
Füge in S alle Knoten aus Π′ ein, die noch Kanten in G haben.
10:
Ersetze ein Vorkommen von v in Π durch Π′ .
11: end while
12: if alle Kanten aus G wurden gelöscht und alle Knoten besucht
13: then Return(Π) else Return(keine Tour) end if
Die Antwort geht auf Euler zurück, der die Stadt 1736 als
Graph modellierte.
B
Andreas Jakoby
Universität zu Lübeck
Gibt es für einen Startknoten v einen Weg von v nach v , der
alle Kanten genau einmal durchläuft?
Euler zeigte:
Satz 23: In einem zusammenhängenden Graph existiert genau
dann ein Rundweg, der alle Kanten genau einmal besucht,
wenn alle Knoten im Graphen einen geraden Grad besitzen.
In Königsberg gab es keinen derartigen Rundweg.
Eine Eulertour kann in Zeit O(|E |) konstruiert werden.
297
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
298
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
5.6 2-dimensionales Matching
Algorithmus von Cristofides
Wie wir aus dem Algorithmus von Christofides erkennen, ist es eine
lohneswerte Aufgabe mehr über das 2-dimensionale Matching zu
erfahren. Wir wollen daher im Folgenden einen PolznomialzeitAlgorithmus für dieses Problem herleiten. Wir definieren:
Algorithmus Cristofides(G )
Eingabe: ungerichteter Graph G
Ergebnis: eine Rundreise
1: Finde einen MST T von G .
2: Sei G ′ der vollständige Teilgraph von G , der aus den Knoten
3:
von G besteht, die in T ungeraden Grad haben.
4: Sei M ein minimales perfektes Matching in G ′ .
5: Sei G ′′ der Multigraph den wir durch die Vereinigung von M
6:
und T erhalten.
7: Berechne eine Eulertour auf G ′′ .
8: Gebe die Knoten in der Reihenfolge aus, in der sie besucht
9:
werden.
Definition 19 Sei M ⊆ E ein Matching für einen Graph G = (V , E ).
299
◮
Eine Kante e ∈ M nennen wir matched oder überdeckt, alle
verbleibenden Kanten nennen wir frei.
◮
Knoten, die mit einer überdeckten Kante inzident sind,
nennen wir auch matched oder überdeckt.
◮
Sei {u, v } ∈ M, dann nennen wir u den Partner (engl. mate)
von v .
◮
Einen Knoten v nennen wir unbenutzt oder offen (engl.
exposed), wenn er nicht mit einer überdeckten Kante inzident
ist.
300
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Definition 19 (Teil 2) Wir nennen einen Pfad Π = u1 , . . . , uk
◮
◮
Analog zu Beobachtung 8 auf Folie 280 gilt:
alternierend, wenn die Kanten {u1 , u2 }, {u3 , u4 }, . . . frei und
die Kanten {u2 , u3 }, {u4 , u5 }, . . . überdeckt sind.
Beobachtung 15 Sei M ein Matching und Π ein augmentierender
Pfad bezüglich M, dann ist M∆E (Π) ebenfalls ein Matching und
augmentierend oder Verbesserungspfad, wenn Π
alternierend ist und u1 und uk unbenutzt sind.
|M ∆ E (Π)| = |M| + 1 .
Sei Π = u1 , . . . , uk ein augmentierender Pfad, dann nennen wir die
Knoten auf den ungeraden Positionen äußere (engl. outer) und die
Knoten auf den geraden Positionen innere (engl. inner) Knoten.
Ferner gilt:
Satz 24 Ein Matching M für einen Graphen G = (V , E ) ist genau
dann maximal, wenn es keinen augmentierender Pfad bezüglich M
gibt.
Für einen Pfad Π = u1 , . . . , uk sei
E (Π) := { {ui , ui+1 } | i ∈ {1, . . . , k − 1} }
Beweis von Satz 24: Die erste Richtung dieses Beweises folgt
unmittelbar aus Beobachtung 15: Gibt es einen augmentierenden
Pfad, dann kann M nicht maximal sein.
und
M ∆ E (Π) := (M \ E (Π)) ∪ (E (Π) \ M)
die symmetrische Differenz von M und E (Π).
301
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
302
Im Prinzip basieren die meisten Matching-Algorithmen auf
folgendem Ansatz:
Beweis von Satz 24 (Teil 2): Für die Rückrichtung zeigen wir,
dass die für den Fall, dass M nicht maximal ist, ein
augmentierender Pfad existiert. Sei M ′ ein optimales Matching,
d.h. |M ′ | > |M|. Wir betrachten nun den Graphen
◮
Starte mit einem Matching M, z.B. dem leeren Matching.
◮
Suche einen augmentierenden Pfad Π und setze
G ′ := (V , M ∆ M ′ ) = (V , (M \ M ′ ) ∪ (M ′ \ M)) .
◮
◮
◮
◮
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
M
Da jeder Knoten maximal zu einer Kante in M und zu einer
Kante in M ′ inzident ist, ist der Grad jedes Knotens in G ′
maximal 2.
◮
:= M ∆ E (Π) .
Widerhole diesen Schritt, bis kein augmentierender Pfad mehr
existiert.
Wir müssen also nur noch die Frage beantworten, wie wir einen
augmentierenden Pfad finden.
Die zusammenhängenden Konponenten in G ′ sind somit
entweder einzelne Knoten oder Kreise oder Pfade.
In unserem Algorithmus gehen wir davon aus, dass ein Matching
M über ein Feld mate gegeben ist:
Da |M ′ | > |M| muss es einen Pfad in G ′ geben, der eine
Kante mehr aus M ′ als aus M besitzt.
◮
Dieser Pfad ist somit ein augmentierender Pfad bezüglich M.
◮
303
für alle offene Knoten u ∈ V ist mate[u] = 0 und
für alle überdecken Knoten u ∈ V mit {u, v } ∈ M ist
mate[u] = v .
304
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Wir betrachten nun einen gerichteten Hilfsgraphen, den wir mit
Hilfe der folgenden Prozedur erhalte:
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Beispiel: Rot das Matching, Blau ein fehlerhafter augmentierender
Pfad und Grün ein augmentierender Pfad.
Algorithmus AuxiliaryDigraph(G , s,mate)
Eingabe: ungerichteter Graph G = (V , E ), Startknoten s und
Matching M gegeben über ein Feld mate
Ergebnis: ein Hilfsgraph H und Feld exposed
1: E ′ := ∅
2: for all v ∈ V do exposed[v ] := 0 end for
3: for all {u, v } ∈ E (wiederhole für {u, v } und für {v , u}) do
4:
if mate[v ] = 0 und v 6= s then
5:
exposed[u] := v
6:
else
7:
if mate[v ] 6∈ {0, u} then E ′ := E ′ ∪ {(u, mate[v ])} end if
8:
end if
9: end for
10: Return((V , E ′ ), exposed)
v0
v0
v1
v2
v3
v4
v5
v6
v8
v9
v1
v2
v3
v4
v5
v6
v8
v9
v0
v7
v0
v7
v1
v2
v3
v4
v5
v6
v8
v9
v1
v2
v3
v4
v5
v6
v8
v9
v7
v7
306
305
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Definition 20
◮
Sei s ein offener Knoten und
(H, exposed) := AuxiliaryDigraph(G , s, mate) ,
◮
dann gilt:
◮
◮
Zu jedem augmentierenden Pfad Π mit Startknoten s
korrespondiert ein Pfad Π′ von s zu einem Knoten v mit
exposed[v ] 6= 0, der genau die äußerne Knoten von Π besucht.
Ein Kreis C = u0 , . . . , u2k , u0 nennen wir Blüte (engl. blossom)
bezüglich eines Matchings, wenn es in C k überdeckte und
k + 1 freie Kanten {ui mod (2k+1) , u(i+1) mod (2k+1) } gibt.
In einer Blüte gibt es einen Knoten ui (o.B.d.A. u0 ) mit zwei
freien Kanten {u2k , u0 }, {u0 , u1 } 6∈ M. Diesen Knoten nennen
wir die Basis der Blüte.
v1
Ist Π′ ein Pfad in H von einem Knoten von s zu einem
Knoten v mit exposed[v ] 6= 0, dann entspricht dieser Pfad
einem augmentierenden Pfad Π in G , es sei denn ...
Dieses es sei denn ..., d.h. die Form von blauen Pfaden (Folie 306),
müssen wir nun etwas näher betrachten.
v1
307
v2
v2
v4
v5
v6
v9
v8
v7
v4
v5
v6
v9
v8
v7
v3
v3
308
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Sei G = (V , E ) ein ungerichteter Graph, M ⊆ E ein Matching in
G , s ∈ V ein offener Knoten in G und H = (V , E ′ ) mit
(H, exposed) := AuxiliaryDigraph(G , s,mate). Sei C = u0 , . . . , uk
eine Blüte in G , dann definieren wir für C einen neuen Knoten vC die
Graphen G /C := (V /C , E /C ) und H/C := (V /C , E ′ /C ) wie folgt
Aufgrund der Blüten entspricht ein s-u-Pfad Π′ mit exposed[u] 6= 0
im Hilfsgraph H nicht immer einem augmentierenden Pfad Π. Um
dieses Problem zu beseitigen, wollen wir Blüten aus dem Graphen
entfernen.
V /C
E /C
Wir entfernen jedoch nur solche Blüten, welche wir auf der Suchen
nach einem augmentierenden Pfad entdecken!
′
E /C
:= (V \ {u0 , . . . , uk }) ∪ {vC }
:= (E \ { {v , ui } | ui ∈ C , v ∈ V })
′
∪{ {v , vC } | v ∈ V /C und ∃ui ∈ C : {v , ui } ∈ E }
:= (E \ { (v , ui ), (ui , v ) | ui ∈ C , v ∈ V })
∪{ (v , vC ) | v ∈ V /C und ∃ui ∈ C : (v , ui ) ∈ E }
M/C
∪{ (vC , v ) | v ∈ V /C und ∃ui ∈ C : (ui , v ) ∈ E }
:= (M ∩ E /C )
∪{ {v , vC } | v ∈ V /C und ∃ui ∈ C : {v , ui } ∈ M }
d.h. mate[vC ] := mate[u0 ] für die Basis u0
309
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
310
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Beispiel: Die reduzierten Graphen für die Blüte v6 , v7 , v9 :
v0
Ferner setzen wir exposed[vC ] :=exposed[u0 ] für die Basis u0 von
C.
v1
v2
v3
v4
v5
v6
v8
v9
v1
v2
v3
v4
v5
vC
Den Knoten vC wollen wir im Folgenden den Knospenknoten für
C und den Graphen G /C den um C reduzierten Graphen nennen.
v0
v8
311
v0
v7
v0
v1
v2
v3
v4
v5
v6
v8
v9
v1
v2
v3
v4
v5
vC
v7
v8
312
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Wir müssen nun die Frage untersuchen, wie wir eine Blüte finden
bzw. erkennen und dann diese entfernen. Betrachten wir zunächst
jedoch die Frage, wie wir nach einem augmentierenden Pfad
suchen:
◮ wir starten in einem offenen Knoten s
◮ und traversieren von s aus G , ähnlich der Breitensuche.
Hierbei gehen wir von einem Knoten u immer zu allen Knoten v ,
die eine Entfernung von zwei zu u haben, und zu denen ein Pfad
bestehen aus einer freien gefolgt von einer überdeckten Kante existiert:
1: Q := {s}
2: while Q 6= ∅ do
3:
wähle u ∈ Q und setze Q := Q \ {u}
4:
for all nicht besuchte Knoten v ∈ V mit (u, v ) ∈ E ′ do
5:
Q := Q ∪ {v }
6:
if exposed[v ] 6= 0 then augmentierender Pfad gefunden end if
7:
if v schließt eine Blüte C then entferne C end if
8: end for end while
313
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Beispiel:
s
s
v1
v2
v3
v4
v5
v6
v8
v9
v1
v2
v3
v4
v5
v6
s
v7
s
v7
v1
v2
v3
v4
v5
v6
v8
v9
v1
v2
v3
v4
v5
v6
v7
v7
mate[v7 ] = v9
v8
v9
v8
v9
mate[v9 ] = v7
314
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Wie können wir den Traversionsbaum speichern und erkennen, ob
ein Knoten schon einmal besucht wurde:
Wir können erkennen:
◮
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Ein Knoten v schließt eine Blüte, wenn wir den Partner des
Knotens im Matching bereits betrachtet haben.
◮
Daher modifizieren wir unser Programm von Folie 313 wie folgt:
1: Q := {s}
2: for all v ∈ V do seen[v ] := 0 end for
3: while Q 6= ∅ do
4:
wähle u ∈ Q und setze Q := Q \ {u}
5:
for all nicht besuchte Knoten v ∈ V mit (u, v ) ∈ E ′ do
6:
Q := Q ∪ {v }
7:
seen[mate[v ]] := 1
8:
if exposed[v ] 6= 0 then augmentierender Pfad gefunden end if
9:
if seen[v ] = 1 then entferne gefundene Blüte C end if
10: end for end while
315
Mit Hilfe eines Felds label speichern wir die rückwärts
gerichteten Kanten des Baums.
Daher modifizieren wir unser Programm von Folie 315 wie folgt:
1: for all v ∈ V do label[v ] := −1 end for
2: Q := {s}, label[s] := 0
3: for all v ∈ V do seen[v ] := 0 end for
4: while Q 6= ∅ do
5:
wähle u ∈ Q und setze Q := Q \ {u}
6:
for all v ∈ V mit (u, v ) ∈ E ′ und label[v ] = −1 do
7:
Q := Q ∪ {v }
8:
seen[mate[v ]] := 1, label[v ] := u
9:
if exposed[v ] 6= 0 then augmentierender Pfad gefunden end if
10:
if seen[v ] = 1 then entferne gefundene Blüte C end if
11: end for end while
316
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Sei T der über label gegebenen Baum und v ein Knoten mit
seen[v ] = 1.
Beispiel:
s
v1
v2
v3
v4
v5
v6
v8
◮
Dann ist der erste gemeinsame Knoten b des v -s-Pfads Πv ,s
in T mit dem mate[v ]-s-Pfad Πmate[v ],s in T die Basis der
Blüte, die durch v geschlossen wurde.
◮
Sei Πv ,s = v , u1 , . . . , ua , b, w1 , . . . , wc , s und
Πmate[v ],s = mate[v ], v1 , . . . , vd , b, w1 , . . . , wc , s, dann
definieren wir
v7
v9
Baum gegeben über
das Feld label
s
s
v1
v2
Bv
v3
v4
v5
v6
v7
v6
v8
v9
:= b, mate[vd ], vd , mate[vd−1 ], . . . , v1 , v ,
mate[v ], u1 , mate[u1 ], . . . , mate[ua ], b .
v2
seen[v9 ] = 1
v8
v9
Bv ist eine Blüte mit Basis b.
Wir wollen nun noch einige wichtige Sätze bezüglich der
betrachteten Graphen und Matchings, sowie der konstruierten
(bzw. gefundenen Blumen) aufführen.
v7
318
317
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Beweis von Satz 25: Der Fall, dass ein augmentierenden Pfad in
G /Bv existiert, wenn ein augmentierender Pfad in G existiert, ist
für die Beschreibung unseres Verfahrens nicht relevant. Daher
werden wir diesen Fall nur kurz beschreiben, und genauer auf die
Rückrichtung eingehen.
Beobachtung 16 Sei Bv eine Blüte, die wir mit Hilfe des
Programm-Fragments auf Folie 316 gefunden haben, dann existiert
ein alternierender Pfad von s zu jedem Knoten in Bv , welcher mit
einer überdeckten Kante endet.
Satz 25 Sei Bv eine Blüte, die wir mit Hilfe des
Programm-Fragments auf Folie 316 gefunden haben, dann existiert
genau dann ein augmentierender Pfad startend in s bezüglich M
in G , wenn es einen augmentierenden Pfad startend in s (bzw. in
vBv , wenn s die Basis von Bv ist) bezüglich M/Bv in G /Bv gibt.
Aus einem augmentierenden Pfad in G /Bv können wir zudem
effizient den augmentierenden Pfad in G berechnen.
Existiert ein augmentierender Pfad Π in G und haben wir auf der
Suche nach diesem Pfad eine Blüte Bv entdeckt, wobei Π′ der
gefundenen alternierende Pfad von s zur Basis von Bv ist, dann
unterscheiden wir die folgenden Fälle:
◮ Π betritt Bv nicht,
◮ Π betritt oder verläßt Bv über eine überdeckte Kante, d.h.
über die Basis von Bv ,
◮ Π betritt und verläßt Bv über freie Kanten und Π schneidet Π′
nicht oder
◮ Π betritt und verläßt Bv über freie Kanten und Π schneidet Π′ .
Für jeden dieser Fälle können wir einen augmentierenden Pfad aus
Π und Π′ in G /Bv konstruieren.
Bemerkung Haben wir also eine solche relevante Blüte gefunden,
dann können wir diese ohne bedenken entfernen und die Suche im
reduzierten Graphen fortsetzen.
319
320
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Beweis von Satz 25 (Teil 2): Um die Rückrichtung zu zeigen,
geben wir einen Algorithmus an, der aus einem augmentierenden
Pfad Π in G /Bv und der Blüte Bv einen augmentierenden Pfad in
G generiert.
Algorithmus AddBlossom(Π, vBv )
Eingabe: augmentierender Pfad Π für G /Bv und Knospenknoten vBv
mit Blüte Bv = b, u1 , . . . , uk , b und Basis b
Ergebnis: augmentierender Pfad Π′ für G
1: if Knospenknoten vBv für Bv ist nicht in Π then Return(Π)
2: else
3:
Sei Π = Πl , vl , vBv , vr , Πr für Teilpfade Πl und Πr
4:
if {vl , vBv } ist frei then h := vl else h := vr end if
5:
Sei h′ ein Knoten aus Bv mit {h, h′ } ∈ E (es gilt {h, h′ } 6∈ M)
6:
Π′′ ein alternierender Pfad in Bv von b nach h′
7:
if {vl , vBv } ist frei then Π′′ invertierter Pfad Π′′ end if
8:
Return(Πl , vl , Π′′ , vr , Πr )
9: end if
321
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Bemerkung Da es bei der Suche nach einem augmentierenden
Pfad mehrere Blüten Bv entdeckt werden können, kann der
resultierende augmentierende Pfad auch mehrere Knospenknoten
enthalten. Wir müssen dann für jeden dieser Knoten die Prozedur
AddBlossom aufrufen.
Beweis von Satz 25 (Teil 3): Im Algorithmus AddBlossom haben
wir den Fall unterschlagen, dass Π im Knospenknoten vBv startet.
In diesem Fall ist Πl der leere Pfad und vl nicht definiert. Wir
können annehmen, dass (vl , vBv ) nicht frei ist, und wählen h := vr .
Die Ausgabe ist in diesem Fall Π′′ , vr , Πr für den nicht-invertierten
Pfad Π′′ .
322
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Gegeben ein Matching M für unseren Startgraphen G und ein
augmentierender Pfad Π für einen (möglicherweise) reduzierten
Graphen G ′ , dann können wir ein neues Matching wie folgt
bestimmen:
Bemerkung Wir werden sehen, dass wir innerhalb der while-Schleife
des Programm-Fragments von Folie 316 nur in der Prozedur
AddBlossom auf den ungerichteten Graphen G zurückgreifen
müssen. Für diese Prozedur spielt es aber keine Rolle, ob es in E
noch einige Kanten gibt, die im betrachteten Graph G eigentlich
nicht mehr vorhanden sind. Daher genügt es, wenn wir diesen
Graphen für eine gefundene Blüte Bv um den Knospenknoten vBv
und die entsprechenden Kanten erweitern und die eigentliche
Reduktion H/Bv nur im Hilfsgraphen H durchführen, der
wiederum bei dem Aufbau des augmentierenden Pfads in
AddBlossom nicht mehr benötigt wird.
323
Algorithmus Augment(Π, M)
Eingabe: augmentierender Pfad Π und ein Matching M
Ergebnis: erweitertes Matching von M
1: while es gibt einen Knospenknoten in Π do
2:
wähle eine Knospenknoten vBv in Π
3:
Π := AddBlossom(Π, vBv )
4: end while
5: Return(M ∆ E (Π))
324
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Wir fassen nun unsere Überlegungen zum Erweitern eines
Matchings M über augmentierende Pfad startend bei einem
offenen Knoten s zusammen und erweitern das
Programm-Fragment von Folie 316 entsprechend.
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Im Anschluß erweitern wir den Traversionsbaum bis wir einen
augmentierenden Pfad gefunden haben:
9:
10:
Algorithmus ModifyMatching(G , s, M)
Eingabe: ungerichteter Graph G = (V , E ), offener Startknoten s
und ein Matching M
Ergebnis: erweitertes Matching von M
1: for all u ∈ V do mate[u] := 0 end for
2: for all {u, v } ∈ M do mate[u] := v ; mate[v ] := u end for
3: (H, exposed) := AuxiliaryDigraph(G , s, mate)
4: if exposed[s] 6= 0 then
5:
Π := s, exposed[s]; Return(Augment(Π, M))
6: end if
7: for all v ∈ V do label[v ] := −1; seen[v ] := 0 end for
8: Q := {s}, label[s] := 0
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
while Q 6= ∅ do
wähle u ∈ Q und setze Q := Q \ {u}
for all v ∈ V mit (u, v ) ∈ E ′ und label[v ] = −1 do
Q := Q ∪ {v }
seen[mate[v ]] := 1, label[v ] := u
if exposed[v ] 6= 0 then
Π := v , exposed[v ]
while v 6= s do
Π := label[v ], mate[v ], Π
v := label[v ]
end while
Return(Augment(Π, M))
end if
325
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
326
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Treffen wir auf der Suche nach einem augmentierenden Pfad auf
eine Blüte, so müssen wir diese entfernen.
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
if seen[v ] = 1 then
bestimme Blüte Bv mit Hilfe des Traversionsbaums,
der über label gegeben ist
sei b die Basis von Bv
wähle einen neuen Knoten vBv
setze blossom[vBv ] := Bv
setze H := H/Bv , G = (V ∪ {vBv }, E ∪ (E /Bv ))
for all v ∈ V mit label[v ] in Bv do label[v ] := vBv end for
setze mate[vBv ] :=mate[b]
setze exposed[vBv ] :=exposed[b]
setze Q := (Q \ Bv ) ∪ {vBv }
end if
end for end while
Return(M)
327
Aus unseren Überlegungen können wir folgern:
Lemma 32 Existiert ein augmentierender Pfad von s zu einem
anderen offenen Knoten in G mit Matching M, dann generiert
ModifyMatching(G , s, M) ein neues Matching M ′ mit
|M ′ | = |M| + 1.
Beobachtung Unter Verwendung von entsprechenden effizienten
Datentypen, ist die Laufzeit von ModifyMatching(G , s, M) in
O(|V |3 ).
328
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Betrachten wir nun die offenen Knoten v , für die es bezüglich eines
Matchings keinen augmentierenden Pfad mit Startknoten v gibt:
Wir müssen nun noch analysieren, welche Knoten sich als
Startknoten s eignen. Es gilt:
Lemma 33 Existiert kein augmentierender Pfad startend in einem
offenen Konten s bezüglich eines Matching M, und sei Π ein
beliebiger augmentierender Pfad bezüglich M, dann existiert auch
kein augmentierender Pfad startend in s bezüglich Augment(Π, M).
Beobachtung Ist für ein Matching M ein Knoten v ∈ V
überdeckt, dann ist für jeden augmentierenden Pfad Π der Knoten
v auch in dem Matching Augment(Π, M) überdeckt.
Finden wir also in ModifyMatching(G , s, M) einen
augmentierenden Pfad, ist s in dem resultierenden Matching
überdeckt und kann im Folgenden als Startknoten ausgeschlossen
werden.
Beweis von Lemma 33: Der Beweis erfolgt über einen
Widerspruch. Sei Π′ ein augmentierender Pfad startend in s
bezüglich Augment(Π, M). Dann können wir mit Hilfe von Π und
Π′ einen augmentierender Pfad startend in s bezüglich M
generieren.
329
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
330
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Algorithmus GeneralMatching(G )
Eingabe: ungerichteter Graph G = (V , E )
Ergebnis: optimales Matching für G
1: M := ∅
2: for all u ∈ V do considered[u] := 0 end for
3: while es existiert ein Knoten s ∈ V mit considered[s] = 0 do
4:
considered[s] := 1
5:
if s ist offen then
6:
M := ModifyMatching(G , s, M)
7:
end if
8: end while
Beobachtung Modifizieren wir ein gegebenes Matching M
sukzessive mit Hilfe des Algorithmus ModifyMatching und existiert
kein augmentierender Pfad startend in einem offenen Konten s
bezüglich M, dann können wir s als Startknoten für alle
zukünftigen Aufrufe von ModifyMatching ausschließen. Jeden
Knoten müssen wir somit maximal einmal Startknoten in
ModifyMatching einsetzen.
Fassen wir diese Überlegungen zusammen, so können wir einen
Algorithmus für das Matchingproblem vorstellen.
Satz 26 GeneralMatching(G ) generiert ein optimales Matching für
G in Zeit O(|V |4 )
331
332
Algorithmik WS 06/07
12. Vorlesung, 15.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
5.7 Gewichtetes 2-dimensionalen Matching
Zur Erinnerung: Wir betrachten einen ungerichteten Graphen
G = (V , E ) mit Kantengewichten κ : E → R. Gesucht ist ein
optimales Matching M ⊆ E , für das
X
κ(e)
Aus der Literatur ist bekannt:
Satz 27 Ein optimales Matching für ungerichtete Graphen kann in
Zeit O(|V |5/2 ) generiert werden.
e∈M
minimal ist. Sei n = |V |. Im Folgenden nehmen wir an, dass n
gerade ist.7
7
Sollte n ungerade sein, dann fügen wir zu V einen isolierten Knoten hinzu.
333
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
P
Sei V = {1, . . . , n}, κ∗ := 2 · e∈E κ(e) und
κ({i, j}) falls {i, j} ∈ E
ci,j :=
κ∗
sonst,
334
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Da das Problem ein Integer lineares Programm zu lösen jedoch
N P-schwierig ist, suchen wir nach Möglichkeiten ein Eingabe für
das gewichtete 2-dimensionale Matching-Problem als reelles
lineares Programm darzustellen. Betrachten wir das ILP von Folie
335 als RLP, so besteht die Gefahr, dass in einem Lösungsvektor
einzelne Variablen xi,j nicht-ganzzahlige Werte annehmen. Solche
Werte ergeben jedoch im Kontext des gewichteten 2-dimensionalen
Matchings keinen Sinn.
dann können wir das gewichtetes 2-dimensionalen Matching durch
das folgende ILP lösen:
X
minimiere
ci,j · xi,j
i,j∈[1..n]
unter den Bedingungen
Pn
◮
j=1 xi,j = 1 für alle i ∈ {1, . . . , n}
◮ xi,j = xj,i ≥ 0 und xi,i = 0 für alle i, j ∈ {1, . . . , n}.
Ein optimales Matching M mit minimalem Gewicht erhalten wir
über
M = { {i, j} ∈ E | xi,j = 1 } .
Wie schon beim ungewichteten Fall, können wir auch für den
gewichteten Fall zeigen, dass das wesentliche Problem im Umfeld
der Kreise mit ungerader Länge zu finden ist.
335
336
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Es gilt:
Satz 28 [Edmonds] Das gewichtete 2-dimensionale
Matching-Problem mit Kostenfunktion κ({i, j}) := ci,j für alle
i, j ∈ {1, . . . , n} ist äquivalent zum RLP
X
minimiere
ci,j · xi,j
Für unser LP verallgemeinern wir den Begriff des Kreise mit
ungerader Länge:
◮
◮
◮
Wir betrachten die Teilmengen S1 , . . . , Sm ⊆ {1, . . . , n} mit
ungerader Kardinalität und |Si | > 1 (für alle i ∈ {1, . . . , m}).
i,j∈[1..n]
Wir wählen si , so dass |Si | = 2si + 1 ist.
unter den Bedingungen
Pn
◮
j=1 xi,j = 1 für alle i ∈ {1, . . . , n},
Es gilt m = 2n−1 − n.
◮
◮
xi,j = xj,i ≥ 0 und xi,i = 0 für alle i, j ∈ {1, . . . , n} und
P
yk + i,j∈Sk xi,j = sk und yk ≥ 0 für alle k ∈ {1, . . . , m}.
338
337
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Bemerkungen zum Satz 28:
◮
◮
◮
◮
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
In unserem Verfahren bestimmen wir für alle Knoten i eine Folge
Da m exponentiell ist, erhalten wir aus dem gegebenen LP
noch keinen effizienten Algorithmus.
αit
mit αi0 :=
Um dieses Satz zu beweisen, müssen wir zeigen, dass das
gegebene LP immer eine ganzzahlige optimale Lösung besitzt,
welche zu einem optimalen Matching korrespondiert.
und für alle Kreise Sk eine Folge
Es kann gezeigt werden, dass die sogenannte
Primal-Dual-Methode immer in eine ganzzahlige und
optimale Lösung konvergiert.
Hierbei gilt für alle t und i, j, k
γkt
mit γk0 := 0 .
X
αit + αjt +
Da auf die Primal-Dual-Methode in dieser Vorlesung nicht
eingegangen wurde, verzichten wir auf den Beweis und die
Analyse des daraus resultierenden Verfahrens und stellen
stattdessen nur den Algorithmus und einige wesentliche
Punkte auf dem Weg zu diesem Verfahren vor.
1
· min ci,j
2 j∈V
γkt
k mit i,j∈Sk
≤ ci,j
und
γkt
339
≤ 0.
340
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Wir definieren
◮
Jet als die Menge aller zulässigen Kanten, d.h. die Menge der
Kanten {i, j} mit
X
αit + αjt +
γkt = ci,j
Wir betrachten nun die folgenden Graphen
k mit i,j∈Sk
◮
Jbt als die Menge aller zulässigen Kreise, d.h. die Menge der
Kreise Si mit
γkt = 0 .
◮
Ferner sei
t
t
Somit gilt für alle Si ∈ J b
γkt
G t := (V , Jet ) und
◮
den zulässigen Graphen GJt := (VJt , EJt ), den wir durch
t
sukzessives reduzieren der Mengen aus J b erhalten. Um einen
Graphen G um eine Knotenmenge Si zu reduzieren, d.h. G /Si
zu berechnen, gehen wir analog zum Reduzieren eines
Graphen um einen Kreis C auf Folie 310 vor.
Sukzessive konstruieren wir zu jedem Graph G t ein Matching M t .
Analog zum zulässigen Graphen definieren wir das zulässigen
t
Matching M t /J b als das Matching von GJt welches wir aus M t
t
durch sukzessives reduzieren der Mengen aus J b erhalten.
:= { Si | Si 6∈ Jbt } .
Jb
◮
< 0.
341
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
9
8
11
B
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Für die von uns konstruierten Mengen und Graphen sollen folgende
Eigenschaften gelten:
t
Beispiel: G t und GJt für J b := {{1, 2, 3}, {1, 2, 3, 4, 10}, {7, 8, 9}}:
1
342
11
Eigenschaftsannahme
t
2
3
10
4
5
12
7
6
1. Ist Si ∈ J b , dann hat der Graph G t eingeschränkt auf die
Knotenmenge Si , genau si überdeckte Kanten, d.h.
|M t ∩ 2Si | = si . Ein Matching M, welches diese Voraussetzung
t
erfüllt, d.h. für alle Si ∈ J b gilt |M ∩ 2Si | = si nennen wir ein
passendes Matching.
12
A
5
6
Im Wesentlichen werden wir in unserem Algorithmus perfekte
Matchings auf zulässigen Graphen GJt bei gegebenen zulässigen
t
Matching M t /J b berechnen, und hierbei unseren Algorithmus
ModifyMatching von Folie 325 anwenden.
t
2. Sind Si , Sj ∈ J b und Si ∩ Sj 6= ∅, dann ist entweder Si ⊆ Sj
oder Si ⊇ Sj .
Aus der zweiten Eigenschaftsannahme können wir unmittelbar
t
folgern, dass |J b | ≤ n/2 für alle t ist.
343
344
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Wir wenden nun iteriert unseren Algorithmus ModifyMatching von
Folie 325 auf den zulässigen Graphen GJt an, bis wir keinen
augmentierenden Pfad mehr finden können. Sei Mct das
resultierende optimale Matching für GJt . Ferner sei Gct = (Vct , Ect )
der Graph, den wir durch das reduzieren der Blumen aus GJt
(bezüglich Mct ) erhalten, die wir mit Hilfe von ModifyMatching
startend in einem offenen Knoten entdecken können.
Betrachten wir in Gct wieder alternierende Pfade, die in noch nicht
überdeckten Knoten starten, so können wir die Knotenmenge Vct in
Die Knoten von Gct nennen wir Pseudoknoten. Ein Pseudoknoten
ist entweder
◮
ein Knoten aus V oder
◮
ein Repräsentant einer Menge aus J b oder
◮
ein Knospenknoten einer Blüte.
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
t
◮
innere Knoten, d.h. Knoten, die von einem offenen Knoten
über einen alternierenden Pfad ungerader Länge erreicht
werden können, und
◮
äußere Knoten, d.h. Knoten, die von einem offenen Knoten
über einen alternierenden Pfad gerader Länge erreicht werden
können, und
◮
Knoten die von einem offenen Knoten über einen
alternierenden Pfad nicht erreicht werden können
partitionieren.
Bemerkung: Eine Blüte stellt einen Kandidaten für einen neuen
t+1
Kandidaten für eine Menge ungerader Kardinalität für J b dar.
346
345
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
.
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
.
Wir partitionieren die Menge aller Knoten V in I t ∪ O t ∪ R t ,
wobei
◮
I t die Menge der Knoten innerhalb von innere Pseudoknoten
ist,
◮
O t die Menge der Knoten innerhalb von äußere Pseudoknoten
ist und
◮
R t die Menge der verbleibenden Knoten ist.
Beispiel: Für unser Beispiel von Folie 343 gilt Gct = GJt
2
1
9
8
11
3
10
12
7
4
5
B
11
12
A
6
5
6
Ferner definieren wir
◮
ΨtO als die Menge der Knotenmengen ungerader Kardinalität
(> 1), die jeweils zu einem äußere Pseudoknoten oder zu einer
Blüte korrespondieren und
und erhalten wir:
Ot
ΨtO
◮ Ψt
I
als die Menge der Knotenmengen ungerader Kardinalität
(> 1), die jeweils zu einem inneren Pseudoknoten
korrespondiert, der keine Blüte ist.
347
= {11, 12, 6, 1, 2, 3, 4, 10}
= {{1, 2, 3, 4, 10}}
It
ΨtI
= {5, 7, 8, 9}
= {{7, 8, 9}} .
348
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Sei
δ1t :=
δ2t :=
δ3t :=
θt
min
ci,j −
i, j ∈ O t wobei i, j nicht im gleichen
Pseudoknoten enthalten sind
min
t
i∈O ,
j∈R t
min t −
Sk ∈ΨI
αit
2
−
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmus WeightedMatching(C )
Eingabe: eine symmetrische n × n-Matrix C = (ci,j )1≤i,j≤n mit
positiven Einträgen bei geradem n
Ergebnis: perfektes Matching für Kn mit gewichten ci,j mit
minimalen Kosten.
1: for all i ∈ V do αi := minj∈V ci,j /2 end for
2: for all k ∈ {1, . . . , m} do γk := 0 end for
3: M := ∅; J b := ∅
4: while |M| < n/2 do
5:
konstruiere GJ
6:
bestimme ein optimales Matching M ′ für GJ ausgehend von M
7:
bestimme den dazugehörigen Graph Gc
8:
bestimme das maximale passende Matching M ′′ von (V , Je )
9:
aus dem optimalen Matching M ′ von GJ
αjt
(ci,j − αit − αjt )
γkt
2
:= min{δ1t , δ2t , δ3t } .
Im folgenden Algorithmus verzichten wir auf die Angabe t der
einzelnen Variablen und Mengen da sich dieser Index nur auf die
Nummer des Durchlaufs durch die while-Schleife bezieht.
349
Andreas Jakoby
Universität zu Lübeck
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
350
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
6 Backtracking bei diskreten
Optimierungsproblemen
bestimme die Mengen O, I , ΨO und ΨI
berechne θ
for all j ∈ O do αj := αj + θ end for
for all j ∈ I do αj := αj − θ end for
for all Sk ∈ ΨO do γk := γk − 2θ end for
for all Sk ∈ ΨI do γk := γk + 2θ end for
′
sei J b := {Sk ∈ J b ∪ ΨO |γk < 0}
′
sei J b := J b und M := M ′′
end while
Return(M)
Optimierungsprobleme wurden auf Folie 130 definiert:
◮ Eine Instanz eines Optimierungsproblems ist ein Paar
(F , f ) wobei
◮
◮
◮
F eine Menge von möglichen Lösungen und
f : F → R eine Kostenfunktion dieser Lösungen abgibt.
Eine Lösung x ∈ F nennen wir global optimal oder kurz
optimal, wenn für alle y ∈ F gilt
f (x) ≥ f (y ) .
Für den Algorithmus WeightedMatching gilt:
◮
Satz 29 Mit Hilfe von WeightedMatching können wir ein optimales
Matching mit minimalem Gewicht in Zeit O(n4 ) bestimmen.
Gesucht ist eine optimale Lösung bezüglich der
Kostenfunktion!
◮
Ein Optimierungsproblem ist eine Menge von Instanz eines
Optimierungsproblems.
351
352
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Andreas Jakoby
Universität zu Lübeck
6.1 Das Rucksackproblem
Oft finden wir auch eine alternative Definition: Ein
Optimierungsproblem wird durch
◮
◮
Definition 21 [Rucksackproblem]
◮ Gegeben ist eine Folge von n Gütern mit Bewertungsvektor
V = (v0 , . . . , vn−1 ) ∈ Nn und Gewichtsvektor
W = (w0 , . . . , wn−1 ) ∈ Nn sowie eine Gewichtsobergrenze
M ∈ N, d.h. I = (V , W , M).
◮ Eine Lösung ist ein binärer Verktor X = (x0 , . . . , xn−1 ) ∈ {0, 1}n .
◮ Gesucht ist ein Lösungverktor X = (x0 , . . . , xn−1 ) ∈ {0, 1}n ,
so dass
Pn−1
val(I , X ) :=
i=0 vi · xi
eine Menge X potentieller Lösungen und
einer Kostenfunktion dieser Lösungen val : I × X → R.
Hierbei ist I die Menge aller Probleminstanzen (Eingaben) I von
Q. Eine Instanz bezüglich Definition 10 erhalten wir dann über
(F , f )
mit F := X und f ≡ val(I , ·) .
Abhängig von der Problemdefinition suchen wir nach
◮
◮
unter der Nebenbedingung
Pn−1
einem X ∈ X (oder allen X ∈ X ), die f minimieren bzw.
maximieren oder
i=0
dem minimalen bzw. maximalen Wert von f .
353
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Algorithmus KS-ExhaustiveSearch(ℓ, Xopt , Vopt , Xakt , I )
Eingabe: Instanz I = (V , W , M), bisher beste Lösung Xopt mit Wert
Vopt , neuer Lösungsversuch Xakt = (xakt,0 , . . . , xakt,n−1 )
Ergebnis: neue beste Lösung Xneu mit Wert Vneu
1: if ℓ = n then
P
2:
if n−1
i · xakt,i ≤ M then
i=0 wP
3:
Vakt := n−1
i=0 vi · xakt,i
4:
if Vakt > Vopt then Vopt := Vakt ; Xopt := Xakt end if
5:
end if
6: else
7:
xakt,ℓ := 0
8:
(Xopt , Vopt ) :=KS-ExhaustiveSearch(ℓ + 1, Xopt , Vopt , Xakt , I )
9:
xakt,ℓ := 1
10:
(Xopt , Vopt ) :=KS-ExhaustiveSearch(ℓ + 1, Xopt , Vopt , Xakt , I )
11: end if
12: Return(Xopt , Vopt )
w i · xi
≤ M
maximal ist. xi = 1 bedeutet, dass das i-te Gut in den Rucksack
aufgenommen
Pn−1 wird. M gibt die maximale Belastung des Rucksacks
an und i=0 wi · xi das aktuelle Gewicht.
354
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
13. Vorlesung, 22.1.2007
Beobachtung KS-ExhaustiveSearch(0, (0, . . . , 0), 0, (0, . . . , 0), I )
findet eine optimale Lösung für das Rucksackproblem durch
vollständiges Durchsuchen des Lösungsraumes. Wir nenne eine
solche Suche nach einer optimalen Lösung exhaustive search.
Beobachtung Da der Lösungsraum {0, 1}n exponentielle Größe
hat, und wir für jeden Lösungsvektor einmal die Summe in Zeile 3
von KS-ExhaustiveSearch auswerten müssen, ist die Laufzeit von
KS-ExhaustiveSearch in O(n · 2n ).
355
356
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Um die folgende allgemeine Backtracking-Strategie anwenden zu
können, müssen wir die Form des Lösungsraums einschränken:
◮
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Wird die optimale Lösung über eine globale Variable festgehalten,
dann können wir die Beschreibung des Backtrackingalgorithmus
erheblich vereinfachen:
6.2 Die allgemeine Backtracking-Strategie
◮
Andreas Jakoby
Universität zu Lübeck
Algorithmus Backtrack(ℓ, x1 , . . . , xℓ−1 )
Eingabe: Tiefe ℓ ∈ N, partielle Lösung (x1 , . . . , xℓ−1 )
Ergebnis: optimale Lösung (x1 , . . . , xn−1 ) über eine globale Variable
1: if x1 , . . . , xℓ−1 ist eine zulässige Lösung then
2:
bewerte x1 , . . . , xℓ−1
3: else
4:
bestimme Cℓ
5:
for all x ∈ Cℓ do Backtrack(ℓ + 1, x1 , . . . , xℓ−1 , x) end for
6: end if
X = X0 × X1 × . . . × Xn wobei Xℓ für alle ℓ endlich ist, d.h.
der Lösungsraum ist das kartesische Produkt von jeweils
endlich vielen Alternativen Xℓ .
Cℓ ⊆ Xℓ bezeichnet eine möglichst kleine Auswahlmenge zu
betrachtender Alternativen.
Mit Cℓ können wir versuchen die Alternativen einzuschränken.
357
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
wℓ +
i=0
xi · w i
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Algorithmus KS-Backtrack(ℓ, Xakt , Vakt , Wakt )
Eingabe: Instanz I = (V , W , M), bisher beste Lösung Xopt mit Wert
Vopt sind global gegeben, neuer Lösungsversuch
Xakt = (xakt,0 , . . . , xakt,n−1 ) mit Wert Vakt und Gewicht Wakt
Ergebnis: global gegeben neue beste Lösung Xopt mit Wert Vopt
1: if ℓ = n then
2:
if Vakt > Vopt then Vopt := Vakt ; Xopt := Xakt end if
3: else
4:
if Wakt + wℓ ≤ M then Cℓ := {0, 1} else Cℓ := {0} end if
5:
for all x ∈ Cℓ do
6:
xakt,ℓ := x
7:
KS-Backtrack(ℓ + 1, Vakt + x · vℓ , Wakt + x · vℓ )
8:
end for
9: end if
Beispiel: Bei der Lösung des Rucksackproblems können wir in
manchen Fällen eine Beschleunigung dadurch erzielen, dass wir das
ℓ-te Gut nur dann zu einer partiellen Lösung x0 , . . . , xℓ−1
hinzufügen, wenn
ℓ−1
X
358
≤ M
ist.
359
360
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Für einen Knoten v definieren wir:
Beispiel: das Clique-Problem
Γ(v ) := { u ∈ V | {u, v } ∈ E } .
Definition 22 [Clique-Problem]
◮
Ein vollständiger Graph Kℓ mit ℓ Knoten ist ein ungerichteter
Graph, in dem es zwischen jedem Knotenpaar eine Kante gibt.
◮
Gegeben ein ungerichteter Graph G = (V , E ). Eine Clique
von G ist ein vollständiger Subgraph von G .
Wir gehen davon aus, dass die Knoten in G bezüglich einer
Relation ≺ vollständig geordnet sind. Dann ist
B(v ) := { u ∈ V | v ≺ u } .
Wir betrachten die folgenden Probleme:
◮
Eine Liste von Elementen vi1 , . . . , vik bezeichnen wir mit
Gegeben ein ℓ ∈ N. Gibt es in G eine Clique der Größe ℓ?
◮
Bestimme das maximale ℓ ∈ N, so dass es in G eine Clique
der Größe ℓ gibt.
◮
Bestimme alle Cliquen in G .
hvi1 , . . . , vik i .
Die leere Liste bezeichnen wir mit hi. Um ein Element x hinten an
die Liste L anzufügen benutzen den Operator ◦:
Wir werden hier die dritte Variante untersuchen.
hvi1 , . . . , vik , xi := hvi1 , . . . , vik i ◦ x
361
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Algorithmus Clique-Backtrack(ℓ, Xakt , Nℓ−1 , G , S)
Eingabe: Instanz G , bisher gefundene Cliquen S, Knotenmengen Nℓ
neuer Versuch eine Clique zu finden Xakt = hxakt,0 , . . . , xakt,ℓ−1 i
Ergebnis: neue Menge von Cliquen S
1: S := S ∪ {Xakt }
2: if ℓ = 0 then
3:
Nℓ := V und Cℓ := V
4: else
5:
Nℓ := Nℓ−1 ∩ Γ(xakt,ℓ−1 ) und Cℓ := Nℓ ∩ B(xakt,ℓ−1 )
6: end if
7: if Nℓ = ∅ then Xakt ist eine maximale Clique end if
8: for all x ∈ Cℓ do
9:
xakt,ℓ := x
10:
S :=Clique-Backtrack(ℓ + 1, Xakt ◦ xakt,ℓ , Nℓ , G , S)
11: end for
12: Return(S)
362
Andreas Jakoby
Universität zu Lübeck
◮
◮
363
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Über Induktion können wir zeige, dass

für ℓ = 0
 V
N
∩
B(x
)
Cℓ =
ℓ
akt,ℓ−1
Tℓ−1

= B(xakt,ℓ−1 ) ∩ i=0
Γ(xakt,i ) sonst.
Somit beschränken wir uns bei der Auswahl von xakt,ℓ auf
solche Knoten, die mit den Knoten in Xakt eine Clique bilden.
Tℓ−1
Da Nℓ = i=0
Γ(xakt,i ) ist die Clique genau dann maximal,
wenn Nℓ = ∅ ist, d.h. Xakt kann um keinen Knoten aus V zu
einer größeren Clique erweitert werden.
364
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
1. Lösung: Das Exact-Cover-Problem können wir mit Hilfe des
Cliquen-Problems lösen:
◮ Für eine Instanz S wir definieren einen Graphen G = (V , E )
wie folgt:
Beispiel: das Exact-Cover-Problem
Definition 23 [Exact-Cover-Problem]
◮
◮
Gegeben ist eine Menge S = {S1 , . . . , Sm } von Teilmengen
Si ⊆ U einer Grundmenge U.
U =
j=1
◮
V := S
Eine Auswahl Si1 , . . . , Sik von Mengen aus S heißt exakte
Überdeckung, wenn jedes Element aus U in genau einer
Teilmenge der Auswahl Sij enthalten ist, d.h.
k
[
Sij
und |U| =
k
X
j=1
◮
◮
◮
U
Entscheide, ob eine exakt Überdeckung existiert.
Finde eine exakt Überdeckung.
Finde alle exakten Überdeckungen.
365
Andreas Jakoby
Universität zu Lübeck
und E := { {Si , Sj } | Si ∩ Sj = ∅ } .
Die maximale Cliquen stellen dann mögliche exakte
Überdeckungen dar. Eine Clique Si1 , . . . , Sik ist genau dann
eine exakte Überdeckung, wenn
|Sij | .
Gegeben eine Instanz S = {S1 , . . . , Sm }, dann unterscheiden wir
zwischen den folgenden Varianten des Exact-Cover-Problems:
◮
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
′ ,U
′
Algorithmus XCover-Backtrack(ℓ, Xakt , Cℓ−1
ℓ−1 , r , M)
Eingabe: bisher gefundene Überdeckungen M, neuer Versuch eine
Überdeckung zu finden Xakt = hxakt,0 , . . . , xakt,ℓ−1 i
Ergebnis: neue Menge von Überdeckungen M
1: if ℓ = 0 then
2:
U0 := {0, . . . , n − 1}, r := 0, C0′ := {0, . . . , m − 1}
3: else
′
4:
Uℓ := Uℓ−1 \ Sxℓ−1 , r := r ′ , Cℓ′ := Γ(xℓ−1 ) ∩ B(xℓ−1 ) ∩ Cℓ−1
5:
while r 6∈ Uℓ und r < n do r := r + 1 end while
6: end if
7: if r = n then M := M ∪ {Xakt } end if
8: Cℓ := Cℓ′ ∩ H(r )
9: for all x ∈ Cℓ do
10:
xakt,ℓ := x
11:
M :=XCover-Backtrack(ℓ + 1, Xakt ◦ xakt,ℓ , Cℓ′ , Uℓ , r , M)
12: end for
13: Return(M)
=
k
[
Sij .
j=1
Diese Idee führt uns zum folgenden Algorithmus, der auf
Clique-Backtrack basiert. Sei U = {0, . . . , n − 1} und
S := {S1 , . . . , Sm }, wobei S lexikographisch sortiert ist, d.h. für
alle i ∈ {0, . . . , m − 2} gilt Si ≤lex Si+1 .
Andreas Jakoby
Universität zu Lübeck
366
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
In XCover-Backtrack gehen wir davon aus, dass Γ, B und H global
gegeben sind. Die Werte dieser Funktionen werden in der folgenden
Prozedur initialisiert:
Algorithmus ExactCover(n, S)
Eingabe: Größe n der Grundmenge U und sortierte Instanz S
Ergebnis: neue Menge aller Überdeckungen S
1: m := |S|
2: for i := 0 to m − 1 do Γ(i) := {j|Si ∩ Sj = ∅} end for
3: for i := 0 to m − 1 do B(i) := {i + 1, . . . , m − 1} end for
4: for i := 0 to n − 1 do H(i) := {j|Sj ∩ {0, 1, . . . , i} = {i}} end for
5: H(n) := ∅
6: M :=XCover-Backtrack(0, hi, {0, . . . , m − 1}, {0, . . . , n − 1}, 0, ∅)
7: Return(M)
367
368
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Beispiel: Gegeben sei S := {S0 , S1 , S2 , S3 , S4 , S5 , S6 , S7 } mit
U = [0..10] und
S0
S2
S4
S6
:=
:=
:=
:=
{0, 1, 2, 8, 10}
{2, 5, 8, 10}
{3, 5, 7}
{4, 6}
S1
S3
S5
S7
:=
:=
:=
:=
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Beispiel (Teil 2)
Γ(0)
Γ(2)
Γ(4)
Γ(6)
{0, 1, 8}
{2, 9, 10}
{3, 5, 6, 10}
{5, 6, 7, 8}
=
=
=
=
{4, 6}
{6}
{1, 3, 6}
{0, 1, 2, 3, 4}
Wir erhalten
H(0)
H(2)
H(4)
H(6)
H(8)
H(10)
=
=
=
=
=
=
{0, 1}
{2, 3}
{6}
∅
∅
∅
H(1)
H(3)
H(5)
H(7)
H(9)
=
=
=
=
=
∅
{4, 5}
{7}
∅
∅
Γ(1)
Γ(3)
Γ(5)
Γ(7)
=
=
=
=
S3
S7
S1
S6
S2
S5
S4
S0
{3, 4, 5, 6}
{1, 4, 6, 7}
{1}
{3}
369
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
↓
↓
r = 3
C1 = {4}
Xakt = h0, 4i
U2 = {4, 6, 9}
C2′ = {6}
↓
r = 0
C0 = {0, 1}
Xakt = h0i
U1 = {3, 4, 5, 6, 7, 9}
C1′ = {4, 6}
r = 4
C2 = {6}
Xakt = h0, 4, 6i
U3 = {9}
C3′ = ∅
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Beispiel (Teil 4) 2. Wurzel-Blatt-Pfad im Backtracking-Baum:
Beispiel (Teil 3) 1. Wurzel-Blatt-Pfad im Backtracking-Baum:
U0 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
C0′ = {0, 1, 2, 3, 4, 5, 6, 7}
370
r = 9
C3 = ∅
U0 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
C0′ = {0, 1, 2, 3, 4, 5, 6, 7}
r = 0
C0 = {0, 1}
U1 = {2, 3, 4, 5, 6, 7, 9, 10}
C1′ = {3, 4, 5, 6}
r = 2
C1 = {3}
U2 = {3, 4, 5, 6, 7}
C2′ = {4, 6}
r = 3
C2 = {4}
U3 = {4, 6}
C3′ = {6}
r = 4
C3 = {6}
↓
Xakt = h1i
↓
Xakt = h1, 3i
↓
Xakt = h1, 3, 4i
↓
Xakt = h1, 3, 4, 6i
U3 = ∅
371
r = 11 C3′ = ∅
C3 = ∅
M = {h1, 3, 4, 6i}
372
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
6.3 Backtracking mit Bounding-Funktion
◮
◮
Für ein Optimierungsproblem Q sei Y die Menge aller
partiellen Lösungen, d.h. jedes Element Y ∈ Y kann zu einer
Lösung X ∈ X erweitert werden.
◮
◮
Somit kann keine Erweiterung von Y den Wert von
bound(I , Y ) überschreiten.
◮
Liegt beim Backtracking bound(I , Y ) unter dem Wert des
bisher gefundenen Maximums, dann müssen wir die
Erweiterungen comp(Y ) nicht mehr weiter untersuchen.
◮
Mit Hilfe einer Bounding-Funktion können wir in vielen Fällen
das Backtracking erheblich beschleunigen.
◮
Für ein Minimierungsproblem nennen wir eine Funktion
bound : I × Y → R Bounding-Funktion, wenn für alle I ∈ I,
alle Y ∈ Y und alle X ∈ comp(Y )
Definiere comp : Y → X wie folgt
comp(Y ) := { X | Y kann zu X erweitert werden } .
Für ein Maximierungsproblem nennen wir eine Funktion
bound : I × Y → R Bounding-Funktion, wenn für alle I ∈ I,
alle Y ∈ Y und alle X ∈ comp(Y )
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
val(I , X ) ≥ bound(I , Y )
val(I , X ) ≤ bound(I , Y )
ist.
ist.
374
373
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Algorithmus BoundedBacktrack(ℓ, X , Xopt , Vopt , I )
Eingabe: Tiefe ℓ ∈ N, partielle Lösung X := (x1 , . . . , xℓ−1 ),
bisherige beste Lösung Xopt mit Wert Vopt , Instanz I
Ergebnis: optimale Lösung aus comp(X ) ∪ {Xopt }
1: if X ist eine zulässige Lösung then
2:
V := val(I , X )
3:
if V > Vopt then Vopt := V ; Xopt := X end if
4: end if
5: bestimme Cℓ
6: for all x ∈ Cℓ do
7:
B := bound(I , X ◦ x)
8:
if B > Vopt then
9:
(Xopt , Vopt ) := BoundedBacktrack(ℓ+1, X ◦x, Xopt , Vopt , I )
10: end if end for
11: Return(Xopt , Vopt )
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Eine Bounding-Funktion für das Rucksackproblem
◮
◮
In viele Fällen ist das finden einer sinnvollen
Bounding-Funktion eine schwieriges Problem.
Betrachten wir das Rucksackproblem:
◮
◮
◮
◮
375
Betrachten wir nun einmal den Fall, dass wir auch Anteile von
einem Gut in unseren Rucksack einpacken können. Hierbei hat
der Anteil ε mit 0 ≤ ε ≤ 1 von einem Gut j ein Gewicht von
ε · wj und einen Wert von ε · vj . Wir erhalten hierbei die
rationale Variante des Rucksackproblems.
Wir wählen i, so dass der Quotient vi /wi maximal ist.
Es gilt: Für das Gewicht von wi können wir maximal den Wert
vi bekommen.
Diese Überlegung führt uns zu folgendem Algorithmus für die
rationale Variante des Rucksackproblems.
376
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmus RationalesRucksack(n, V , W , M)
Eingabe: Instanz (V , W , M) mit n Gütern
Ergebnis: optimale Lösung (x0 , . . . , xn−1 ) ∈ [0; 1]n des Rucksackproblems, wobei xi den Anteil vom i-ten Guts in der Lösung ist.
1: sortiere die Güter nach dem Wert der Quotienten vi /wi
2: sei i0 , . . . , in−1 die resultierende Folge der Güter
3: for j := 0 to n − 1 do xj := 0 end for
4: sei j := 0; V := 0; W := 0
5: while W ≤ M und j < n do
6:
if W + wwij ≤ M then
7:
xij := 1; W := W + wij ; V := V + vij ; j := j + 1
8:
else
9:
xij := M−W
wi ; W := M; V := V + xij · vij ; j := j + 1
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmus BoundingRucksack(ℓ, Xakt , Vakt , Wakt )
Eingabe: Instanz I = (V , W , M), bisher beste Lösung Xopt mit Wert
Vopt sind global gegeben, neuer Lösungsversuch
Xakt = (xakt,0 , . . . , xakt,n−1 ) mit Wert Vakt und Gewicht Wakt
Ergebnis: neue beste Lösung Xopt mit Wert Vopt global gegeben
1: if ℓ = n then
2:
if Vakt > Vopt then Vopt := Vakt ; Xopt := Xakt end if
3: else
4:
if Wakt + wℓ ≤ M then Cℓ := {0, 1} else Cℓ := {0} end if
5:
for all x ∈ Cℓ do
6:
xakt,ℓ := x
j
end if
11: end while
12: Return((x0 , . . . , xn−1 ))
10:
377
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
14. Vorlesung, 29.1.2007
378
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
6.4 Das Traveling Salesperson Problem
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Eine Variante des Traveling Salesperson Problems haben wir bereits
im Abschnitt 5.5 (Folien 293 bis 299) kennen gelernt. Wir wollen
uns nun der allgemeinen Variante des TSP Problems zuwenden:
sei I ′ = (V ′ , W ′ , M − Wakt − x · wℓ ) die Instanz I
eingeschränkt auf die Güter i > ℓ
′ , . . . , x′
(xℓ+1
n−1 ) :=RationalesRucksack(n − ℓ − 1,
′
′
Pn−1 V′ , W , M − Wakt − x · wℓ )
B := Vakt + x · wℓ + i:=ℓ+1 xi · wi
if B > Vopt then
BoundingRucksack(ℓ + 1, Xakt , Vakt + x · vℓ , Wakt + x · vℓ )
end if
end for
end if
Definition 24 [Traveling Salesperson Problem (TSP)]
◮
Gegeben ist ein ungerichteter Graph G = (V , E ) und eine Kostenmatrix M = (mi,j )i,j∈V , wobei mi,j = ∞ für {i, j} 6∈ E ist.8
◮
Einen Hamiltonischer Kreis ist eine Knotenfolge
v0 , v1 , . . . , vn , welcher jeden Knoten genau einmal besucht.
◮
Die Kosten eines Kreises v0 , . . . , vn definieren wir wie folgt:
cost(v0 , . . . , vn−1 ) :=
n−1
X
mvi ,v(i+1) mod n .
i:=0
◮
8
379
Gesucht ist ein Hamiltonischer Kreis mit minimalen Kosten.
Zur Vereinfachung bezeichnen wir die Knoten mit natürlichen Zahlen.
380
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Algorithmus TSP-Backtrack(ℓ, Cℓ−1 , Xakt , Xopt , Vopt )
Eingabe: offene Knoten Cℓ−1 , neuer Lösungsversuch
Xakt = xakt,0 , . . . , xakt,ℓ−1 , bisher beste Lösung Xopt mit Wert Vopt
Ergebnis: neue beste Lösung Xopt mit Wert Vopt
1: if ℓ = n then
2:
Vakt := cost(Xakt )
3:
if Vakt < Vopt then Vopt := Vakt ; Xopt := Xakt end if
4: else
5:
if ℓ = 0 then Cℓ := {0} end if
6:
if ℓ = 1 then Cℓ := {1, . . . , n − 1} end if
7:
if ℓ > 1 then Cℓ := Cℓ−1 \ {xakt,ℓ−1 } end if
8:
for each xakt,ℓ ∈ Cℓ do
9:
(Xopt , Vopt ) := TSP-Backtrack(ℓ + 1, Cℓ , Xakt ◦ xakt,ℓ , Xopt , Vopt )
10:
end for
11: end if
12: Return(Xopt , Vopt )
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
1. Bounding-Funktion
◮
Für eine Knotenmenge W ⊆ V und ein Knoten x ∈ V sei
b(x, W ) :=
min mx,w
w ∈W
die kostenminimale Verbindung von x zu einem Knoten der
Menge W .
◮ Für einen Pfad X := x0 , . . . , xℓ−1 in G sei X := V \ X und die
Bounding-Funktion
X

ℓ−2
 b(xℓ−1 , X ) +
b(v , X ∪ {x0 }) für ℓ < n
X
BTSP(X ) :=
mxi ,xi+1 +
v ∈X

i=0
mxℓ−1 ,x0
für ℓ = n .
Da es für jeden Knoten in X ∪ {xℓ−1 } einen Nachfolger auf dem
Hamiltonischen Kreis geben muss, ist BTSP eine BoundingFunktion, die die Länge jedes Hamiltonischen Kreises mit dem
Teilpfad X nach unten beschränkt.
382
381
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Algorithmus TSP-Bounding(ℓ, Cℓ−1 , Xakt , Xopt , Vopt )
Eingabe: offene Knoten Cℓ−1 , neuer Lösungsversuch
Xakt = xakt,0 , . . . , xakt,ℓ−1 , bisher beste Lösung Xopt mit Wert Vopt
Ergebnis: neue beste Lösung Xopt mit Wert Vopt
1: if ℓ = n then
2:
Vakt := cost(Xakt )
3:
if Vakt < Vopt then Vopt := Vakt ; Xopt := Xakt end if
4: else
5:
if ℓ = 0 then Cℓ := {0} end if
6:
if ℓ = 1 then Cℓ := {1, . . . , n − 1} end if
7:
if ℓ > 1 then Cℓ := Cℓ−1 \ {xakt,ℓ−1 } end if
8:
for each xakt,ℓ ∈ Cℓ mit Vopt ≥ BTSP(Xakt ◦ xakt,ℓ ) do
9:
(Xopt , Vopt ) := TSP-Bounding(ℓ + 1, Cℓ , Xakt ◦ xakt,ℓ , Xopt , Vopt )
10:
end for
11: end if
12: Return(Xopt , Vopt )
383
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
2. Bounding-Funktion
◮
Eine zweite Bounding-Funktion erhalten wir, indem wir die
Einträge der Kostenmatrix zunächst Spalten- und dann
Zeilenweise um das jeweilige Minimum der jeweiligen Spalte
bzw. der Zeile verkleinern, und die Summe dieser Minima
bestimmen. Sei redval diese Summe.
◮
Die resultierende Matrix besitzt weiterhin nur positive
Einträge. Jedoch gibt es in jeder Zeile und in jeder Spalte
mindesten eine 0.
◮
Den Wert von redval können wir mit dem Algorithmus auf der
folgenden Folie bestimmen.
384
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmus Redval(M)
Eingabe: k × k-Kostenmatrix
Ergebnis: Wert von redval
1: redval:= 0
2: for i := 0 do k − 1 do
3:
row:= minj∈[0..k−1] mi,j
4:
for j := 0 to k − 1 do mi,j := mi,j −row end for
5:
redval:=redval+row
6: end for
7: for j := 0 do k − 1 do
8:
col:= mini∈[0..k−1] mi,j
9:
for i := 0 to k − 1 do mi,j := mi,j −col end for
10:
redval:=redval+col
11: end for
12: Return(redval)
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Lemma 34 Jeder Hamiltonsche Kreis in einem Graphen G mit
Kostenmatrix M hat Kosten mindestens Redval(M).
Beweis von Lemma 34:
◮
Markieren wir für einen Hamiltonischen Kreis in der Kostenmatrix genau die Kosten der Kanten des Kreises, so wird in
jeder Zeile und in jeder Spalte genau ein Eintrag mi,j markiert.
◮
Es kann gezeigt werden, dass die Summe dieser Werte
mindestens den Wert Redval(M) haben muss.
Um die Bounding-Funktion zu berechnen, müssen wir die Kostenmatrix abhängig vom aktuellen Pfad modifizieren.
385
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
◮
◮
◮
Für einen Pfad X := x0 , . . . , xℓ−1 sei X := V \ X .
Sei MX die Teilmatrix der Kostenmatrix M, die nur aus den
Einträgen besteht, deren Zeilen und Spalten durch Knoten aus
X indiziert sind.
Wir indizieren die Zeilen und Spalten aus MX durch die
jeweiligen Knoten aus X .
M
X
386
Andreas Jakoby
Universität zu Lübeck
◮
Jetzt fügen wir in MX noch eine Spalte und eine Zeile hinzu.
Diese können wir zum Beispiel and der Position von x0 tun.
◮
In der neuen Zeile tragen wir die Kosten ein, um von dem
jeweiligen Knoten aus X den Knoten x0 zu erreichen.
◮
In der neuen Spalte tragen wir die Kosten ein, um von xℓ−1
den jeweiligen Knoten aus X zu erreichen.
◮
An die Stelle, wo sich die neue Zeile und die neue Spalte
schneiden, setzten wir ∞.
MX
◮
X
387
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Sei M ′ die resultierende Matrix, dann setzten wir
(
ℓ−2
X
Redval(M ′ ) für ℓ < n
BTSP2(X ) :=
mxi ,xi+1 +
mxℓ−1 ,x0
für ℓ = n .
i=0
388
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Algorithmus BTSP2(X )
Eingabe: ein Pfad X = x0 , . . . , xℓ−1 in G
Ergebnis: ein Bounding-Wert
1: if ℓ = n then
2:
Return(cost(X ))
3: else
′ )
4:
sei M ′ = (mi,j
i,j∈[0..n−ℓ] eine n − ℓ + 1 × n − ℓ + 1-Matrix
′
5:
sei m0,0 := ∞; j := 1; i := 1
′ := m
6:
for all v ∈ X do m0,j
xℓ−1 ,v ; j := j + 1 end for
′
7:
for all v ∈ X do mi,0 := mv ,x0 ; i := i + 1 end for
8:
i := 0
9:
for all u ∈ X do
10:
j := 1; i := i + 1
′ := m
11:
for all v ∈ X do mi,j
u,v ; j := j + 1 end for
12:
end forP
ℓ−2
13:
Return( i=0
mxi ,xi+1 + Redval(M ′ ))
14: end if
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
6.5 Das MAXCLIQUE Problem
◮
Wir wollen nun das Problem untersuchen, die Größe einer
maximalen Clique zu bestimmen.
◮
Dieses Problem ist ebenfalls N P-schwierig.
◮
Ausgehend vom Algorithmus Clique-Backtrack
389
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Algorithmus MAXCLIQUE(ℓ, Xakt , Cℓ−1 , G , Vopt )
Eingabe: Instanz G , bisher gefundene maximale Größe einer Clique
Vopt , Knotenmengen Cℓ−1 , neuer Versuch eine Clique zu finden
Xakt = hx0 , . . . , xℓ−1 i
Ergebnis: maximale Größe einer Clique
1: if ℓ = 0 then Cℓ := V else Cℓ := Cℓ−1 ∩ Γ(xℓ−1 ) ∩ B(xℓ−1 ) end if
2: if Cℓ = ∅ then
3:
if ℓ > Vopt then Return(ℓ) else Return(Vopt ) end if
4: else
5:
for all x ∈ Cℓ do
6:
Vopt :=MAXCLIQUE(ℓ + 1, Xakt ◦ x, Cℓ , G , Vopt )
7:
end for
8: end if
9: Return(Vopt )
391
390
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Welche Bounding-Funktion können wir für das MAXCLIQUE
Problem angeben?
◮
Wir betrachten das Knotenfärbungsproblem für den
Restgraphen mit Knotenmenge Cℓ : Jeder Knoten des Graphen
soll ein Farbe bekommen, wobei benachbarte Knoten
unterschiedlich gefärbt werden müssen. Ziel ist es die Anzahl
der Farben zu minimieren.
◮
Besitzt ein Graph eine k-Färbung, so besitzt der Graph keine
Clique der Größe k + 1!
◮
Das Färbungsproblem ist N P-schwierig.
◮
Daher suchen wir nach einem Greedy-Verfahren, welches die
Färbung gut approximiert.
392
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
◮
Sei V = {0, . . . , n − 1} die betrachtete Knotenmenge für das
Färbungsproblem.
◮
Sei N bzw. [0..k − 1] die Menge der Farben.
◮
Für eine Farbe h ist CClass[h] die Menge der Knoten mit
Farbe h.
◮
Für einen Knoten v ist Color[v ] die Farbe von v .
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Algorithmus Greedy-Color(G )
Eingabe: Graph G
Ergebnis: Obere Schranke für die Anzahl der Farben k
1: k := 0
2: for v = 0 to n − 1 do
3:
h := 0
4:
while h < k und CClass[h] ∩ Γ(v ) 6= ∅ do h := h + 1 end while
5:
if h = k then k := k + 1; CClass[h] := ∅ end if
6:
CClass[h] :=CClass[h] ∪ {v }
7:
Color[v ] := h
8: end for
9: Return(k)
393
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
◮
Besitzt ein Graph einen maximalen Grad von d, d.h.
|Γ(v )| ≤ d für alle Knoten des Graphen, dann findet der
Algorithmus eine Färbung mit d + 1 Farben.
◮
Berechnen wir in MAXCLIQUE für jeden Graphen
Gℓ = (Cℓ , E ∩ 2Cℓ ) mit Greedy-Color eine obere Schranke kℓ
für die minimale Anzahl an benötigten Farben, so erhalten wir
hierbei auch eine obere Schranke für die maximale Größe kℓ
einer Clique in Gℓ .
◮
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
6.6 Branch-and-Bound Verfahren
Man kann Beispiele finden, bei denen Greedy-Color nicht die
optimale Färbung findet.
◮
394
Die maximale Größe einer Cliquen die wir ausgehend von Xakt
finden können ist dann
Xakt + Greedy-Color(Gℓ ) .
395
◮
Mit Hilfe einer gegebenen Bounding-Funktion versuchen wir
die Reihenfolge beim Traversieren des Backtracking-Baums so
zu manipulieren, dass wir einige Lösungskandidaten zusätzlich
ausschließen können.
◮
Für ein Maximierungsproblem sortieren wir Cℓ absteigend in
Abhängigkeit vom Wert der Bounding-Funktion. Wir
betrachten anschließend die Elemente aus Cℓ entsprechend der
erhaltenen Reihenfolge.
◮
Erhalten wir für ein Elemente aus Cℓ eine Lösung, deren Wert
nahe am Wert der Bounding-Funktion liegt, dann können wir
alle Elemente aus Cℓ , für die die Bonding-Funktion einen
kleineren Wert liefert, als Kandidaten für eine optimale
Lösung ausschießen.
396
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
Algorithmus BranchAndBound(ℓ, X , Xopt , Vopt , I )
Eingabe: Tiefe ℓ ∈ N, partielle Lösung X := (x1 , . . . , xℓ−1 ),
bisherige beste Lösung Xopt mit Wert Vopt , Instanz I
Ergebnis: optimale Lösung aus comp(X ) ∪ {Xopt }
1: if X ist eine zulässige Lösung then
2:
V := val(I , X )
3:
if V > Vopt then Vopt := V ; Xopt := X end if
4: end if
5: bestimme Cℓ und Fℓ = {(x, bound(I , X ◦ x))|x ∈ Cℓ }
6: sortiere Fℓ absteigend nach der zweiten Koordinate
7: sei Fℓ [1], . . . , Fℓ [k] die resultierende sortierte Folge
8: for i = 1 to k do
9:
Sei (x, B) := Fℓ [i]
10:
if B ≤ Vopt then Return(Xopt , Vopt ) end if
11:
(Xopt , Vopt ) := BranchAndBound(ℓ + 1, X ◦ x, Xopt , Vopt , I )
12: end for
13: Return(Xopt , Vopt )
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
6.7 Heuristische Suche
Eine Bounding-Funktion gibt eine Approximation eines
Optimierungsproblems an. Eine Kollektion verschiedener Strategien
zur Approximation von Optimierungsproblemen finden wir unter
der Bezeichnung Heuristiken. Zu den bekanntesten Heuristiken
gehören:
◮
die Nachbarschaftssuche,
◮
das Hill-Climbing,
◮
das Simulated Annealing,
◮
die Tabu-Suche und
◮
die Genetischen Algorithmen.
398
397
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
7 2-Personen-Spielen
◮
◮
◮
◮
Zufallsentscheidungen, wie zum Beispiel mit Würfeln oder
mit Durchmischen von Karten, und deterministischen
Spielen,
◮
Spielen mit unvollständiger Information, wie zum
Beispielen verdeckte Karten, und Spielen mit vollständiger
Information, wie zum Beispiel Schach, Dame oder Go.
Bei einem Nullsummenspiel ist der Gewinn des einen Spieler
zugleich der Verlust des anderen Spielers.
Eine weitere Form von Optimierungsproblemen finden wir bei
2-Personen-Spielen:
◮
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Bei 2-Personen-Spielen unterscheiden wir zwischen Speilen mit
7.1 Typen von 2-Personen-Spielen
◮
Andreas Jakoby
Universität zu Lübeck
Ein Spiel, bei dem 2 Speiler abwechselnd Züge aus einer
vorgegebenen Menge von endlich vielen Alternativen wählen,
kann durch einen Spielbaum beschrieben werden.
Jeder Knoten repräsentiert eine Spielstellung und jede Kante
einen Spielzug.
Die Kanten zu den Kinder eines Knoten repräsentieren jeweils
einem alternativen Zug.
◮
◮
Der Spielbaum eines solchen 2-Personen-Spiels stellt eine
Verallgemeinerung eines Lösungsbaums eines Optimierungsproblems (Aufrufbaums des Backtrackingverfahrens) dar.
◮
399
Jede Endstellung des Speils können wir mit einer Zahl
bewerten, die angibt, welchen Betrag der erste Spieler dem
zweiten zu zahlen hat.
Bei einem Spiel mit nur einfachen Gewinn- oder
Verlustbedingungen können wir diese Bewertung mit +1 für
Gewinn, −1 für Verlust und 0 für Unentschieden durchführen.
400
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
Andreas Jakoby
Universität zu Lübeck
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
7.2 Alpha-Beta-Suche bei 2-Personen-Spielen
◮
◮
◮
Da wir einen exponentiell großen Spielbaum in der Regel nicht
vollständig durchsuchen können, suchen wir nach geeigneten
heuristischen Verfahren, mit deren Hilfe wir uninteressante
Teilbäume erkennen und somit aussparen können.
◮
eine α-Schranke, für den maximalen Gewinn, den Spieler 1 aus
dieser Spielstellung heraus erzielen kann, und
eine β-Schranke, für den maximalen Gewinn, den Spieler 2 aus
dieser Spielstellung heraus erzielen kann.
Bei einem Nullsummenspiel entspricht der maximale Gewinn
des einen Spielers dem maximalem Verlust des zweiten
Spielers.
401
Algorithmik WS 06/07
15. Vorlesung, 5.2.2007
Andreas Jakoby
Universität zu Lübeck
Literatur:
◮
Skript zu Algorithmik vom Wintersemester 2005-06
Prof. R. Reischuk:
◮
◮
Greedy-Algorithmen, Scheduling, Flussproblem
Combinatorial Optimization – Theory and Algorithms,
B. Korte, J. Vygen:
◮
◮
Lineare Programme, Simplex-Algorithmus, lineare
Ungleichungen, Ellipsoid-Methode, Matching-Probleme
Algorithm Design, J. Kleinberg, É. Tardos:
◮
◮
Greedy-Algorithmen, Scheduling, Flussproblem,
Simplex-Algorithmus, Matching-Probleme, Backtracking
Combinatorial Optimization – Algorithms and Complexity,
C. H. Papadimitriou, K. Steiglitz:
◮
◮
Die α- und β-Schranke werden aus den Werten der
Vorgängerknoten durch Maximieren oder Minimieren
berechnet, je nach dem Spieler, der am Zug ist.
◮
Wir sprechen von einem α-Schnitt, wenn eine Spielstellung,
wo Spieler 1 am Zug ist, nicht weiter betrachtet wird, weil der
Gegner garantiert nicht in diese Spielstellung ziehen würde,
weil er durch eine Alternative eine bessere Schranke erzielen
kann.
◮
Das duale mit vertauschten Rollen der Spieler nennen wir
β-Schnitt.
◮
Eine weitere Betrachtung von 2-Personen-Spielen würde den
Rahmen dieser Vorlesung sprengen.
Diese entspricht der Funktionsweise einer Bounding-Funktion
beim Backtracking.
Bei 2-Personen-Spielen benötigen wir allerdings 2 Werte:
◮
◮
◮
Simplex-Algorithmus, Ellipsoid-Methode
How to Solve It: Modern Heuristics, Z. Michalewicz, D.B. Fogel:
◮
Heuristische Suche
403
402
Zugehörige Unterlagen
Herunterladen