1 Vorlesung Kombinatorische Optimierung (Wintersemester 2009/10) Kapitel 1: Kürzeste Wege und Kreise Volker Kaibel Otto-von-Guericke Universität Magdeburg (Version vom 6. Oktober 2009) 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 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. 4 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. 5 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 E0 = 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. 6 Induzierte Knoten-, Kanten-, Bögenmengen Definition 1.6 Sei G = (V , E ) ein Graph. Für Teilmengen V 0 ⊆ V und E 0 ⊆ E V0 0 definieren wir E (V ) := E ∩ 2 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 } 7 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 ). 8 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 ). 9 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. 10 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. 11 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). 12 Nachbarn, Sterne, Knotengrade Definition 1.19 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 . 13 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. 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. 14 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 ) ist genau dann ein Baum, wenn er zusammenhängend ist und |E | = |V | − 1 gilt. 15 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. 16 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-w -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). 17 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σ ) d(vσ ) ← 0 2: for i = σ + 1, . . . , n do 3: d(vi ) ← min{d(w ) + c(w ,vi ) | w ∈ Nein (vi )} 1: 4: p(vi ) ← ein w ∈ Nein (vi ) mit d(vi ) = d(w ) + c(w ,vi ) (p(vi ) bleibt undefiniert, falls d(vi ) = ∞ oder Nein (vi ) = ∅) 18 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. 19 BF (D) 2 4 1 6 3 5 1 2 3 4 5 6 20 BF (D) 2 4 1 6 3 1 2 3 4 5 6 5 21 BF (D) 2 4 1 6 3 5 1 2 3 4 5 6 22 BF (D) 2 4 1 6 3 1 2 3 4 5 6 5 23 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 7 a = (2, 1, 3, 1, 2, 2), c = (5, 1, 3, 2, 4, 1), β = 7 24 K (D) 2 4 1 6 3 s 1 2 3 4 5 6 5 25 Beweis des Min Mean Cycle Satzes s P1 (Q1) P3 w P P2 (Q2) v