Vorlesung =1=Kombinatorische Optimierung (Wintersemester 2016

Werbung
1
Vorlesung
Kombinatorische Optimierung
(Wintersemester 2016/17)
Kapitel 1: Kürzeste Wege und Kreise
Volker Kaibel
Otto-von-Guericke Universität Magdeburg
(Version vom 20. Oktober 2016)
2
Graphen und Digraphen
Definition 1.1
Ein Graph ist ein Paar G = (V , E ) bestehend aus
einer endlichen
V
Knotenmenge V und einer Teilmenge E ⊆ 2 der
zweielementigen Teilmengen von V , der Kantenmenge von G .
Definition 1.2
Ein Digraph (gerichteter Graph) ist ein Paar D = (V , A)
bestehend aus einer endlichen Knotenmenge V und einer
Teilmenge
A ⊆ V × V \ {(v , v ) | v ∈ V } ,
der Bogenmenge von D. Zwei Bögen (v , w ), (w , v ) ∈ A heißen
antiparallel.
3
Multigraphen und -digraphen
Bemerkung
I
Verallgemeinerung von Digraphen: Multi-Digraphen
D = (V , A, Ψ) mit Ψ : A −→ V × V und beliebiger endlicher
Indexmenge A der Bögen. (Ähnlich: Multi-Graphen)
I
Man kann Konzepte, Resultate, Algorithmen in der Regel in
offensichtlicher Weise von (Di-)Graphen auf
Multi-(Di-)Graphen übertragen.
4
Wege und Kreise in Graphen
Definition 1.3
Sei G = (V , E ) ein Graph mit V = {v0 , v1 , . . . , vl } und
E = {{v0 , v1 }, {v1 , v2 }, . . . , {vl−1 , vl }}
1. Sind v0 , v1 , . . . , vl paarweise verschieden, so heißt G ein
v0 − vl -Weg der (kombinatorischen) Länge l.
2. Ist v0 = vl und sind v0 = vl , v1 , . . . , vl−1 paarweise
verschieden, so ist G ein Kreis der (kombinatorischen)
Länge l.
5
Wege und Kreise in Digraphen
Definition 1.4
Sei D = (V , A) ein Digraph mit V = {v0 , v1 , . . . , vl } und
A = {(v0 , v1 ), (v1 , v2 ), . . . , (vl−1 , vl )}
1. Sind v0 , v1 , . . . , vl paarweise verschieden, so heißt D ein
(gerichteter) v0 − vl -Weg der (kombinatorischen) Länge l.
2. Ist v0 = vl und sind v0 = vl , v1 , . . . , vl−1 mit l ≥ 2 paarweise
verschieden, so ist G ein (gerichteter) Kreis der
(kombinatorischen) Länge l.
6
Teilgraphen
Definition 1.5
Sind G = (V , E ) und G 0 = (V 0 , E 0 ) (bzw. D = (V , A) und
D 0 = (V 0 , A0 )) zwei Graphen (bzw. Digraphen) mit V 0 ⊆ V und
E 0 ⊆ E (bzw. A0 ⊆ A), so ist G 0 ein Teilgraph von G (bzw. D 0 ein
Teildigraph von D). Falls sogar
0
V
0
E =E∩
bzw. A0 = A ∩ (V 0 × V 0 )
2
gilt, so heißt der Teilgraph induzierter Untergraph (bzw.
induzierter Unterdigraph). Gilt V 0 = V , so heißt der Teilgraph
spannend.
7
Induzierte Knoten-, Kanten-, Bögenmengen
Definition 1.6
Sei G = (V , E ) ein Graph. Für Teilmengen V 0 ⊆ V und E 0 ⊆ E
0
definieren wir E (V 0 ) := E ∩ V2 und
V (E 0 ) := {v ∈ V | {v , w } ∈ E 0 für ein w ∈ V }
Definition 1.7
Sei D = (V , A) ein Graph. Für Teilmengen V 0 ⊆ V und A0 ⊆ A
definieren wir A(V 0 ) := A ∩ (V 0 × V 0 ) und
V (A0 ) := {v ∈ V | (v , w ) ∈ A0 oder (w , v ) ∈ A0 für ein w ∈ V }
8
Wege und Kreise in Graphen
Definition 1.8
Für eine endliche Menge M, c ∈ RM und N ⊆ M definieren wir
X
c(N) :=
cx .
x∈N
Definition 1.9
Ist G = (V , E ) ein Graph, c ∈ RE , und G 0 = (V 0 , E 0 ) ein
Untergraph von G , der ein s-t-Weg (bzw. ein Kreis) ist, so heißt
E 0 ⊆ E ein s-t-Weg (bzw. Kreis) in G . Seine c-Länge ist c(E 0 ).
Die Menge der von E 0 besuchten Knoten ist V 0 = V (E 0 ).
9
Wege und Kreise in Digraphen
Definition 1.10
Ist D = (V , A) ein Digraph, c ∈ RA , und D 0 = (V 0 , A0 ) ein
Unterdigraph von D, der ein (gerichteter) s-t-Weg (bzw. ein
(gerichteter) Kreis) ist, so heißt A0 ⊆ A ein (gerichteter) s-t-Weg
(bzw. (gerichteter) Kreis) in D. Seine c-Länge ist c(A0 ). Die
Menge der von A0 besuchten Knoten ist V 0 = V (A0 ).
10
Wege- und Kreisprobleme
Problem 1.11 (Kürzeste-Wege Problem)
Instanz: Digraph D = (V , A), c ∈ QA , s, t ∈ V
Aufgabe: Finde einen s-t-Weg kürzester c-Länge oder stelle
fest, dass es keinen s-t-Weg in D gibt.
Problem 1.12 (Kürzester-Kreis-Problem)
Instanz: Digraph D = (V , A), c ∈ QA
Aufgabe: Finde einen Kreis kürzester c-Länge oder stelle fest,
dass es keinen Kreis in D gibt.
11
Ungerichtete Graphen
Bemerkung 1.13
Das Problem, in einem ungerichteten Graphen G = (V , E )
kürzeste Wege oder Kreise zu finden, kann man durch
Konstruktion des Digraphen D = (V , A) mit
A = {(v , w ) ∈ V × V | {v , w } ∈ E }
auf die Probleme 1.11 bzw. 1.12 zurück führen.
12
Weitere Bemerkungen
Bemerkung 1.14
I
Analog zum Kürzesten-Wege bzw. Kürzesten-Kreis Problem
ist das Längste-Wege Problem bzw. das Längster-Kreis
Problem definiert.
I
Durch Multiplikation des Längenvektors c mit (−1) kann man
Kürzeste- und Längste-Wege/Kreise-Probleme ineinander
transformieren (solange es nicht auf Vorzeichen ankommt).
I
Kürzester/Längster-Kreis Probleme kann man mit Hilfe von
|A| Kürzeste/Längste-Wege Problemen lösen.
I
Das Kürzeste/Längste-Wege/Kreise Probleme für beliebige D
und c sind NP-schwer (z.B. Reduktion von Hamilton-Kreis
oder Hamilton-Pfad, s. Übungen).
13
Konservative Längen
Definition 1.15
Sei D = (V , A) ein Digraph. Der Längenvektor c ∈ RA heißt
konservativ, wenn es keinen Kreis negativer c-Länge in D gibt.
(d. h. c(C ) ≥ 0 für alle Kreise C ⊆ A)
Satz 1.16
Seien D = (V , A) ein Digraph mit konservativen Kantenlängen
c ∈ RA und s, w ∈ V . Hat W ⊆ A unter den s-w -Wegen mit
kombinatorischer Länge ≤ k kürzeste c-Länge und ist (v , w ) ∈ W
der letzte Bogen auf W , so hat W \ {(v , w )} kürzeste c-Länge
unter allen s-v -Wegen der kombinatorischen Länge ≤ k − 1.
Korollar 1.17
Ist D = (V , A) ein Digraph mit konservativen Bogenlängen
c ∈ RA , und ist W ⊆ A ein c-kürzester s-t-Weg in D, so ist für
jeden Knoten w ∈ V (W ) der s-w -Weg W 0 ⊆ W ein c-kürzester
s-w -Weg in D.
14
Nachbarn, Sterne, Knotengrade
Definition 1.18
Für einen Digraphen D = (V , A) und v ∈ V definieren wir:
I
Naus (v ) := {w ∈ V | (v , w ) ∈ A}
I
Nein (v ) := {w ∈ V | (w , v ) ∈ A}
I
δ aus (v ) := {(v , w ) | w ∈ Naus (v )}
I
δ ein (v ) := {(w , v ) | w ∈ Nein (v )}
|δ aus (v )| und |δ ein (v )| sind der Ausgrad bzw. der Eingrad von v .
Für einen Graphen G = (V , E ) und v ∈ V definieren wir:
I
N(v ) := {w ∈ V | {v , w } ∈ E }
I
δ(v ) := {{v , w } | w ∈ N(v )}
|δ(v )| ist der Grad von v .
15
Distanzen
Definition 1.19
Für einen Digraphen D = (V , A), c ∈ RA und s, v ∈ V ist die
c-Distanz zwischen s und v
distc (s, v ) ∈ R ∪ {∞}
die Länge eines s-v -Weges minimaler c-Länge bzw. ∞, wenn kein
s-v -Weg in D existiert.
Korollar 1.20
Für einen Digraphen D = (V , A) mit konservativen Bogenlängen
c ∈ RA gilt für alle s, v ∈ V mit s 6= v :
I
distc (s, s) = 0
I
distc (s, v ) = min distc (s, u) + c(u,v ) : u ∈ Nein (v )
16
Zusammenhang
Definition 1.21
Ein Graph G = (V , E ) heißt zusammenhängend, wenn es für
jedes Paar s, t ∈ V einen s-t-Weg in G gibt. Die
(inklusions-)maximalen zusammenhängenden Teilgraphen eines
Graphen sind seine Zusammenhangskomponenten.
Definition 1.22
Für einen Digraphen D = (V , A) heißt G = (V , E ) mit
E = {{v , w } | (v , w ) ∈ A oder (w , v ) ∈ A}
der D zugrunde liegende ungerichtete Graph.
Definition 1.23
Ein Digraph D = (V , A) heißt stark zusammenhängend, wenn es
für jedes Paar s, t ∈ V einen (gerichteten) s-t-Weg in D gibt. Ist
der D zugrunde liegende ungerichtete Graph zusammenhängend,
so heißt D schwach zusammenhängend.
17
Bäume und Wälder
Definition 1.24
Ein Wald ist ein (ungerichteter) Graph, der keine Kreise enthält.
Ein Wald ist ein Baum, wenn er zusammenhängend ist.
Bemerkung 1.25
Ein Graph G = (V , E ) mit |V | ≥ 1 ist genau dann ein Baum, wenn
er zusammenhängend ist und |E | = |V | − 1 gilt.
18
Branchings und Arboreszenzen
Definition 1.26
Ein Digraph D = (V , A) heißt ein Branching, wenn er keine
antiparallelen Bögen hat, der D zugrunde liegende ungerichtete
Graph ein Wald ist und |δ ein (v )| ≤ 1 für alle v ∈ V gilt. Ein
schwach zusammenhängendes Branching ist eine Arboreszenz.
Bemerkung 1.27
In einer Arboreszenz D = (V , A) gibt es genau einen Knoten
r ∈ V mit Nein (r ) = ∅. Er heißt die Wurzel von D. Für jedes
v ∈ V gibt es einen eindeutigen r -v -Weg in D.
Bemerkung 1.28
Eine Arboreszenz D = (V , A) mit Wurzel r ∈ V ist eindeutig
bestimmt durch die Abbildung p : V \ {r } −→ V mit
(p(v ), v ) ∈ A.
19
Kürzeste-Wege Bäume
Definition 1.29
Für einen Digraphen D = (V , A) und s ∈ V bezeichnen wir mit
RD (s) ⊆ V die Menge alle Knoten v ∈ V , für die ein s-v -Weg
in D existiert.
Korollar 1.30 (aus Satz 1.16)
Für einen Digraphen D = (V , A) mit konservativen Bogenlängen
c ∈ RA und s ∈ V gibt es eine Arboreszenz T = (RD (s), A0 ), so
dass für jedes v ∈ RD (s) der s-v -Weg in T ein c-kürzester
s-v -Weg in D ist.
Definition 1.31
Eine Arboreszenz wie in Kor. 1.30 heißt ein
Kürzeste-Wege-Baum (für D, c, s).
20
Azyklische Digraphen
Definition 1.32
Ein Digraph heißt azyklisch, wenn er keinen (gerichteten) Kreis
hat.
Definition 1.33
Für n ∈ N definieren wir [n] := {1, 2, . . . , n}.
21
Topologische Sortierung
Definition 1.34
Eine topologische Sortierung eines Digraphen D = (V , A) ist
eine Nummerierung V = {v1 , v2 , . . . , vn } der Knoten mit
(vi , vj ) ∈ A ⇒ i < j für alle i, j ∈ [n].
Satz 1.35
Sei D = (V , A) ein Digraph.
1. D hat genau dann eine topologische Sortierung, wenn D
azyklisch ist.
2. Es gibt einen Algorithmus, der für mittels Adjazenzliste
gegebenes D in O(|V | + |A|) Zeit eine topologische Sortierung
von D berechnet oder feststellt, dass D einen Kreis hat.
22
Kürzeste Wege in azyklischen Digraphen
Algorithmus 1.36 (Kürzeste Wege in azyklischen Digraphen)
Eingabe: Azyklischer Digraph D = (V , A) mit topologischer
Sortierung V = {v1 , . . . , vn }, c ∈ QA , σ ∈ [n]
Ausgabe: Für jeden Knoten v ∈ V \ {vσ } den Wert
d(v ) = distc (vσ , v ) und, falls d(v ) 6= ∞, den letzten
Bogen (p(v ), v ) auf einem vσ -v -Weg kürzester
c-Länge (kürzeste-Wege Baum bzgl. vσ )
for i = 1, . . . , n do
d(vi ) ← ∞
3: d(vσ ) ← 0
4: for i = σ + 1, . . . , n do
5:
d(vi ) ← min{d(w ) + c(w ,vi ) | w ∈ Nein (vi )}
1:
2:
6:
p(vi ) ← ein w ∈ Nein (vi ) mit d(vi ) = d(w ) + c(w ,vi )
(p(vi ) bleibt undefiniert, falls d(vi ) = ∞ oder Nein (vi ) = ∅)
23
Analyse von Algorithmus 1.36
Satz 1.37
Mit Algorithmus 1.36 kann man für mittels Adjazenzlisten
gegebene azyklische gerichtete Graphen D = (V , A) das
Kürzeste-Wege Problem (und genauso das Längste-Wege Problem)
in O(|V | + |A|) Zeit lösen (für beliebige c ∈ QA ), sogar simultan
für alle t ∈ V (bei festem s ∈ V ).
24
Dijkstras Algorithmus
Algorithmus 1.38 (Dijkstra-Algorithmus)
Eingabe: Digraph D = (V , A), c ∈ QA
+, s ∈ V
Ausgabe: Für alle v ∈ V \ {s} den Wert d(v ) = distc (s, v )
und, falls d(v ) 6= ∞, den letzten Bogen (p(v ), v ) auf
einem s-v -Weg kürzester c-Länge
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for all {v ∈ V \ {s}} do
d(v ) ← ∞
d(s) ← 0; F ← ∅
Bestimme v ∈ V \ F mit d(v ) = min{d(w ) | w ∈ V \ F }
F ← F ∪ {v }
for all {w ∈ Naus (v ) \ F } do
if {d(w ) > d(v ) + cvw } then
d(w ) ← d(v ) + cvw
p(w ) ← v
if {F 6= V } then
Gehe zu Schritt 4.
25
Analyse von Algorithmus ??
Satz 1.39
Dijkstras Algorithmus für nicht-negative Bogenlängen arbeitet
korrekt und kann so implementiert werden, dass die Laufzeit
O(|A| + |V | log |V |) ist.
Bemerkung 1.40
Das Kürzeste-Wege Problem in einem ungerichteten Graphen
G = (V , E ) mit nicht-negativen Kantenlängen kann man mit Hilfe
des Dijkstra-Algorithmus im Digraphen D = (V , A) mit
A = {(v , w ) ∈ V × V | {v , w } ∈ E }
lösen (jede Kante wird zu zwei Bögen).
26
Potenziale
Definition 1.41
Seien D = (V , A) ein Digraph und c ∈ RA . Ein Vektor π ∈ Rv
heißt ein c-Potenzial für D, wenn für alle (v , w ) ∈ A
πw ≤ πv + cvw
(d.h. cvw ≥ πw − πv )
gilt. (Vgl. Def. 9.34 Lineare Optimierung)
Bemerkung 1.42
Ist D = (V , A) ein Digraph, c ∈ RA , und π ∈ Rv ein c-Potenzial,
so gilt für alle s, v ∈ V
distc (s, v ) ≥ πv − πs .
27
Potenziale und konservative Längen
Bemerkung 1.43
Ist D = (V , A) ein Digraph, c ∈ RA konservativ und gilt
RD (s) = V für ein s ∈ V , so ist wegen Korollar 1.20 durch
πv := distc (s, v )
für alle
v ∈V
ein c-Potenzial auf D definiert. Für alle v ∈ V ist dann
insbesondere (wegen Bem. 1.42) distc (s, v ) die maximale
Potenzialdifferenz σv − σs über alle c-Potenziale σ ∈ RV von D.
Satz 1.44
Sei D = (V , A) ein Digraph. Dann ist c ∈ RA genau dann
konservativ, wenn es ein c-Potenzial für D gibt.
28
Pfade
Definition 1.45
Sei D = (V , A) ein Digraph und c ∈ RA . Ein l-Tupel
P = (v0 , v1 ), (v1 , v2 ), (v2 , v3 ), . . . , (vl−1 , vl ) ∈ Al
von Bögen in A heißt ein v0 -vl -Pfad in D (dabei dürfen einzelne
Knoten und einzelne Bögen beliebig oft auftreten) der c-Länge
c(P) :=
l
X
cvi−1 ,vi .
i=1
Seine (kombinatorische) Länge ist l.
Bemerkung 1.46
In einem Digraphen D = (V , A) mit konservativen Bogenlängen
c ∈ RA gilt c(P) ≥ distc (s, t) für jeden s-t-Pfad P.
29
Der Bellman-Ford Digraph
Definition 1.47
Sei D = (V , A) ein Digraph, c ∈ RA . Der Graph BF (D) = (V 0 , A0 )
hat die Knotenmenge V 0 = V × {0, 1, . . . , |V |} und die
Bogenmenge
A0 = ((v , i − 1), (w , i)) (v , w ) ∈ A, i ∈ [|V |]
∪ ((v , i − 1), (v , i)) i ∈ [|V |] .
Die Mengen {(v , i) : i ∈ {0, 1, . . . , |V |}} (v ∈ V ) sind die Zeilen
von BF (D). Analog sind {(v , i) : v ∈ V } (i ∈ {0, 1, . . . , |V |}) die
Spalten von BF (D). Die Bögen, welche Knoten einer Zeile
0
verbinden, heißen waagerecht. Wir definieren c 0 ∈ RA via
cvw , falls (v , w ) ∈ A
0
c(v ,i),(w ,i+1) =
.
0
, falls v = w
30
BF (D)
2
4
1
6
3
5
1
2
3
4
5
6
2
1
4
6
31
Kürzeste Wege in BF (D) (I)
Definition 1.48
I
Für s ∈ V und v ∈ RD (s) sei Ps (v ) ⊆ A0 der c 0 -kürzeste
(s, 0)-(v , |V |)-Weg in BF (D), der von Algorithmus 1.36
(BF (D) ist azyklisch) berechnet wird, wenn man in Schritt 6
wenn möglich den waagerechten Nachbarn nimmt.
I
Für T ⊆ A0 sei
A(T ) := {(v , w ) ∈ A | ((v , i − 1), (w , i)) ∈ T für ein i ∈ [|V |]}
I
Ein Weg P ⊆ A0 betritt Zeile w , wenn es einen Bogen
((v , i − 1), (w , i)) ∈ P mit v 6= w gibt.
32
Kürzeste Wege in BF (D) (II)
Bemerkung 1.49
Betritt Ps (v ) keine Zeile mehrmals (und Zeile s gar nicht), so ist
A(Ps (v )) ein c-kürzester (s, v )-Weg in D.
Lemma 1.50
Besucht Ps (v ) die Knoten (w , i) und (w , j) (i < j) und verläuft
der Teilweg Q ⊆ A0 von Ps (v ), der von (w , i) nach (w , j) führt,
nicht vollständig in Zeile w , so ist c 0 (Q) < 0.
33
Kürzeste Wege in BF (D) (III)
Bemerkung 1.51
Wählt man in Lem. 1.50 (w , i) und (w , j) so, dass Ps (v ) zwischen
diesen beiden Knoten keinen waagerechten Bogen hat und keine
Zeile mehrmals und die zu w gehörende Zeile gar nicht betritt, so
ist A(Q) ein Kreis negativer c-Länge in D.
Satz 1.52
Für einen Digraphen D = (V , A) und konservative Bogenlängen
c ∈ QA kann man das Kürzeste-Wege Problem in O(|V ||A|) Zeit
mit Algorithmus 1.36 auf BF (D) lösen.
34
Entscheiden von Konservativität
Satz 1.53
Für einen Digraphen D = (V , A) und c ∈ QA kann man in
O(|V ||A|) Zeit ein c-Potenzial oder einen Kreis negativer c-Länge
finden, indem man Algorithmus 1.36 auf BF (D̃) laufen lässt, wobei
D̃ aus D durch Hinzufügen eines Knotens s und der Bögen (s, v )
mit Länge 0 für alle v ∈ V entsteht.
35
Das 0/1-Knapsack Problem
Problem 1.54 (0/1-Knapsack Problem)
Instanz: a ∈ Nn , β ∈ N, c ∈ Nn
Aufgabe: Löse max {hc, xi : ha, xi ≤ β, x ∈ {0, 1}n }
Definition 1.55
Für eine endliche Menge M und N ⊆ M heißt χ(N) ∈ {0, 1}M mit
χ(M)N = 1N und χ(M)M\N = OM\N der charakteristische
Vektor oder der Inzidenzvektor von N.
36
Dynamische Programmierung für 0/1-Knapsack (I)
I
(Das 0/1-Knapsack Problem ist NP schwer.)
I
Definiere einen azyklischen Digraphen D = (V , A) mit
V = ([n] × {0, 1, . . . , β}) ∪ {(0, 0)}
und
((i, g ), (j, h)) ∈ A
⇐⇒
i < j und g + aj = h
Für (v , w ) ∈ A mit v = (i, g ), w = (j, h) setze cvw := cj .
37
DP-Graph für 0/1-Knapsack
5
5
1
3
3
2
2
3
4
2
4
4
1
4
5
6
0
1
2
3
4
5
6
a = (2, 1, 3, 1, 2, 2), c = (5, 1, 3, 2, 4, 1), β = 7
7
38
Dynamische Programmierung für 0/1-Knapsack (II)
I
Für s = (0, 0) und v = (i, g ) ist dann die c-Länge eines
c-längsten s-v -Weges P ⊆ A in D gleich
n
o
max hc[i] , x̃i : ha[i] , x̃i = g , x̃ ∈ {0, 1}[i]
(1)
und mit
J := {j ∈ [n] : P besucht einen Knoten (j, h)}
ist χ(J) ∈ {0, 1}n eine Optimallösung von (1).
I
Ein c-längster s-v -Weg in D (über alle v ∈ V ) liefert also eine
Optimallösung des 0/1-Knapsackproblems.
Satz 1.56
Das 0/1-Knapsackproblem kann man in O(n2 β) Zeit mit
dynamischer Programmierung lösen.
39
Minimum Mean Cycle Problem
Definition 1.57
Für einen Digraphen D = (V , A) und c ∈ RA sei
c(C )
: C ⊆ A Kreis in D
µc (D) := min
|C |
(µc (D) = ∞, falls D azyklisch).
Problem 1.58 (Minimum Mean Cycle Problem)
Instanz: Digraph D = (V , A), c ∈ QA
)
Aufgabe: Finde einen Kreis C ⊆ A mit c(C
|C | = µc (D) oder
stelle fest, dass D azyklisch ist.
40
Der Digraph K (D)
I
Seien D = (V , A) ein Digraph und c ∈ RA , n := |V |.
I
Definiere D̃ := (Ṽ , Ã) mit Ṽ := V ] {s}, ñ := n + 1, und
à := A ∪ {(s, v ) | v ∈ V }
und c̃ ∈ RÃ mit c̃A := c, c̃Ã\A := OÃ\A .
I
Definiere K (D) := (V 0 , A0 ) mit V 0 := Ṽ × {0, 1, . . . , ñ},
A0 := {((v , i − 1)(w , i)) | (v , w ) ∈ Ã, i ∈ [ñ]}
0
0
und c 0 ∈ RA mit c((v
,i−1),(w ,i)) := c̃vw für alle
(v , w ) ∈ Ã, i ∈ [ñ].
I
Wege der kombinatorischen Länge l in K (D) entsprechen
Pfaden der kombinatorischen Länge l in D̃.
I
Für k ∈ [ñ] und v ∈ Ṽ sei Fk (v ) := distc 0 ((s, 0), (v , k)).
41
K (D)
2
4
1
6
3
s
1
2
3
4
5
6
5
42
Der Min Mean Cycle Satz
Satz 1.59
Sei D = (V , A) ein nicht azyklischer Digraph, c ∈ RA . Dann gilt
µc (D) = µc̃ (D̃) =
Fñ (v ) − Fk (v )
| 0 ≤ k ≤ ñ − 1} v ∈ Ṽ . (2)
min max{
ñ − k
43
Finden eines Minimum Mean Cycle (I)
I
Stelle fest, ob D azyklisch ist.
I
Falls D nicht azyklisch ist, sei v ∈ Ṽ ein Knoten, für den das
Minimum in Gleichung (2) angenommen wird.
I
Sei Q̃ ⊆ A0 ein (s, 0) − (v , ñ)-Weg mit c 0 (Q̃) = Fñ (v ).
I
Q̃ muss wenigstens eine Zeile mehrmals besuchen, er besteht
also aus einem Anfangsstück Q1 ⊆ A0 , einem Endstück
Q2 ⊆ A0 , und einem Mittelstück Q ⊆ A0 , das von (w , i) zu
(w , j) (i < j) führt und keine Zeile mehrmals betritt.
44
Finden eines Minimum Mean Cycle (II)
I
Dann ist C := Ã(Q) ⊆ Ã ein Kreis und mit k ? := ñ − |Q| gilt
c 0 (Q1 ) + c 0 (Q2 ) ≥ Fk ∗ (v )
(weil man durch Anhängen einer um |Q| Spalten nach links
verschobenen Kopie von Q2 an Q1 einen (s, 0)-(v , k ? )-Weg
der c 0 -Länge c 0 (Q1 ) + c 0 (Q2 ) erzeugen kann), also
c̃(C )
|C |
=
≤
I
c 0 (Q)
Fñ (v )−(c 0 (Q1 )+c 0 (Q2 ))
|Q| =
|Q|
Fñ (v )−Fk ∗ (v )
≤
µ
c̃ (D̃)
ñ−k ∗
(wobei die letzte Ungleichung wegen Satz 1.59 und der Wahl
von v gilt)
Wegen δ ein (s) = ∅ ist C ⊆ A sogar ein Kreis in D mit
c(C )
= µc (D) = µc̃ (D̃) .
|C |
45
Laufzeit des Min Mean Cycle Algorithmus
Satz 1.60
Das Minimum Mean Cycle Problem kann in O(|V ||A|) Zeit gelöst
werden.
Herunterladen