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.