Optimierung 2 gelesen von Prof. Taraz WS 05/06 Julian Cerezo Cóbar [email protected] 15. Februar 2007 i Inhaltsverzeichnis 1 Einführung in die Graphentheorie 1.1 Notation . . . . . . . . . . . . . . . . . . . . 1.2 Bemerkung . . . . . . . . . . . . . . . . . . 1.3 Definition Graph . . . . . . . . . . . . . . . 1.4 Beispiele . . . . . . . . . . . . . . . . . . . . 1.5 Bemerkung . . . . . . . . . . . . . . . . . . 1.6 Definition isomorpher Graphen . . . . . . . 1.7 Definition Nachbarn . . . . . . . . . . . . . 1.8 Proposition . . . . . . . . . . . . . . . . . . 1.9 Definition Subgraph . . . . . . . . . . . . . 1.10 Beispiele . . . . . . . . . . . . . . . . . . . . 1.11 Definition spezieller Subgraphen . . . . . . 1.12 Proposition . . . . . . . . . . . . . . . . . . 1.13 Definition Wege, Pfade . . . . . . . . . . . . 1.14 Definition Landau-Symbole . . . . . . . . . 1.15 Beispiele . . . . . . . . . . . . . . . . . . . . 1.16 Bemerkung . . . . . . . . . . . . . . . . . . 1.17 Definition zusammenhängend, Kreis, Baum 1.18 Lemma . . . . . . . . . . . . . . . . . . . . 1.19 Satz . . . . . . . . . . . . . . . . . . . . . . 1.20 Korollar . . . . . . . . . . . . . . . . . . . . 1.21 Bemerkung, Definition Stern . . . . . . . . 1.22 Satz von Cayley (1889) . . . . . . . . . . . . 1.23 Definition bipartit . . . . . . . . . . . . . . 1.24 Bemerkung . . . . . . . . . . . . . . . . . . 1.25 Definition Sphäre . . . . . . . . . . . . . . . 1.26 Satz von König (1936) . . . . . . . . . . . . 1.27 Korollar . . . . . . . . . . . . . . . . . . . . 1.28 Definition Adjazenzmatrix, Adjazenzliste . . 1.29 Algorithmus BFS(G, u) . . . . . . . . . . . 1.30 Proposition . . . . . . . . . . . . . . . . . . 1.31 Algorithmus BFS*(G, u) . . . . . . . . . . . 1.32 Proposition . . . . . . . . . . . . . . . . . . 1.33 Algorithmus DFS(G, u) . . . . . . . . . . . 1.34 Proposition . . . . . . . . . . . . . . . . . . 1.35 Proposition . . . . . . . . . . . . . . . . . . 1.36 Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 2 2 2 2 2 3 3 3 4 4 4 4 5 5 6 7 7 7 7 7 7 7 8 9 9 10 11 12 12 13 13 2 Kürzeste Pfade und minimal spannende Bäume 2.1 Definition Länge, Distanz . . . . . . . . . . . . . 2.2 Lemma . . . . . . . . . . . . . . . . . . . . . . . 2.3 Algorithmus Dijkstra(G, l, s) . . . . . . . . . . . . 2.4 Proposition . . . . . . . . . . . . . . . . . . . . . 2.5 Bemerkung . . . . . . . . . . . . . . . . . . . . . 2.6 Bemerkung . . . . . . . . . . . . . . . . . . . . . 2.7 Lemma . . . . . . . . . . . . . . . . . . . . . . . ~ l) . . . 2.8 Algorithmus Floyd-Warshall(G = ([n], E), 2.9 Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 14 15 16 17 17 18 18 ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 Bemerkung . . . . . . . . . . . . . . . . . . Nachtrag . . . . . . . . . . . . . . . . . . . . Algorithmus Prim(G, l) . . . . . . . . . . . Beispiel . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . . . Algorithmus Kruskal(G, l) . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . . . Definition Unabhängigkeitssystem, Matroid Beispiel . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . . . Algorithmus MIN-GREEDY((S, I), l) . . . Satz . . . . . . . . . . . . . . . . . . . . . . Korollar . . . . . . . . . . . . . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 19 19 19 20 20 21 21 22 22 22 23 23 24 3 Flüsse (in Netzwerken) 3.1 Definition grundlegender Begriffe . . . . . . . . . . . . 3.2 Proposition . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Definition Schnitt, Kapazität . . . . . . . . . . . . . . 3.4 Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Definition Restnetzwerk . . . . . . . . . . . . . . . . . 3.6 Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Satz Max-Flow-Min-Cut-Theorem . . . . . . . . . . . 3.8 Korollar . . . . . . . . . . . . . . . . . . . . . . . . . . ~ s, t, c)) . . . . 3.9 Algorithmus Ford-Fulkerson (N = (V, E, 3.10 Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Definition trennend . . . . . . . . . . . . . . . . . . . . 3.13 Definition Kanten(zusammenhangs)zahl . . . . . . . . 3.14 Definition saturiert, geschichtetes Restnw., Durchsatz 3.15 Algorithmus MaxFlow(GNf ) . . . . . . . . . . . . . . 3.16 Algorithmus PushFlow(v, g) . . . . . . . . . . . . . . . 3.17 Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . 3.18 Algorithmus Dinic(N ) . . . . . . . . . . . . . . . . . . 3.19 Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . 3.20 Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.21 Korollar . . . . . . . . . . . . . . . . . . . . . . . . . . 3.22 MaxFlow als LP . . . . . . . . . . . . . . . . . . . . . 3.23 Proposition . . . . . . . . . . . . . . . . . . . . . . . . 3.24 Proposition . . . . . . . . . . . . . . . . . . . . . . . . 3.25 Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 26 26 26 27 27 29 30 30 30 30 30 31 32 33 33 34 35 35 36 36 37 38 39 40 4 Matchings 4.1 Definition Matching 4.2 Satz von König . . . 4.3 Satz von Hall . . . . 4.4 Proposition . . . . . 4.5 Korollar . . . . . . . 4.6 Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 42 42 43 45 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 Definition M -alternierend, M -augmentierend . . . . . . . . Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . Korollar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmus Augmentierendes Bipartites Matching (G, M ) Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definition l(M ) . . . . . . . . . . . . . . . . . . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmus Hopcroft-Karp (G = (A ∪ B, E)) . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definition PM(G) . . . . . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . Definition FPM(G) . . . . . . . . . . . . . . . . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Satz Perfect Matching Polytope Theorem . . . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 46 47 47 48 49 49 50 50 51 52 53 53 54 54 54 55 57 60 5 NP-Vollständigkeit 5.1 Beispiel . . . . . . . . . . . . . . . . . . . . 5.2 Proposition . . . . . . . . . . . . . . . . . . 5.3 Definition Alphabet, Wort . . . . . . . . . . 5.4 Beispiel . . . . . . . . . . . . . . . . . . . . 5.5 Definition Die Klasse P“ . . . . . . . . . . ” 5.6 Beispiel . . . . . . . . . . . . . . . . . . . . 5.7 Definition Die Klasse NP“ . . . . . . . . . ” 5.8 Bemerkung . . . . . . . . . . . . . . . . . . 5.9 Beispiel . . . . . . . . . . . . . . . . . . . . 5.10 Proposition . . . . . . . . . . . . . . . . . . 5.11 Definition polynomielle Transformierbarkeit 5.12 Bemerkung . . . . . . . . . . . . . . . . . . 5.13 Definition NPC . . . . . . . . . . . . . . . . 5.14 Korollar . . . . . . . . . . . . . . . . . . . . 5.15 Korollar . . . . . . . . . . . . . . . . . . . . 5.16 Satz von Cook . . . . . . . . . . . . . . . . 5.17 Proposition . . . . . . . . . . . . . . . . . . 5.18 Bemerkung . . . . . . . . . . . . . . . . . . 5.19 Satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 61 61 61 61 62 62 62 62 62 63 63 63 63 63 64 64 64 65 65 6 Traveling Salesman Problem (TSP) 6.1 Definition Hamiltonkreis . . . . . . . . 6.2 Bemerkung . . . . . . . . . . . . . . . 6.3 Lemma . . . . . . . . . . . . . . . . . 6.4 Korollar . . . . . . . . . . . . . . . . . 6.5 Satz . . . . . . . . . . . . . . . . . . . 6.6 Definition TSP . . . . . . . . . . . . . 6.7 Satz . . . . . . . . . . . . . . . . . . . 6.8 Definition Approximationsalgorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 66 66 66 67 67 69 69 69 iv . . . . . . . . . . . . . . . . . . . . . . . . 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21 6.22 6.23 6.24 6.25 6.26 6.27 6.28 6.29 6.30 6.31 6.32 6.33 6.34 6.35 6.36 6.37 6.38 6.39 6.40 6.41 6.42 Satz . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . Algorithmus MST-Heuristik . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . Algorithmus Christofides-Heuristik . . . Satz . . . . . . . . . . . . . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . Algorithmus K-OPT TSP . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . Definition δ-Pfad . . . . . . . . . . . . . Algorithmus LIN-KERNIGHAN (G, c) . Bemerkung . . . . . . . . . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . Definition T (n), TSP-Polytop . . . . . . Satz . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . Definition 1-Baum . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . Beispiel . . . . . . . . . . . . . . . . . . Satz Held-Karp-Schranke . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . Korollar . . . . . . . . . . . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . Definition Gomory-Chvatal-Schnittebene Satz . . . . . . . . . . . . . . . . . . . . Korollar . . . . . . . . . . . . . . . . . . Proposition . . . . . . . . . . . . . . . . Satz . . . . . . . . . . . . . . . . . . . . Branch & Bound . . . . . . . . . . . . . Algorithmus . . . . . . . . . . . . . . . . Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 71 71 71 72 72 73 73 74 74 75 75 76 76 76 77 77 78 78 78 79 79 80 80 82 83 84 84 84 85 85 85 86 86 7 Färbung und Average-Case Analyse 7.1 Definition Färbbarkeit, Chromatische Zahl 7.2 Algorithmus Greedy . . . . . . . . . . . . 7.3 Beispiel . . . . . . . . . . . . . . . . . . . 7.4 Proposition . . . . . . . . . . . . . . . . . 7.5 Proposition . . . . . . . . . . . . . . . . . 7.6 Satz . . . . . . . . . . . . . . . . . . . . . 7.7 Definition Gn, 12 . . . . . . . . . . . . . . . 7.8 Bemerkung . . . . . . . . . . . . . . . . . 7.9 Proposition . . . . . . . . . . . . . . . . . 7.10 Proposition . . . . . . . . . . . . . . . . . 7.11 Bemerkung . . . . . . . . . . . . . . . . . 7.12 Satz . . . . . . . . . . . . . . . . . . . . . 7.13 Korollar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 87 87 87 87 87 87 88 88 88 88 89 89 89 v 1 Einführung in die Graphentheorie 1.1 Notation N := {0, 1, 2, ...}, N+ := {1, 2, ...} i ≤ j : [i, j] := {i, i + 1, ..., j}, 1 ≤ j : [j] := {1, ..., j} x ∈ R : bxc := max {n : n ≤ x}, dxe := min {n : x ≤ n} n∈Z n∈Z log x := log2 x, ln x := loge x V Menge, k ∈ N: V k := {W ⊆ V : |W | = k} V k := {(v1 , ..., vk ) : vi ∈ V } = V × ... × V | {z } k−mal 1.2 Bemerkung V endlich, dann 1.3 V k = |V | k k k , V = |V | . Definition Graph Ein Graph ist ein Tupel G = (V, E), wobei V eine endliche Menge(Knotenmenge, Eckenmenge, engl. vertices) ist, und E ⊆ V2 (die sog. Kantenmenge, engl. edges) ist. n := |G| := |V | = b Ordnung von G. m := kGk := |E| = b Größe von G. Wenn {u, v} ∈ E, dann heißen u und v Endpunkte der Kanten {u, v}. Sei G = (V, E) ein Graph. Dann ist G := V, V2 \E das Komplement von G. G = (V, ∅) heißt leerer“ Graph, G = V, V2 heißt vollständiger“ Graph. ” ” Vollständige Graphen auf n Knoten werden mit Kn bezeichnet. 1.4 Beispiele a) G = (V, E), V = {A, B, C}, E = {{A, B} , {B, C}} b) G = (V, E), V = {1, 2, 3}, E = {{1, 2} , {2, 3}} c) d) 1.5 G= = G= = K4 = Bemerkung V Es gibt genau 2( 2 ) Graphen mit Knotenmenge [n]. 1 1.6 Definition isomorpher Graphen G1 = (V1 , E1 ) und G2 = (V2 , E2 ) heißen isomorph, wenn es eine Bijektion f : V1 → V2 mit {u, v} ∈ E1 ⇔ {f (u) , f (v)} ∈ E2 ∀ u, v ∈ V1 gibt. 1.7 Definition Nachbarn Zwei Knoten u, v ∈ V heißen benachbart(verbunden, adjazent), wenn {u, v} ∈ E. Eine Kante e ∈ E inzidiert mit v ∈ V , wenn v ∈ e. Nachbarschaft von v in G: ΓG (v) := Γ (v) := {u ∈ V : {u, v} ∈ E}. Grad von v in G: dG (v) := d (v) := |Γ (v)|. Maximalgrad von G: ∆ (G) := max d (v), Minimalgrad von G: δ (G) := min d (v). v∈V v∈V Wenn δ (G) = ∆ (G) = K, dann heißt G K-regulär. 1.8 Proposition Für jeden Graphen G = (V, E) gilt: P a) d (v) = 2m v∈V b) G hat eine gerade Anzahl von Knoten mit ungeradem Grad. Beweis a) Jede Kante wird genau zweimal gezählt. P P P b) 2m = d (v) = d (v) + v∈V 1.9 v:d(v) ungerade d (v) v:d(v) gerade Definition Subgraph Ein Graph H = (VH , EH ) heißt (schwacher) Subgraph von G = (V, E), wenn VH ⊆ V und EH ⊆ E. Ein Subgraph H heißt induziert, wenn darüber hinaus EH = E ∩ V2H . Den von einer Knotenteilmenge S ⊆ V induzierten Subgraphen bezeichnet man mit G [S] := S, S2 ∩ E . 1.10 Beispiele 2 3 G= 5 1 4 2 H1 = 3 4 2 H2 = 3 4 2 3 G [{2, 3, 5}] = 5 G Graph, H1 ist Subgraph, aber nicht induziert. H2 ist induzierter Subgraph. G [{2, 3, 5}] ist rechts auf dem Bild dargestellt. Wenn H Subgraph von G, dann schreibe H ⊆ G. 2 1.11 Definition spezieller Subgraphen Sei H ⊆ G, G = (V, E), H = (VH , EH ). H heißt (auf)spannend, falls VH = V . S ⊆ V heißt Clique, falls G [S] vollständig ist. S ⊆ V heißt stabile/unabhängige Menge, falls G [S] leer ist. Cliquenzahl: ω (G) := max {|S| : S ⊆ V ist Clique} Stabzahl: α (G) := max {|S| : S ⊆ V stabile Menge} Beispiel 1 3 2 4 5 Cliquen: {1} , {2} , {3} , {4} , {5} , {1, 2} , {1, 3} , {2, 4} , {3, 4} , {3, 5} , {4, 5} , {3, 4, 5} . Stabile Mengen: {1, 4} , {1, 5} , {2, 3} , {2, 5} . Cliquenzahl: 3, Stabzahl: 2. 1.12 Proposition a) ω (Kn ) = n, α (Kn ) = 1 b) ω (G) = α G c) 1 ≤ ω (G) ≤ ∆ (G) + 1 1.13 Definition Wege, Pfade Ein Weg W ist eine Folge v0 , v1 , ..., vk von (nicht notwendig verschienden) Knoten vi ∈ V mit {vi , vi+1 } ∈ E ∀ i ∈ [0, k − 1]. Länge von W : l (W ) := K := # Kanten Beispiel 1 2 3 5 4 6 8 9 7 W = (1, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 6, 7, 8, 6, 9) Pfad: Weg mit paarweise verschiedenen Knoten Pfad auf n Knoten: Pn (l (Pn ) = n − 1). u-w-Pfad: Pfad mit Anfangsknoten v0 = u und Endknoten vk = w. Distanz zwischen u, w ∈ V : min {l (P ) : P ist u-w-Pfad} , falls es u-w-Pfad gibt dist (u, w) := ∞, sonst 3 Beispiel w0 u w dist(u, w) = 2, dist(u, w0 ) = ∞. 1.14 Definition Landau-Symbole f, g : N → R+ zwei Funktionen. Schreibe: f (n) = O (g (n)) :⇔ ∃ c ∈ R+ , ∃ n0 ∈ N : f (n) ≤ cg (n) ∀ n ≥ n0 . f (n) = Ω (g (n)) :⇔ ∃ c ∈ R+ , ∃ n0 ∈ N : f (n) ≥ cg (n) ∀ n ≥ n0 . f (n) = Θ (g (n)) :⇔ ∃ c1 , c2 ∈ R+ , ∃ n0 ∈ N : c1 g (n) ≤ f (n) ≤ c2 g (n) ∀ n ≥ n0 . f (n) = o (g (n)) :⇔ ∀c ∈ R+ ∃ n0 ∈ N : f (n) ≤ cg (n) ∀ n ≥ n0 . f (n) = ω (g (n)) :⇔ ∀c ∈ R+ ∃ n0 ∈ N : f (n) ≥ cg (n) ∀ n ≥ n0 . 1.15 Beispiele a) 7n = O n2 , denn setze c := 8, n0 = 1, dann 7n2 ≤ 8n2 ∀ n ≥ 1. b) 7n = O n2 , Begründung wie bei a). c) 71 n2 6= o n2 , denn z.B. für c := 18 ist 71 n2 ≤ 18 n2 ∀ n ≥ n0 nicht zu erfüllen. d) n2 = o n2.1 , denn n2 ≤ cn2.1 ⇔ 1c ≤ n0.1 . Zu gegebenem c > 0 wähle 10 10 n0 := 1c . Wenn n ≥ n0 ≥ 1c , dann 1c ≤ n0.1 , also n2 ≤ cn2.1 . √ n e) n2 + 5n − 7 n +√(−1) ln = Θ n2 n 2 2 Denn n+(−1) ln ≤ n2 +5n2 +n2 = 7n2 ∀ n ≥ 1 und n +5n− √ n +5n−7 n 1 2 n 2 2 7 n + (−1) ln ≥ n − 7n − n = n − 8n = 2 n + 2 n − 8n ≥ 12 n2 . |{z} 2 ∀ n≥16 1.16 Bemerkung f (n) n→∞ g(n) a) f (n) = o (g (n)) ⇔ lim =0 b) f (n) = Θ (g (n)) ⇔ f (n) = O (g (n)) und f (n) = Ω (g (n)) 1.17 Definition zusammenhängend, Kreis, Baum a) G heißt zusammenhängend, falls es zwischen je zwei Knoten u, v ∈ V einen u-v-Pfad gibt. Die inklusionsmaximalen zusammenhängenden Subgraphen von G heißen (Zusammenhangs-)Komponenten. (Zusammenhangs-)Komponenten 4 b) Eine Folge v1 , ..., vk mit k ≥ 3 von vi ∈ V heißt Kreis, wenn v1 , ..., vk Pfad ist und {vk , v1 } ∈ E. v1 vk c) Ein kreisfreier Graph heißt Wald. Ein kreisfreier zusammenhängender Graph heißt Baum. Blatt Baum Wald d) Ein Knoten v ∈ V mit d (v) = 1 heißt Blatt. 1.18 Lemma Jeder Baum mit mindestens zwei Knoten hat mindestens zwei Blätter. Beweis • Betrachte einen längsten Pfad im Baum. • Seine zwei Endknoten müssen Blätter sein, denn anderenfalls wäre der Pfad verlängerbar, oder es existiert ein Kreis. 1.19 Satz G = (V, E), |V | = n. Dann sind äquivalent: 1. G ist Baum. 2. G ist zusammenhängend und |E| = n − 1. 3. G ist kreisfrei und |E| = n − 1. 4. G ist kantenmaximal kreisfrei(d.h. kreisfrei und jede weitere Kante schließt Kreis). 5. G ist kantenminimal zusammenhängend(d.h. zusammenhängend und Entfernen jeder weiteren Kante zerstört zusammenhängend). 6. Je zwei Knoten in V sind durch genau einen Pfad verbunden. 5 Beweis 1.⇒2. Z.z.: |E| = n − 1 Induktion über n: n = 1, 2 klar. Sei n ≥ 3. Nach Lemma 1.18 existiert ein Blatt b ∈ V . Entferne b und die (einzige) Kante, die b enthält, erhalte G0 . G0 ist kreisfrei und zusammenhängend, also Baum. Nach Induktion gilt m0 = n0 − 1. Also hat G genau m = m0 + 1 = (n0 − 1) + 1 = n0 = n − 1 Kanten. 2.⇒3. Z.z.: Kreisfrei Annahme: ∃ Krei C in G. Von jedem Knoten v ∈ V \C existiert ein kürzester Pfad von v nach C. • Nenne erste Kante auf Pfad ev . v 00 ev v 000 v w C ev0 v 0 • Wenn v 6= W , dann ev 6= ew . • Dann existieren aber |C| + (n − |C|) · 1 = n verschiedene Kanten. 3.⇒1. Z.z.: G zusammenhängend • Seien H1 , ..., Hk die Komponenten von G, Hi habe ni Knoten und mi Kanten. • Weil Hi zusammenhängend und G kreisfrei sind Hi Bäume. k k P 1.⇒2. P ⇒n−1=m= mi = (ni − 1) = n − k i=1 i=1 Also k = 1, G ist zusammenhängend. 1.20 Korollar G zusammenhängend ⇔ G besitzt aufspannenden Baum als Subgraph Beweis ⇐:“ ” Klar. ⇒:“ ” • Solange es Kreise gibt, entferne Kanten aus ihnen. • Dabei bleibt der Graph zusammenhängend. • Am Ende also zusammenhängend und kreisfrei, also Baum. • (Aufspannend, weil keine Knoten entfernt werden.) 6 1.21 Bemerkung, Definition Stern • Pfade sind Bäume. • Ein Stern aus n Knoten ist ein Baum mit n − 1 Blättern. 1.22 Satz von Cayley (1889) Es gibt genau nn−2 Bäume auf der Knotenmenge [n]. 1.23 Definition bipartit · G = (V, E) heißt bipartit, wenn es eine Partition V = U ∪ W mit E ⊆ {{u, w} : u ∈ U, w ∈ W } gibt. Falls Gleichheit gilt spricht man von vollständig bipartiten Graphen. Bezeichnung: K|U |,|W |. U 1.24 W Bemerkung a) Bäume sind bipartit. b) Kreise sind bipartit genau dann, wenn sie gerade Länge haben. 0 1.25 1 0 1 Definition Sphäre G = (V, E), i ∈ N, u ∈ V. i-te Sphäre um u := Si (u) = {w ∈ V : dist(u, w) = i}, z.B. S0 (u) = {u} , S1 (u) = Γ(u). 1.26 Satz von König (1936) Graph G bipartit ⇔ G enthält keine ungeraden Kreise. 1.27 Korollar G bipartit ⇔ U0 := S0 (u) ∪ S2 (u) ∪ . . . , U1 := S1 (u) ∪ S3 (u) ∪ . . . bilden stabile Mengen. 7 Beweisskizze 1.26 / 1.27 G bipartit ⇒ G hat keine ungeraden Kreise. ⇑ ⇓ Hausaufgabe U0 = S0 . . . und U1 = S1 . . . stabil. 1.28 Definition Adjazenzmatrix, Adjazenzliste 1 2 G = ([n, E]) 3 5 4 Adjazenzmatrix n×n A ∈ {0, 1} 1, {i, j} ∈ E 0, sonst 1 1 0 1 0 ; A = aij ; aij = Beispiel Vorteil: Nachteil: 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 Test ob {i, j} ∈ E geht in O(1). Brauchen Ω(n2 ) Speicherplatz. Adjazenzliste 1 2 3 4 5 ↑ → → → → → 2→ 1→ 2→ 2→ 1→ 5 3 → 4 → 5 4 3 → 5 2 → 4 Feld mit n Listen mit jeweils Γ(v) Vorteil: O(n + P d(v)) = O(n + 2m) = O(n + m) Speicherplatz. v Nachteil: Test ob {i, j} ∈ E kostet evtl. Ω(n). Breitensuche(breadth-first-search, BFS) Idee: Besuche“ S0 (u), S1 (u), S2 (u), . . . in dieser Reihenfolge. ” Natation: Warteschlange Q, FIFO • Enqueue(Q, u): Füge neues Element u am Ende von Q an. • v:=Dequeue(Q): Entferne Element am Kopf von Q und nenne es v. 8 1.29 Algorithmus BFS(G, u) 1. Enqueue(Q, u) 2. bekannt[u] := TRUE 3. while Q 6= ∅ 4. v := Dequeue(Q) 5. for w ∈ Γ(v) mit bekannt[w] = FALSE 6. Enqueue(Q, w) 7. bekannt[w] := TRUE 1.30 Proposition G = (V, E) zusammenhängend, u ∈ V . Dann besucht“ BFS(G, u) alle Knoten und Kanten von G genau einmal, d.h. ” Knoten werden genau einmal in die Schlage Q aufgenommen und dabei als bekannt markiert, und Kanten werden genau einmal(im Schritt 5.) entlang gegangen. Laufzeit beträgt O(m). Beweis • Wenn ein Knoten in die Warteschlange kommt, wird es als bekannt“ ” markiert und bleibt bekannt. • Da nur unbekannte Knoten in die Schlange Q kommen, kann das nur einmal pro Knoten passieren. • ⇒ Zeilen 4. und 5. werden nur einmal pro Knoten durchlaufen, Zeilen 6. und 7. maximal für alle Nachbarn eines jeden Knoten. • ⇒ Aufwand O(n + P d(v)) = O(n + 2m) n−1≤m = O(m + 1 + 2m) = O(m). v∈V n − 1 ≤ m gilt, da Graph zusammenhängend. bleibt zu zeigen: Jeder Knoten wird bekannt“. ” • u wid(in Zeile 2.) bekannt, angenommen ein Knoten z wird nie bekannt. • Betrachte einen u-z-Pfad P . • P hat eine Kante {x, y} mit x bekannt, y unbekannt. • ⇒ x muss also in Q gewesen sein und Q irgendwann verlassen haben. In dem Moment sind aber alle Nachbarn von x, die dann noch unbekannt waren, bekannt geworden. Also auch y. 9 1.31 Algorithmus BFS*(G, u) 1. Enqueue(Q, u) 2. bekannt[u] := TRUE 3. abst[u] := 0 4. while Q 6= ∅ 5. v := Dequeue(Q) 6. for w ∈ Γ(v) mit bekannt[w] = FALSE 7. Enqueue(Q, w) 8. bekannt[w] := TRUE 9. abst[w] :=abst[v] + 1 10. vor[w] := v Beispiel BFS/BFS* 1 v 1 2 3 6 4 5 7 8 2 3 4 5 7 Q 1 ∅ 2,3,6 3,6 3,6,4,5 6,4,5 4,5 4,5,7,8 5,7,8 7,8 8 ∅ 10 6 8 abst[·] 1: 0 2,3,6: 1 4,5: 2 7,8: 2 1.32 Proposition Sei G = (V, E) zusammenhängend, u ∈ V . a) Wenn w in Q aufgenommen wird, dann hat vor[w] Q gerade verlassen. b) Wenn a vor b in Q kommt, dann abst[a] ≤ abst[b]. c) Zu jedem Zeitpunkt unterscheiden sich abst[·]-Werte in Q um maximal 1. d) Die Folge w,vor[w],vor[vor[w]],. . . bildet einen Pfad der Länge abst[w] von w zu u. e) Die Kantenmenge F := {{w, vor [w]} : w ∈ V \ {u}} bildet spannenden Baum (V, F ) von G. f) ∀w ∈ V : abst[w] = dist(u, w). Beweis a) Konstruktion. b) Aussage stimmt am Anfang, wenn Q = (u). Jeder neue Knoten w bekommt den abst[·]-Wert von den ersten Knoten +1, also stimmt die Aussage weiterhin. c) Siehe b). d) Zwischen w und vor[w] existiert Kante, weil w ∈ Γ(v), v = vor[w]. Weil die abst[·]-Werte entlang der Folge um 1 abnehmen, handelt es sich um einen Pfad der Länge abst[w]. e) |F | = n − 1. (V, E) ist zusammenhängend, da jeder Knoten w einen w-uPfad besitzt, der nur Kanten aus F benutzt, also sind alle(via u) miteinander verbunden. f) Wegen d) gilt abst[w] ≥ dist(u, w). Zu zeigen: abst[w] ≤ dist(u, w). Induktion über dist(u, w): Wenn dist(u, w) = 0, dann u = w. Da abst[u] = 0, OK. Gelte die Behauptung für alle Knoten mit kleinerem Abstand als w. Betrachte einen kürzesten u-w-Pfad P . Sei z Nachbar von w auf P . Nach Induktion: abst[z] ≤ dist(u, z). Außerdem dist(u, z) + 1 = dist(u, w). Also muss wegen b) und abst[w] ≥ dist(u, w) > dist(u, z) ≥ abst[z] der Knoten z vor w die Schlange Q verlassen haben. Entweder w ist zu dem Zeitpunkt, wo z Q verlässt, schon in Q, dann nach c) abst[w] ≤ abst[z] + 1 ≤ dist(u, z) + 1 = dist(u, w), oder w kommt jetzt in Q, dann nach Konstruktion: abst[w] := abst[z] + 1 ≤ dist(u, z) + 1 = dist(u, w). 11 1.33 Algorithmus DFS(G, u) Tiefensuche = depth-first-search = DFS 1. for all v ∈ V 2. bekannt[v] := FALSE 3. DFS-visit(u) DFS-visit(u) 1. bekannt[u] := TRUE 2. for all w ∈ Γ(u) 3. if bekannt[w] = FALSE 4. then DFS-visit[w] Beispiel 1 Laufende 4 5 5 2 2 2 1 1 1 1 1.34 2 3 4 5 7 6 8 DFS-visit-Routinen bei 3 5 5 5 7 2 2 2 2 6 6 1 1 1 1 1 1 1 DFS(G,1): 8 7 7 6 6 6 1 1 1 1 Proposition Sei G = (V, E) zusammenhängend, u ∈ V . Dann markiert DFS(G, u) alle Knoten in G als bekannt mit Laufzeit O(m). Beweis • Alle Knoten werden besucht: Wie bei BFS Beweis durch Widerspruch von Pfad. . . • Laufzeit: DFS-visit wird nur für unbekannte Knoten aufgerufen, die dann sofort bekannt werden. Also höchstens einmal pro Knoten. • Innerhalb P DFS-visit: for-Schleife für d(v)-viele Knoten ⇒ O (n + d(v)) = O (n + m) = O(m). 12 1.35 Proposition Man kann mit Hilfe von DFS in O(n + m) testen, ob G bipartit ist. Beweis Hausaufgabe. 1.36 Bemerkung BFS und DFS haben beide Laufzeit O(m). In der Praxis ist DFS oft schneller. 13 2 Kürzeste Pfade und minimal spannende Bäume 2.1 Definition Länge, Distanz Gegeben Graph G = (V, E), l : E → R, s ∈ V . Ein v1 -vk -Weg P = v1 , . . . , vk hat Länge k−1 X l(P ) := l ({vi , vi+1 }) . i=1 dist(x, y) = min {l(P ) : P ist x-y-Weg} , sonst ∞, @ x-y-Weg gesucht: dist(s, w) für alle w ∈ V . s 1 5 a 1 1 1 Breitensuche würde Knoten a den Abstand 5 statt 4 zuordnen. 2.2 Lemma G = (V, E), l : E → R. Sei P = (v1 , . . . , vk ) ein kürzester v1 -vk -Pfad. Dann ist ∀i, j mit 1 ≤ i ≤ j ≤ k (vi , . . . , vj ) ein kürzester vi -vj -Pfad. v1 vi vj vk Beweis Klar, durch Einsetzen eines angeblich kürzeren Pfades. 2.3 Algorithmus Dijkstra(G, l, s) l : E → R+ 1. for x ∈ V \ {s} abst [x] := ∞ 2. abst[s] := 0 3. Q := V 4. while Q 6= ∅ do 5. x := Knoten in Q mit minimalem abst[·]-Wert 6. Q := Q\ {x} 7. for y ∈ Γ(x) ∩ Q do 8. abst[y] := min {abst [y] , abst [x] + l({x, y})} 14 Beispiel s=1 1 3 5 1 2 x 1 3 4 2 5 2.4 Q 12345 2345 245 25 5 5 5 2 1 4 abst[1] 0 · [2] ∞ 5 [3] ∞ 1 · 4 · [4] ∞ [5] ∞ 3 · 6 4 · Proposition Dijkstra hat Laufzeit von O(n2 ) und berechnet abst[x] = dist(s, x) ∀x ∈ V . Beweis • Wenn x aus Q entfernt wird, dann steht abst[x] fest. • abst[x] ≥ dist(s, x), weil bei Vergabe/Update des abst[·]-Werts immer ein Weg der Länge abst[·] existiert. • Zu zeigen: abst[x] = dist(s, x). Beweis durch Induktion über die Anzahl der aus Q entfernten Knoten. • x = s: klar. • Sei x beliebig, x werde gerade aus Q entfernt. s • Sei s = v1 , . . . , vk = x kürzester s-x-Pfad. x vi vi+1 • Sei i der größte Index eines Knoten des Pfades, der schon aus Q entfernt Ind. ist. ⇒ abst[vi ] = dist(s, vi ) (1) • Weil vi+1 noch in Q und Nachbar von vi : Konstr. abst[vi+1 ] ≤ (1) abst[vi ] + l({vi , vi+1 }) = dist(s, vi ) + l({vi , vi+1 }) (2) • Jetzt wird x aus Q entfernt: Konstr. (2) abst[x] ≤ abst[vi+1 ] ≤ dist(s, vi ) + l({vi , vi+1 }) Lemma 2.2 = dist(s, vi+1 ) ≤ dist(s, x). 15 • while-Schleife: n mal durchlaufen – in jeder Schleife finde x(mit minimalen...) in O(n) – 7. P & 8. für x ∈ V höchstens d(v) viele Updates: d(v) = O(m) • insgesamt: O(m + n2 ) = O(n2 ) 2.5 Bemerkung a) Das Minimum-Finden war bei Breitensuche nicht nötig, daher hier teu” rer“. b) Bei besseren“ Datenstrukturen, Laufzeit O(m + log n). ” c) Es gibt Varianten, die in der Praxis schneller sind, siehe A*-Algorithmus, HA-Blatt 3. (Verändertes) Szenario ~ sei gerichteter Graph, d.h. E ~ ⊆ v × v, (x, y) 6= (y, x). G = (V, E) (x, y) x y (y, x) gerichteter Graph kein (gerichteter) Kreis ~ → R, auch negative Kantenlängen. • l:E • Ziel: Berechne dist(u, v) ∀u, v ∈ V . 16 2.6 Bemerkung ~ zusammenhängend. Sei G = (V, E) a) Wenn es einen Kreis mit negativer Gesamtlänge gibt, dann ist dist(u, v) = −∞ ∀u, v ∈ V . u v b) Wenn es keinen solchen Kreis gibt, dann ist ein kürzester Weg (wieder) ein Pfad. c) l(i, j) := l((i, j)) ~ und i 6= j l(i, j) := ∞, wenn (i, j) 6∈ E l(i, i) := 0 2.7 Lemma ~ l:E ~ → R, i, j ∈ [n] , k ∈ [0, n]. G = ([n] , E), k Pi,j := {P = (v0 , . . . , vr ) : v0 = i, vr = j, v1 , . . . , vr−1 ∈ [k] , P (ger.) Pfad} k dki,j := min l(P ) : P ∈ Pi,j Dann gilt ( dki,j = l(i, j), n # k=0 o k−1 k−1 min dk−1 , i,j , di,k + dk,j dynamische Programmierung“ ” k≥1 Beweis Klar nach Konstruktion/Definition: (1) k = 0 : d0i,j = l(i, j) (2) dki,j ≤ dk−1 i,j j i k−1 k (3) dki,j ≤ di,k + dk−1 k,j n o k−1 k−1 (2) & (3) ⇒ dki,j ≤ min dk−1 i,j , di,k + dk,j k Sei also P ∗ ∈ Pi,j mit l(P ∗ ) = dki,j . k−1 a) k 6∈ P ∗ \ {i, j} ⇒ P ∗ ∈ Pi,j ⇒ dki,j = l(P ∗ ) ≥ dk−1 i,j b) k ∈ P ∗ \ {i, j} . P ∗ : i j k ≥ dk−1 i,k ≥ dk−1 i,j k−1 dki,j = l(P ∗ ) ≥ dk−1 i,k + dk,j Fertig, denn aus (a ≤ min {b, c}) und (a ≥ b oder a ≥ c) folgt a = min {b, c}. 17 2.8 ~ l) Algorithmus Floyd-Warshall(G = ([n], E), G habe also keine negativen Kreise. 1. for i = 1 to n 2. for j = 1 to n ~ ∞, i 6= j, (i, j) 6∈ E d0i,j := 0, i=j l(i, j), sonst 3. 4. for k = 1 to n 5. for i = 1 to n 6. for j = 1 to n n o k−1 k−1 dki,j := min dk−1 , d + d i,j i,k k,j 7. 8. return D := (dni,j )1≤i,j≤n 2.9 Proposition Algorithmus 2.8 berechnet D[i, j] = dni,j = dist(i, j) ∀i, j ∈ [n] in Laufzeit O(n3 ). 2.10 Bemerkung Wie findet man kürzeste Pfade? Dijkstra: Hausaufgabe. Floyd-Warshall: k k k k k Sei Pi,j ∈ Pi,j mit l(Pi,j ) = dki,j . Sei πi,j der Vorgänger von j auf Pi,j . k Pi,j i 2.11 j NIL, sonst ~ i 6= j und (i, j) ∈ E ( i, k−1 k−1 k−1 k−1 πi,j , di,j ≤ di,k + dk,j = k−1 k−1 k−1 πk,j , dk−1 i,j > di,k + dk,j 0 ⇒ πi,j = k πi,j k dki,j πi,j Nachtrag Äquivalent sind: • G hat Kreis negativer Länge. • ∃i, k ∈ [n] mit dki,i < 0. Beweis Ohne. 18 Minimal spannende Bäume gegeben: ungerichteter, zusammenhängender Graph G(V, E), l : E → R+ . gesucht: minimal Pspannender Baum“(MST), d.h. Baum T = (V, F ) mit F ⊆ E, ” so dass l(T ) := l(e) möglichst klein. e∈F 2.12 Algorithmus Prim(G, l) 1. W := {s} mit beliebigem Knoten s ∈ V 2. F := ∅ 3. σ[s] := 0 4. for v ∈ Γ(s) do vor[v] := s, σ[v] := l({s, v}) 5. for v ∈ V \(Γ(s) ∪ {s}) vor[v] =NIL, σ[v] := ∞ 6. while W 6= V 7. y := Knoten in V \W mit minimalem σ[·]-Wert 8. x := vor[y] 9. W := W ∪ {y}, F := F ∪ {x, y} for z ∈ Γ(y) ∩ (V \W ) mit σ[z] > l(y, z) 10. 11. σ[z] := l(y, z) 12. vor[z] := y 2.13 Beispiel 2 3 5 1 7 y 3 5 4 2 6 W 1 1,3 1,3,5 1,3,5,4 1,3,5,4,2 1,3,5,4,2,6 2 F ∅ + {1, 3} + {3, 5} + {4, 5} + {2, 4} + {2, 6} 4 6 3 4 1 12 9 σ [1] 0 · 5 17 6 [2] 7 1 · [3] 2 · [4] 5 5 3 · [5] ∞ 4 · [6] ∞ 17 12 9 · (Idee: Gegeben Teilbaum, nehme kürzeste Kante, die einen Knoten im und einen außerhalb des Teilsbaums hat.) 2.14 Proposition Prim findet in O(n2 ) Schritten einen minimalen spannenden Baum(MST) T = (V, F ). 19 Beweis Laufzeit: n − 1 while-Durchläufe O(n) für MIN-Berechnung ⇒ O(n2 ) O(d(v)) = O(m) Update O(m + n2 ) = O(n2 ) insgesamt Behauptung: Nach jeder while-Schleife gilt: (i) (W, F ) ist Baum (ii) ∀y ∈ V \W : σ [y] = min {l ({x, y}) : x ∈ W, {x, y} ∈ E} σ [y] = l ({vor [y] , y}) (iii) ∃ MST T ∗ von G, so dass für T := (W, F ) T ⊆ T ∗ • Aus (i) und (iii) folgt die Korrektheit von Prim. • (i)-(iii) gelten nach Initialisierung. • Induktion: Angenommen (i)-(iii) gelten zu Beginn einer while-Schleife ⇒ Nach Konstruktion gelten (i) und (ii) auch nach while-Schleife. • Zu zeigen: (iii) Sei T = (W, F ) der alte Teilbaum, T ∗ = (V, F ∗ ) sei MST mit T ⊆ T ∗ . • Wenn {vor [y] , y} ∈ F ∗ , fertig. • Angenommen nicht. In T ∗ existiert Pfad P ∗ , der vor[y] mit y verbindet. • Sei {v, z} die Kante von P ∗ , die W verlässt. (ii) ⇒ l (vor [y] , y) = σ [y] Konstr. ≤ σ(z) ≤ l(v, z) (1) • Betrachte Te := (V, Fe) mit Fe := F ∗ \ {v, z} ∪ {vor[y], y}. • Te ist spannender Baum(zusammenhängend und n − 1 Kanten) der Länge (1) l(Te) = l(T ∗ ) − l(vor[y], y) ≤ l(T ∗ ), also folgt Te ist MST, der T 0 := (W ∪ {y} , F ∪ {vor[y], y}) enthält. 2.15 Bemerkung Prim lässt sich auch mit Laufzeit O(m + n log n) implementieren. 2.16 Algorithmus Kruskal(G, l) G = (V, E) zusammenhängend, l : E → R+ 1. Sortiere E so, dass l(e1 ) ≤ l(e2 ) ≤ . . . ≤ l(em ) 2. F := ∅ 3. for i = 1 to m do 4. if (V, F ∪ {ei }) kreisfrei then F := F ∪ {ei } 20 2.17 Proposition Kruskal findet in O((m + n) log n) Schritten einen MST. 2 1 7 3 5 2 4 6 3 4 1 12 9 5 17 6 Beweis Laufzeit: Sortieren in O(m log m) = O(m log n2 ) = O(m log n). Test auf kreisfrei“: Einfacher Test kostet O(n). ” → Insgesamt O(nm) zu teuer! Beispiel 1 → 2 2 → 2 → 3 → 2 1 4 4 → 6 52 2 3 5 6 62 ← 5 → 6 52 → 1 ← 6 → 6 ↑ ↑ ↑ Komp. Knoten Chefs Gr. Update Kosten: O(1) Anzahl korrigierter Knoten“ ” Jeder Knoten muss höchstens log n-mal korrigiert werden. ⇒ Insgesamt O(n log n) Update-Kosten. Korrektheit: Im allgemeinen Rahmen später. 6 35 2.18 ← 61 → 3 5→4 4 Definition Unabhängigkeitssystem, Matroid Sei S eine endliche Menge, I Familie von Teilmengen aus S. Wenn gilt: M1) ∅ ∈ I und M2) (A ∈ I, B ⊆ A) ⇒ B ∈ I dann heißt (S, I) Unabhängigkeitssystem. Mengen A ⊆ S, A ∈ I heißen unabhängig, Mengen A ⊆ S, A 6∈ I heißen abhängig. A ∈ I mit A ∪ {x} 6∈ I ∀x ∈ S\A heißen maximal unabhängig. Wenn außerdem gilt: M3) (A, B ∈ I, |A| > |B|) ⇒ ∃x ∈ A\B mit (B ∪ {x}) ∈ I dann heißt (S, I) Matroid. 21 2.19 Beispiel G = (V, E) zusammenhängend. I := {F ⊆ E : (V, F ) kreisfrei} Dann ist (E, I) ein Matroid (und heißt Kreismatroid von G). 2 3 1 4 E = {12, 14, 23, 34} I = {∅, {12} , {12, 23, 34} , . . .} Beweis M1) ∅ ∈ I : (V, ∅) ist kreisfrei. M2) Subgraphen von kreisfreien Graphen sind sind kreisfrei: FB ⊆ FA , (V, FA ) kreisfrei ⇒ (V, FB ) kreisfrei. M3) Gegeben zwei Wälder A, B, |A| > |B| existiert Kante e aus A\B, so dass B + e weiterhin Wald: |FA | > |FB | , FA , FB ∈ I. • FA kann innerhalb der Komponenten von FB nicht mehr Kanten als FB haben. • Weil |FA | > |FB | muss FA kannte e haben, die zwischen den Komponenten von FB verläuft. • e kann zu FB hinzugefügt werden ohne einen Kreis zu schließen. FB 2.20 Proposition Wenn (S, I) Matroid und A, B ∈ I maximal unabhängig, dann gilt |A| = |B|. Beweis M3) 2.21 Algorithmus MIN-GREEDY((S, I), l) Gegeben: Unabhängigkeitssystem (S, I) mit Kostenfunktion l : S → R+ . Für A ∈ I setze X l(A) := l(e). e∈A Gesucht: min {l(A) : A ∈ I, A maximal unabhängig} 22 Beispiel Kreismatroid: unabhängige Mengen = b Wälder maximal unabhängige Mengen = b spannende Bäume min {l(A) : A ∈ I, A maximal unabhängig} = b l(MST) 1. m := |S| 2. Sortiere so, dass l(e1 ) ≤ l(e2 ) ≤ . . . ≤ l(em ), ei ∈ S 3. A := ∅ 4. for i = 1 to m if (A ∪ {ei }) ∈ I then A := A ∪ {ei } 2.22 Satz Ein Unabhängigkeitssystem (S, I) ist ein Matroid genau dann, wenn Algorithmus 2.21 für jede Gewichtsfunktion l : S → R+ eine optimale Lösung liefert. 2.23 Korollar Algorithmus von Kruskal arbeitet korrekt. Beweis 2.19 + 2.22 Beweis von 2.22 ⇒“: ” • Sei (S, I) ein Matroid, sei l : S → R+ beliebig. • Angenommen Algorithmus 2.21 liefert maximal unabhängige Menge A ∈ I, aber es existiert maximal unabhängige Menge B ∈ I mitt l(B) < l(A). • Proposition 2.20 ⇒ |A| = |B|. Seien A = {a1 , . . . , ak } , B = {b1 , . . . , bk } mit l(a1 ) ≤ . . . ≤ l(ak ), l(b1 ) ≤ . . . ≤ l(bk ). • Wegen l(B) < l(A) existiert i ∈ [k] mit l(bi ) < l(ai ). M2) • Setze A0 := {a1 , . . . , ai−1 } , B 0 := {b1 , . . . , bi−1 , bi } ⇒ A0 , B 0 ∈ I. M3) • |B 0 | > |A0 | ⇒ ∃x ∈ B 0 \A0 mit (A0 ∪ {x}) ∈ I. ⇒ l(x) ≤ l(bi ) < l(ai ) • Aber dann hätte ja der Algorithmus zu dem Zeitpunkt, wo er ai in A geholt hat, eigentlich x nehmen müssen, denn x 6∈ A0 , l(x) < l(ai ). ⇐“: ” • Angenommen (S, I) kein Matroid. • Dann existieren A0 , B 0 ∈ I mit |A0 | > |B 0 | und B 0 ∪ {x} 6∈ I ∀x ∈ A0 \B 0 . 23 • while ∃y ∈ S\A0 mit A0 ∪ {y} ∈ I A0 := A0 ∪ {y} if B ∪ {y} ∈ I then B 0 := B 0 ∪ {y} • erhalte so Mengen A und B mit A, B ∈ I, |A| > |B|, A maximal unabhängig, und B ∪ {x} 6∈ I ∀x ∈ A\B. • Setze a := |A\B| = |A| − |A ∩ B| b := |B\A| = |B| − |A ∩ B| ⇒ a > b. 1. Fall: B maximal unabhängig. Setze b + 1 falls e ∈ A\B 0 falls e ∈ A ∩ B l(e) := a + 1 sonst. a+1 a+1 0 b+1 B A ⇒ l(A) = l(A\B) + l(A ∩ B) = a(b + 1) = ab + a > ab + b = b(a + 1) = l(B\A) + l(A ∩ B) = l(B) Aber nach Konstruktion gibt der Algorithmus Menge A aus, die wegen l(A) > l(B) und B maximal unabhängig“ nicht optimal ist. ” 2. Fall: B nicht maximal unabhängig. Setze falls e ∈ B 0 a falls e ∈ A\B l(e) := 2 a + 1 sonst. a2 + 1 0 B 0 a A 2 ⇒ l(A) = l(A\B) = a Aber der Algorithmus wählt erst Elemente aus B(weil billiger). Danach sind Elemente aus A\B(weil nicht Matroid) verboten. Weil B noch nicht maximal unabhängig ist, muss der Algorithmus ein Element z ∈ S\(A ∪ B) mit Kosten l(z) = a2 + 1 nehmen. Also nicht optimal(vgl. A). 2.24 Bemerkung In Matroiden: • Maximal unabhängige Mengen A ∈ I heißen auch Basen. • Die Kardinalität der Basen(eindeutig wegen 2.20) heißt auch Rand des Matroids. 24 3 3.1 Flüsse (in Netzwerken) Definition grundlegender Begriffe ~ ein gerichteter Graph(Diagraph), E ~ ⊆ V × V . Eine Kante (v, v) Sei D = (V, E) heißt Schleife. Setze: n o n o ~ , Γ− (v) := w ∈ V : ∃ (w, v) ∈ E ~ Γ+ (v) := w ∈ V : ∃ (v, w) ∈ E v Γ− Γ+ ~ s, t, c), wobei (V, E) ~ ein Diagraph ist, Ein Netzwerk ist ein Tupel N = (V, E, ≥0 ~ → R Kapazitätsfunktion. Knoten s bzw. t werden Quelle bzw. s, t ∈ V , c : E Senke genannt. ~ → R≥0 heißt s-t-Fluss (englisch flow) in N , wenn Eine Abbildung f : E P P (1) f ((x, y)) = f ((x, y)) ∀x ∈ V \ {s, t} (Flusserhaltung) y∈Γ− (x) y∈Γ+ (x) ~ (Zulässigkeit). (2) f ((x, y)) ≤ c((x, y)) ∀(x, y) ∈ E Der Wert von f ist definiert als X val (f ) := f ((s, y)) − X f ((y, y)). y∈Γ− (s) y∈Γ+ (s) f hat maximalen Wert in N , falls val (f ) ≥ val (f 0 ) für alle Flüsse f in N . Beispiel Kap C 1 1 s 3 X5 5 2 20 x X 0 Fluss f 1 30 4 8 65 610 65 8 y 7 10 t val(f ) = 6 − 2 = 4 val(f ) = 6 (ist maximal) cap(X) = 6 cap(X 0 ) = 10 Bemerkung Wenn es Kanten (x, y) und (y, x) mit f ((x, y)) ≥ f ((y, x)) > 0 gibt, dann setze f 0 ((x, y)) := f ((x, y)) − f ((y, x)) f 0 ((y, x)) := 0 f 0 ((u, v)) := f ((u, v)) für alle anderen Kanten. Dann ist f 0 Fluss mit val (f 0 ) = val (f ). Also ab jetzt ohne Einschränkung 25 f ((x, y)) > 0 ⇒ f ((y, x)) = 0. 3.2 Proposition Jedes Netzwerk besitzt einen Fluss maximalen Werts. Beweis Menge aller Flüsse ist als Punktmenge im R|E | beschränkt und abgeschlossen, Fuktion val (·) stetig ⇒ nimmt Maximum an. ~ 3.3 Definition Schnitt, Kapazität X ⊂ V mit X ∩ {s, t} = {s} heißt s-t-Schnitt (englisch cut). Kapazität von X ist definiert durch X cap (X) := c((u, v)). u∈X,v∈Γ+ (u)\X 3.4 Lemma Wenn f Fluss und X s-t-Schnitt in N : a) val (f ) ≤ cap (X) P b) val (f ) = P f ((x, y)) − f ((y, x)) x∈X,y∈Γ− (x)\X x∈X,y∈Γ+ (x)\X Beweis Def. P • val (f ) = P f ((s, y)) − P • ∀x ∈ X\ {s} : f ((y, s)) y∈Γ− (x) y∈Γ+ (s) P f ((x, y)) − f ((y, x)) = 0 y∈Γ− (x) y∈Γ+ (x) ⇒ val (f ) = X X f ((x, y)) − X = f ((y, x)) y∈Γ− (x) y∈Γ+ (x) x∈X X f ((x, y)) − X f ((y, x)) x∈X,y∈Γ− (x) x∈X,y∈Γ+ (x) • Wenn für (x, y) ∈ X × X : y ∈ Γ+ (x) ⇔ x ∈ Γ− (y), d.h. für diese Paare tritt f ((x, y)) einmal in der ersten und f ((y, x)) einmal in der zweiten Summe auf. Reicht daher, über x ∈ X, y 6∈ X zu summieren. ⇒ b) • Also: val (f ) = X x∈X,y∈Γ− (x)\X x∈X,y∈Γ+ (x)\X ≤ X X f ((x, y)) − f ((x, y)) x∈X,y∈Γ+ (x) ≤ X Def. c((x, y)) = cap (x) x∈X,y∈Γ+ (x)\X 26 f ((y, x)) 3.5 Definition Restnetzwerk ~ f , s, t,f ) von N bezüglich f ist definiert durch Restnetzwerk Nf = (V, E c((x, y)) − f ((x, y)) falls f ((x, y)) > 0 c((x, y)) + f ((y, x)) falls f ((y, x)) > 0 cf ((x, y)) := c((x, y)) sonst, ~ Setze: wobei c : V × V → R≥0 erweitert mit c((x, y)) = 0 ∀(x, y) 6∈ E. ~ f := {(x, y) : cf ((x, y)) > 0} E Beispiel N s 45 51 5 53 5 11 t 22 Fluss f Nf s 1 4 4 2 8 6 3.6 1 t 2 Lemma Ist f Fluss in N und W gerichteter s-t-Weg im Restnetzwerk Nf , dann kann f entlang W zu einem Fluss f 0 mit val (f 0 ) > val (f ) erhöht werden“. ” Beweis Ohne Einschränkung sei W ein Pfad. Setze δ := min cf (e) e∈W und definiere f 0 durch 1. f 0 ((x, y)) := 0 f 0 ((y, x)) := f ((y, x)) − δ 2. f 0 ((x, y)) := f ((x, y)) + δ − f ((y, x)) f 0 ((y, x)) := 0 falls (x, y) ∈ W, δ < f ((y, x)) falls (x, y) ∈ W, δ ≥ f ((y, x)) 3. f 0 ((x, y)) := f ((x, y)) falls (x, y) 6∈ W und (y, x) 6∈ W. 27 Beispiel δ=4 45 5 N s Nf s 51 53 5 t 11 22 1 4 4 4 2 55 5 5 3 5 1 1 Zulässigkeit: t 2 45 ⇒ s val(f ) = 3 4 1 48 6 Fluss f t Fluss f 0 val(f 0 ) = 7 22 Zu zeigen: 0 ≤ f 0 ((x, y)) ≤ c((x, y)) 1. Fall: δ < f ((y, x)) ⇒ 0 ≤ f 0 ((y, x)) := f ((y, x)) − δ ≤ c((y, x)) − δ ≤ c((x, y)) f 0 ((x, y)) := 0 2. Fall: δ ≥ f ((y, x)) a) f ((y, x)) = 0, f ((x, y)) > 0 Def. ⇒ δ ≤ cf ((x, y)) = c((x, y)) − f ((x, y)) ⇒ f 0 ((x, y)) = f ((x, y)) + δ − 0 ≤ c((x, y)) Def Falls f ((y, x)) = 0, f ((x, y)) = 0 folgt cf = c, f 0 = f . b) f ((y, x)) > 0, f ((x, y)) = 0 ⇒ f 0 ((x, y)) Def. 0 + δ − f ((y, x)) cf ((x, y)) − f ((y, x)) Def c((x, y)) + f ((y, x)) − f ((y, x)) = c((x, y)) = ≤ = f ((x, y)) ändert sich nur für (x, y) ∈ W : Dort gilt ( f ((y,x))>δ=0 1. = 0 − f ((y, x)) + δ = f ((x, y)) − f ((y, x)) + δ 0 0 f ((x, y))−f ((y, x)) 2. = f ((x, y)) + δ − f ((y, x)) − 0 = f ((x, y)) − f ((y, x)) + δ, Flusserhaltung: d.h. entlang jeder Pfadkante von W fliesst genau δ mehr“ von s nach t als ” vorher. +δ +δ +δ +δ +δ w ⇒ Flusserhaltung und val (f 0 ) = val (f ) + δ 28 3.7 Satz Max-Flow-Min-Cut-Theorem max f : Fluss in N val (f ) = min X: s-t-Schnitt cap (X) Beweis • Sei f Fluss maximalen Werts in N . • Nach Lemma 3.4: val (f ) ≤ cap (X) für jeden Schnitt X. • Bleibt zu zeigen: ∃ Schnitt X mit val (f ) ≥ cap (X) (2) ~ f , cf , s, t). • Betrachte Restnetzwerk Nf = (V, E • Sei X ⊆ V die Menge aller Knoten, die in Nf von s über einen gerichteten Pfad erreichbar sind. Nf s t x • Nach Definition s ∈ X. • Läge t ∈ X, dann gäbe es einen s-t-Pfad in Nf und wegen Lemma 3.6 einen Fluss größeren Werts. ⇒ t 6∈ X ⇒ X ist s-t-Schnitt. ~ mit v ∈ X, w 6∈ X mit c((v, w)) > 0 gibt, • Wenn es keine Kante (v, w) ∈ E dann val (f ) ≥ 0 = cap (X) ⇒ (2). Sei also v ∈ X, w ∈ Γ+ (v)\X eine solche Kante: ~f c((v, w)) > 0, cf ((v, w)) = 0, (v, w) 6∈ E Behauptung f ((v, w)) = c((v, w)), f ((w, v)) = 0, denn Definition • wäre f ((w, v)) > 0 ⇒ cf ((v, w)) Also: f ((w, v)) = 0. 3.5 b) = c((v, w)) + f ((w, v)) > 0 Definition • wäre f ((v, w)) = 0 ⇒ cf ((v, w)) Also: f ((v, w)) > 0. 3.5 c) = c((v, w)) > 0 Definition ⇒ 0 = cf ((v, w)) Behauptung. Also: 3.5 a) = c((v, w)) − f ((v, w)), also f ((v, w)) = c((v, w)) ⇒ Lemma val (f ) 3.4 b) = X x∈X,y∈Γ− (x)\X x∈X,y∈Γ+ (x)\X Beh. = X X f ((x, y)) − Def. c((x, y)) − 0 = c(X) x∈X,y∈Γ+ (x)\X 29 f ((y, x)) 3.8 Korollar Sei f Fluss in N . Wenn es in Nf keine s-t-Pfade gibt, dann hat f maximalen Wert. Beweis Bilde Nf , setze X ⊆ V wie im Beweis von Satz 3.7. ⇒ X ist s-t-Schnitt mit val (f ) = cap (X), also hat f maximalen Wert. 3.9 ~ s, t, c)) Algorithmus Ford-Fulkerson (N = (V, E, 1. f := 0 2. while ∃ s-t-Pfad W in Nf 3. 3.10 augmentiere f entlang von W (wie in Lemma 3.6) Satz Sei N ein Netzwerk mit Kapazitäten ! aus N. Dann terminiert der Algorithmus 3.9 P nach höchstens O c((u, v)) Schritten mit einem Fluss maximalen Werts. u,v Beweis In jedem Schritt erhöht sich der Wert des Flusses um mindestens 1. ⇒ Terminierung + Laufzeit. Korollar 3.8 liefert die Korrektheit. 3.11 Bemerkung Zwei Probleme bleiben: • Zu langsam!! • Wenn Kapazitäten nicht in N liegen, terminiert der Algorithmus eventuell nicht oder konvergiert gegen suboptimalen Fluss. Abhilfe: Augmentiere in jedem Schritt entlang mehrerer kürzester s-t-Pfade. Abstecher: Zusammenhang in Graphen 3.12 Definition trennend G = (V, E) ungerichteter Graph, s, t ∈ V . Eine Menge S ⊆ V heißt trennend, wenn G [V \S] nicht zusammenhängend ist. Eine Menge T ⊆ E heißt trennend, wenn (V, E\T ) nicht zusammenhängend ist. Eine Menge S ⊆ V heißt s-t-trennend, wenn s und t in G [V \S] nicht durch einen Weg verbunden sind. Eine Menge T ⊆ E heißt s-t-trennend, wenn s und t in (V, E\T ) nicht durch einen Weg verbunden sind. 30 Beispiel t z u s y x G∗ {y} ist trennend, nicht s-t-trennend. {{x, y} , {z, y}} ist trennend, nicht s-t-trennend. {u, x} ist s-t-trennend. {{u, x}} ist nicht trennend. κ(G∗ ) = 1 λ(G∗ ) = 2 3.13 Definition Kanten(zusammenhangs)zahl a) G = (V, E) heißt K-fach zusammenhängend, wenn |V | ≥ K + 1 und G kein trennende Knotenmenge S mit |S| = K − 1 enthält. κ(G) := max {K ∈ N : G ist K-fach zusammenhängend} = Knotenzusammenhangszahl“ ” b) G = (V, E) heißt K-fach kantenzusammenhängend, wenn G keine trennende Untermenge T mit |T | = K − 1 enthält. λ(G) := max {K ∈ N : G ist K-fach kantenzusammenhängend} = Kantenzusammenhangszahl“ ” c) s-t-Pfade P1 , . . . , Pk heißen knoten- bzw. kantendisjunkt, wenn Pi ∩ Pj = {s, t} bzw. E(Pi ) ∩ E(Pj ) = ∅ ∀i, j ∈ [K]. s t knotendisjunkt s t kantendisjunkt 31 3.14 Definition saturiert, geschichtetes Restnw., Durchsatz ~ s, t, c) Netzwerk und f Fluss in N . f heißt saturiert, wenn es in Sei N = (V, E, Nf keinen f -augmentierenden Pfad gibt, der nur Kanten aus N benutzt. Bemerkung • f hat maximalen Wert ⇒ f saturiert • f saturiert 6⇒ f hat maximalen Wert ~ f , s, t, cf ) ist definiert durch Das geschichtete Restnetzwerk GNf (V 0 , GE | {z } wie in Nf K v0 vK vi := := := := distNf (s, t) {s} {t} x ∈ V : distNf (s, x) = i n o ~f , 0 ≤ i ≤ K − 1 := (x, y) : x ∈ Vi , y ∈ Vi+1 , (x, y) ∈ E ~f GE v0 := v0 ∪ v1 ∪ . . . ∪ vK . Der Durchsatz eines Knotens v 6∈ {s, t} in GNf ist definiert als X X DS (v) := min cf (x, v), cf (v, x) ~f ~f (x,v)∈GE (v,x)∈GE X DS (s) := min ∞, cf (v, x) ~f (s,x)∈GE X DS (t) := min cf (x, v), ∞ . ~f (x,t)∈GE N 1 1 1 2 s v0 Nf s 2 1 v3 1 1 1 v1 v2 v3 1 1 1 1 v1 1 1 Durchsatz Fluss f v4 1 1 1 v0 t 1 v2 1 v5 t fallen raus 32 3.15 Algorithmus MaxFlow(GNf ) 1. g := 0 2. while ∃ s-t-Pfad in GNf do 3. v := Knoten mit minimalem DS (·) 4. pushflow(v, g) 5. pullflow(v, g) 6. aktualisiere Kapazitäten in GNf 7. entferne rekursiv Knoten mit DS (·) = 0 und Kanten mit Kapazität 0 aus GNf . (Aber GNf wird nicht neu berechnet) 3.16 Algorithmus PushFlow(v, g) 1. Q := {v} 2. push [x] := 0 ∀x ∈ V 0 \ {v}, push [v] := DS (v) 3. while Q 6= {t} do 4. v := Dequeue(Q) 5. repeat ~f wähle Kante (v, x) ∈ GE 6. if cf (v, x) ≥ push [v] 7. 8. then push [x] := push [x] + push [v] 9. g(v, x) := g(v, x) + push [v] 10. push [v] := 0 11. else push [x] := push [x] + cf (v, x) 12. push [v] := push [v] − cf (v, x) 13. g(v, x) + cf (v, x) if x 6∈ Q 14. 15. 16. Enqueue(Q, x) until push [v] = 0 17. return g 33 Beispiel zu PushFlow: 2 s 2 2 0 1 1 1 2 1 v 1 2 1 1 0 2 1 2 1 2 10 1 2 Pushwerte geflossen 12 t analog: PullFlow. Beispiel zu MaxFlow: g 1 0 s 0 DS(v) = 1 1 t 1 0 t (nach Zeile 7.) s 3.17 f =0 Lemma MaxFlow berechnet einen saturierten Fluss g in GNf . Beweis Wenn MaxFlow terminiert, dann gibt es keinen s-t-Pfad mehr in GNf . • Gibt es eventuell noch einen g-augmentierenden Pfad in GNf , der gelöschte Kanten benutzt? • Nein: Wenn Kanten in Zeile 7. gelöscht wurden, dann 1) weil Kapazität 0 (und daher nicht mehr g augmentieren können), 2) weil sie zu einem Knoten mit DS (·) = 0 inzidet sind. Auch dann kann g nicht augmentiert werden. ⇒ Also ist g saturiert. 34 3.18 Algorithmus Dinic(N ) 1. f := 0 2. while ∃ s-t-Pfad in GNf 3. f := f + MaxFlow(GNf ) 4. berechne GNf neu Beispiel (fortgesetzt) 1 1 1 s t 1 1 Insgesamt: 1 1 1 1 s 1 3.19 1 1 t 0 1 Lemma Nach jeder while-Schleife in Algorithmus 3.18 vergrößert sich der s-t-Abstand in GNf . Beweis • Nach Konstruktion: GNf enthält alle s-t-Pfade in Nf der Länge K = distNf (s, t), d.h. alle kürzesten s-t-Pfade. • MaxFlow berechnet einen saturierten Fluss g in Gnf Def. ⇒ Es gibt keinen g-augmentierenden Pfad in GNf , der nur Kanten aus GNf benutzt. ⇒ augmentierende Pfade in GNf +g haben größere Länge. 35 3.20 Satz Algorithmus 3.18 findet einen Fluss maximalen Werts in O(n3 ). Beweis Maximalität: Der Algortihmus terminiert erst, wenn ein Fluss f gefunden ist, so dass GNf und damit Nf keinen s-t-Pfad mehr besitzt. (Korollar 3.8 ⇒ f hat maximalen Wert.) Laufzeit: • Wegen Lemma 3.19 kann es nur O(n) Aufrufe von MaxFlow geben. • Innerhalb einer MaxFlow-Phase: – Maximal n Aufrufe von Pull/PushFlow, da jedes Mal mindestens ein Knoten vom Durchsatz 0 gelöscht wird. – Jede Kante wird höchstens einmal entfernt – Pro Push/Pull und Knoten bleibt höchstens eine Kante partiell be” nutzt“ ⇒ Kosten für einmal MaxFlow: w X O(# gelöschter Kanten) + O(# berührter Kanten) i=1 ≤ O(m) + n X n·1 i=1 2 = O(m + n ) = O(n2 ) • Insgesamt: O(n3 ) 3.21 Korollar Bei 0-1-Kapazitäten auf den Kanten hat der Algorithmus Dinic eine Laufzeit von O(n · m). Beweis O(# berührter Kanten) entfällt, weil jede berührte Kante auch zwangsläufig gelöscht wird. ⇒ O(m) für einmal MaxFlow. ⇒ insgesamt O(n · m). Bemerkung/Hausaufgabe: 2 In diesem Fall gilt sogar O(n 3 m). 36 3.22 MaxFlow als LP Leicht veränderte Notation: Bisher: Jetzt: ~ ~ N = (V, E, s, t, c) n = |V |, m = |E| ~ c : E → R≥0 Kapazität: c ∈ Rm ≥0 , c = (ce1 , . . . , cem ) m ~ f : E → R≥0 Fluss: x ∈ R≥0 , x = (xe1 , . . . , xem ) ~ 0 ≤ f (e) ≤ c(e) 1) 0 ≤ xe n≤ ce ∀e ∈ E o ~ δ − (v) := (x, v) ∈ E n o ~ δ + (v) := (v, x) ∈ E P P 2) xe = xe ∀v ∈ V \ {s, t} e∈δ − (v) e∈δ + (v) Kanten δ− δ+ v Γ− (v) Knoten Γ+ (v) Abkürzungen: n o ~ : x ∈ X, y ∈ V \X (x, y) ∈ E n o ~ : x ∈ X, y ∈ V \X δ − (X) := (y, x) ∈ E P ~ : F ⊆E x(F ) := xe e∈F P c(F ) := ce c∈F P X s-t-Schnitt : cap (x) = c(u, v) = c(δ + (X)) X⊆V : δ + (X) := val(f ) = u∈X,v∈Γ+ (u)\X + − x(δ (s)) − x(δ (s)) 37 MaxFlow max x(δ + (s)) − x(δ − (s)) x∈Rm u.d.N. ∀v ∈ V \ {s, t} : x(d− (v)) − x(δ + (v)) = 0 ~ : ∀e ∈ E 0 ≤ xe ≤ ce . Allgemeines LP: max uT x x∈Rn u.d.N. Cx = 0 Ax ≤ c x≥0 +1 ej ∈ δ + (s) T −1 ej ∈ δ − (s) , mit A = (Idm×m ), u = (u1 , . . . , um ), uj = 0 sonst − +1 ej ∈ δ (vi ) −1 ej ∈ δ + (vi ) (Knoten-Kanten-Indizenzmatrix), also: C = cvi ej = 0 sonst m ej z}|{ . . . vk ... + 1... = . C = k − 2 .. für Kante ej (vl , vk ) .. . .. . ... vl ... − 1... (3) Wie sieht das Duale Problem aus? (P) min y T b max cT x y (D) y T A = cT y≥0 x Ax ≤ b Allgemein Optimierung 1, 5.4: min uT a + v T b u A + v T C ≥ cT (D) T u B + v T D = dT u≥0 max cT x + dT y Ax + By ≤ a (P) Cx + Dy = b x≥0 T Setze d = B = D = 0, A := Id, C := C, b := 0, a := c, u := y, v := z. Erhalte Darstellung wie in (3): ⇒ 3.23 max uT x Idm x ≤ c (P*) Cx = 0 x≥0 Proposition Wie sieht das zu (P*) duale Problem aus? Allgemein: min y T c (D*) y T A + z T C ≥ aT u≥0 38 Also hier: min y T c = minm y∈R ⇔ ce ye ~ e∈E y T A + z T C ≥ uT y≥0 u.d.N. y T A + z T C ≥ uT X (y1 , . . . , ym ) (Idm×m ) + −1 +1 y ej + z v k − z v l ≥ 0 ⇔ zt := 0 zs := 1 ⇔ T zv1 , . . . , zvn−2 (C) ≥ (u) ej = (vl , vk ), vk = s ej = (vl , vk ), vl = s ej = (vl , vk ), sonst ~ yej + zvk − zvl ≥ 0 ∀ej = (vl , vk ) ∈ E P min ce ye ~ e∈E ~ : y e + zb − za ∀e = (a, b) ∈ E (D*) zt u.d.N. zs ~ : ye ∀e ∈ E ⇔ ≥0 =0 =1 ≥0 Es gilt: (D*) ≤ min cap (X) = min δ + (X) X⊆V X⊆V X zs = 1 s zt = 0 t a za := 1 y (a, b) := 1 y (e) := 0 ∀ anderen Kanten e b zb := 0 ⇒ Die so gesetzten y, z erfüllen die Nebenbedingungen in (D*). X ce ye = cap (X) ~ e∈E 3.24 Proposition Für jeden s-t-Schnitt X ⊆ V von N gilt: Es gibt eine zulässige Lösung von (D*) mit Zielfunktionswert von (D*) = cap(X). Beweis Setze zw = 1 w∈X 0 w ∈ V \X (4) y(v,w) = 1 v ∈ X, w ∈ V \X 0 sonst z ist charakteristischer Vektor von X, y charakteristischer Vektor von δ + (X). 39 3.25 Satz Angenommen, es gibt optimale Lösung (e y , ze) von (D*). Dann existiert auch eine optimale Lösung (y, z) von (D*) und ein s-t-Schnitt X, so dass z der charakteristische Vektor von X und y der charakteristische Vektor von δ + (X), also (4) erfüllt. Beweis I (via MaxFlowMinCut-Theorem 3.7) • Sei X Schnitt minimaler Kapazität. • Setze (y, z) wie in (4). ⇒ Zulässige Lösung von (D*) mit Zielfunktionswert cT y = c(δ + (X)). 3.7 ⇒ cT y = MinCut = MaxFlow = (P*) = (D*). Vorbereitung (für Beweis II) · Jeder Graph besitzt eine tolle Partition V = U ∪ W , also mit > zwischen U und W . m 2 Kanten tolle Kanten Beweis der Aussage: Wirf für jeden Knoten eine Münze. U W = Zahl = Kopf Pr [Kante {x, y} ist toll] = Pr [x Kopf ∧ y Zahl] + Pr [x Zahl ∧ y Kopf] = m 2 tollen Kanten existieren. Ex [Anzahl toller Kanten] = ⇒ Also muss eine Partition mit mindestens 40 m 2 1 1 1 1 1 · + · = 2 2 2 2 2 Beweis II Sei (e y , ze) optimale Lösung von (D*). • O.B.d.A. zev1 ≥ . . . ≥ zevn , s = vp , t = vq , p < q. • Für i ∈ [p, q − 1] setze Xi := {v1 , . . . , vi } • ∀i ∈ [p, q − 1] : s ∈ Xi , t ∈ V \Xi • Wähle zufällig X ∈ {Xp , . . . , Xq−1 } mit Pr [X = Xi ] := zevi − zevi+1 ∈ [0, 1]. • Check: q−1 P i=p zevi − zevi+1 = zevp − zevq = 1 − 0 = 1. Xi vk vj v1 vp vi vi+1 vq q−1 X = zevi − zevi+1 c(δ + (Xi )) Ex c δ + (X) i=p = = X c(vj , vk ) k−1 X zevi − zevi+1 ~ (vj ,vk )∈E,j<k i=j X c(vj , vk ) zevj − zevk | {z } ~ (vj ,vk )∈E,j<k (D*) ≤ y(vj ,vk ) ≤ X c(vj , vk )e y (vj , vk ) = Zielfunktion (D*) (e y , ze) ~ (vj ,vk )∈E,j<k • Es gibt also ein i ∈ [p, q − 1], also einen Schnitt X = Xi und durch (4) zugehörige y, z, die zulässig für (D*) sind mit c(δ + (X)) ≤ Zielfunktion(e y , ze). Da (e y , ze) optimale Lösung von (D*), so auch (y,z). 41 4 Matchings 4.1 Definition Matching Sei G = (V, E) ein Graph. Eine Menge M ⊆ E von Kanten heißt Matching, falls keine zwei Kanten aus M inzident sind, also keine gemeinsamen Knoten haben. M heißt • maximales Matching: ∀e ∈ E\M : M ∪ {e} kein Matching • größtes Matching: |M | ≥ |M 0 | ∀ Matchings M 0 von G • perfektes Matching: 2 |M | = |V | Ein Knoten v ∈ V heißt von M überdeckt, wenn ∃e ∈ M : v ∈ e. ν(G) := max {|M | : M ist Matching von G} Eine Menge S ⊆ V heißt Knotenüberdeckung von G, wenn jede Kante mindestens einen Endknoten in S hat. τ (G) := min {|S| : S ist Knotenüberdeckung in G} Beispiel M ist maximales Matching. M τ =4 M ∗ ist größtes Matching. ν=4 M ∗ ist perfekt. S M 4.2 ∗ S ist Knotenüberdeckung. Satz von König Sei G = (A ∪ B, E) bipartit. Dann gilt: a) ν(G) = τ (G) 2 b) Ein größtes Matching lässt sich in O(n 3 m) berechnen. 4.3 Satz von Hall Sei G = (A ∪ B, E) bipartit. G besitzt genau dann ein Matching, dass alle Knoten in A überdeckt, wenn ∀S ⊆ A : |Γ(S)| ≥ |S| . A B A 42 B 4.4 Proposition In jedem Graphen G gilt ν(G) ≤ τ (G). Beweis 1 ν 2 Jede Knotenüberdeckung braucht von jeder Matchingkante mindestens einen frischen“ Knoten. ” Beweis von 4.2 ~ s, t, c . b) Konstruiere ein Netzwerk N = V ∪ {s, t} , E, ∞ 1 1 s 1 1 ∞ ∞ ∞ ∞ 1 Kapazitäten t 1 A B Behauptung max f : Fluss in N ! val(f ) = max M : Matching in G Def. |M | = ν(G) ≤“: Sei f Fluss maximalen Werts in N . ” • Kanten zwischen A und B haben Flusswert ≤ 1 pro Kante. • Es gilt: Wenn Kapazität ganzzahlig, dann gibt es ganzzahligen Fluss maximalen Werts, denn wähle besten ganzzahligen ” Fluss“, angenommen es gäbe augmentierenden Pfad, dann hätte der ganzzahlige Kapazitäten, und damit gäbe es einen besseren ganzzahligen Fluss. • Also existiert kein augmentierender Pfad, also maximaler Wert erreicht. ⇒ Ohne Einschränkung sei f ganzzahlig, also hier mit Flusswerten 0 oder 1 pro Kante. n o ~ ∩ (A × B) : f (e) = 1 . • Setze M := e ∈ E ⇒ Wegen Flusserhaltung: M Matching, |M | = val(f ). ≥“: Sei Matching M gegeben. ” • Konstruiere Fluss: alle Matchingkanten erhalten Flusswert 1, plus die sie mit s bzw. t verbindenden Kanten auch. ⇒ Fluss mit Wert |M |. ⇒ Behauptung. • Finde größtes Matching via Fluss maximalen Werts in N mit 2 Hilfe vom Algorithmus von Dinic in O(n 3 m). 43 a) Zu zeigen: ν(G) ≥ τ (G). Finde Knotenüberdeckung! Sei X ⊆ A ∪ B ∪ {s} s-t-Schnitt minimaler Kapazität in N . MaxFlow cap(X) MinCut = b) max val(f ) = ν(G) X A\X + B ∩ X S t A B 6 ∃ Kanten von X ∩ A nach B\X, denn sonst wäre cap(X) = ∞. ⇒ C := (A\X) ∪ (B ∩ X) ist Knotenüberdeckung von G. Es gilt: τ (G) ≤ |C| = |A\X| + |B ∩ X| = |δ + (X)| = cap(X) = ν(G) Beweis von 4.3 ⇒“: Betrachte die durch das Matching gematchten“ Nachbarn der Knoten in ” ” S: |Γ(S)| ≥ |S|. ⇐“: Induktion über |A|. ” |A| = 1: klar. Sei |A| ≥ 2. Fall a) |Γ(S)| ≥ |S| + 1 ∀S ⊆ A, |S| < |A|. • Wähle beliebige Kante {x, y} ∈ E und betrachte G0 := G−x−y. • G0 erfüllt immer noch die Hallbedingung |Γ(S)| ≥ |S|. • Also existiert nach Induktion Matching M 0 , das alle Knoten in A − x überdeckt. M := M 0 ∪ {x, y}. Fall b) ∃S ⊆ A, |S| < |A| mit |S| = |Γ(S)|. • Nach Induktion existiert Machting M 0 in G0 := G [S ∪ Γ(S)], das alle Knoten in S überdeckt werden. • Auch G00 := G − S − Γ(S) erfüllt |Γ(S)| ≥ |S|: Gäbe es T ⊆ A − S mit |T | > |ΓG00 |, dann wäre |T ∪ S| = |T | + |S| > |ΓG00 (T )| + |S| = |ΓG00 (T )| + |ΓG (S)| = |ΓG (T ∪ S)| zur Hallbedingung in G. • Also existiert Matching M 00 in G00 , dass alle Knoten in A − S überdeckt. • Zusammengesetzt: M := M 0 ∪ M 00 überdeckt alle knoten in A. 44 4.5 Korollar Sei G = (A ∪ B, E) bipartit. G besitzt perfektes Matching ⇔ |A| = |B| ∀S ⊆ A : |Γ(S)| ≥ |S| Beweis ⇒“: |A| = |B| klar. |Γ(S)| ≥ |S| folgt aus 4.3, denn alle Knoten in A sind ja ” überdeckt. ⇐“: ” • Nach 4.3 existiert Matching, dass alle Knoten in A überdeckt. • Weil |A| = |B| dann auch alle Knoten in B überdeckt. 4.6 Satz Sei q (G) die Anzahl der Komponenten in G, die eine ungerade Anzahl von Knoten besitzt. Sei def (G) := max {q (G − S) − |S|} S⊆V der Defekt von G. Dann gilt: 2ν(G) = |G| − def (G) ⇔ def (G) = |G| − 2ν(G), wobei |G| − 2ν(G) Anzahl Knoten, die bei bestmöglichem Matching übrig bleiben. Beispiel s rot - Matchingkanten blau - unmögliche Matchingkante ⇒ |G| − 2ν (G) ≥ def (G) 45 4.7 Definition M -alternierend, M -augmentierend Sei M Matching von G = (V, E). Ein Pfad in G heißt M -alternierend, falls er abwechselnd Kanten aus M und E\M benutzt. Ein Pfad der Länge ≥ 1 heißt M augmentierend, falls er M -alternierend ist und Anfangs- und Endknoten nicht von M überdeckt sind. Beispiel G M M -alternierender Pfad, nicht M -augmentierend M -augmentierender Pfad M -augmentierender Pfad Augmentiere M entlang des Pfades“ ⇔ Vertausche nicht-Matching- und Matching” Kanten ⇒ 4.8 Proposition Ein Matching M ist genau dann ein größtes Matching, wenn kein M -augmentierender Pfad existiert. Beweis ⇒“: Angenommen es gäbe augmentierenden Pfad, dann auch größtes Mat” ching. ⇐“: Angenommen M nicht größtes Matching. Dann exisitert Matching M ∗ mit ” |M ∗ | > |M |. • Betrachte die Differenz M ∗ ∆M . M∗ M M ∗ ∆M • Die Kanten in M ∗ ∆M erzeugen einen Subgraph von Max grad ≤ 2. • Dieser Subgraph besteht also aus Pfaden und Kreisen, die abwechselnd Kanten aus M und M ∗ benutzen, insbesondere sind alle Kreise gerade. • Wegen |M ∗ | > |M | muss es einen M -augmentierenden Pfad geben. 46 4.9 Korollar Gibt es Matchings M1 und M2 mit |M1 | > |M2 |, dann existieren |M1 | − |M2 | knotendisjunkte M2 -augmentierende Pfade in G, die nur Knoten aus M1 ∆M2 enthalten. 4.10 Definition Sei M Matching in G. • Ein M -alternierender Baum ist ein Teilbaum von G mit ausgezeichneter Wurzel, so dass alle Pfade von der Wurzel zu den Blättern gerade Länge haben und M -alternierend sind, und die Wurzel nicht von M überdeckt ist. • M -alternierender Wald: Knotendisjunkte Vereinigung von M -alternierenden Bäumen. • Sei F M -alternierender Wald. Dann F .even := Knoten von F mit geradem Abstand zu ihrer Wurzel. F .odd := Knoten von F mit ungeradem Abstand zu ihrer Wurzel. e o e M o e o e e • Ungarischer Wald: M -alternierender Wald, dessen Bäume nicht erweitert werden können und bei den Blättern unterschiedliche Bäume nicht durch (nicht-Matching-) Kanten verbunden sind. Beispiel e e o e o e 47 4.11 Algorithmus Augmentierendes Bipartites Matching (G, M ) 1. F .odd := ∅, F .even := alle von M nicht-überdeckten Knoten 2. F := (F .even ∪ F .odd, ∅) 3. while ∃ {x, y} ∈ E mit x ∈ F .even, y 6∈ F .odd 4. 5. if y 6∈ F .even then Erweitere F um Kanten {x, y} und {y, z} ∈ M . Füge y in F .odd und z in F .even ein. 6. else return augmentierenden Pfad von Wurzel des Baumes von x zur Wurzel des Baumes von y. 7. return F ist ungarischer Wald Beispiel e x 1. Schritt o e y 2. Schritt o e y x e e z 3. Schritt e y e e z e e e z x e ez e x y o e x y o e ung. Wald z 48 4.12 Satz Sei G bipartit. Dann bestimmt Algorithmus 4.11 ein größtes Matching in O(nm). Beweis Laufzeit: • höchstens n 2 Aufrufe von ABM. • Jeder Aufruf kostet O(n + m), ohne Einschränkung zusammenhängend: m ≥ n − 1 ⇒ n ≤ m + 1 ⇒ O(n + m) = O(m) • Insgesamt O(nm). Zu zeigen: Wenn Algorithmus 4.11 einen Wald F zurückliefert, dann ist M größtes Matching. • Wenn F zurückgegeben wird, dann sind Knoten in F .even nur noch zu Knoten aus F .odd verbunden. e o • Jedes Matching in G muss mindestens |F .even| − |F .odd| Knoten unüberdeckt lassen. Zeige: Unser Matching lässt auch nicht mehr Knoten unüberdeckt. • Jede Komponente von F hat genau einen unüberdeckten Knoten (die Wurzel) und genau einen Knoten mehr in F .even als in F .odd. • Auf der Menge V - F .even - F .odd bildet M ein perfektes Matching, weil alle ungematchten Knoten in F .even sind und keine Matchingkanten mit nur einem Knoten in F liegen. e o o o e e e o o o e e e ⇒ Anzahl von M unüberdeckten Knoten = Anzahl Komponenten von F = |F .even| − |F .odd|. 4.13 Definition l(M ) Sei M Matching in G. Definiere ∞ M größtes Matching l(M ) := min {l(P ) : P ist M -augmentierender Pfad} sonst 49 4.14 Bemerkung a) A1 , . . . , At Mengen. Dann ist A1 ∆A2 ∆ . . . ∆At die Menge aller Elemente, die in einer ungeraden Anzahl von Ai enthalten sind. gerade Anzahl ungerade Anzahl b) Seien P1 , . . . , Pt knotendisjunkte M -augmentierende Pfade. Dann ist M 0 := M ∆ (E (P1 ) ∪ . . . ∪ E (Pt )) = M ∆E (P1 ) ∆ . . . ∆E (Pt ) ein Matching mit |M 0 | = |M | + t. M0 M 4.15 Lemma Sei M Matching in G und P1 , . . . , Pt inklusionsmaximale Menge von knotendisjunkten M -augmentierenden Pfaden der Länge l(M ). Dann l (M ∆ (E (P1 ) ∪ . . . ∪ E (Pt ))) > l (M ) . {z } | M0 Beweis 1) Sei M 0 := M ∆ (E (P1 ) ∪ . . . ∪ E (Pt )). Nach Bemerkung 4.14 b): M 0 ist größtes Matching mit |M 0 | = |M | + t, zu zeigen: l(M 0 ) > l(M ). 2) Wenn M 0 größtmöglich, fertig. Anderenfalls sei Q M -augmentierender Pfad. Zu zeigen: |E(Q)| > l(M ). 3) M0 Pt P1 M Wenn Q knotendisjunkt zu P1 ∪. . .∪Pt , dann fertig wegen |E(Q)| > l(M ). Wenn Q nicht knotendisjunkt, dann auch nicht kantendisjunkt (weil Q M augmentierend ist), also | (E (P1 ) ∪ . . . ∪ E (Pt )) ∩ E (Q) | > 0. 4) Nach Bemerkung 4.14 b) ist M 0 ∆E(Q) Matching mit |M 0 ∆E(Q)| = 1) |M 0 | + 1 = |M | + t + 1. 50 5) Nach Korollar 4.9 existieren knotendisjunkte M -augmentierende Pfade Q1 , . . . , Qt+1 mit Kanten nur aus (M 0 ∆E(Q)) ∆M . Nach Definition von l(M ) haben alle Qi Länge ≥ l(M ). 6) 5) ≤ ≤ (t + 1) l(M ) Def. M 0 ≤ = = − |E(Q1 )| + . . . + |E(Qt+1 )| |(M 0 ∆E(Q)) ∆M | |((M ∆ (E (P1 ) ∪ . . . ∪ E (Pt ))) ∆E(Q)) ∆M | |(E (P1 ) ∪ . . . ∪ E (Pt )) ∆E (Q)| |E(P1 ) ∪ . . . ∪ E(Pt )| + |E(Q)| 2| (E(P1 ) ∪ . . . ∪ E(Pt )) ∩E(Q)| {z } | ±0 wegen 3) < t · l(M ) + |E(Q)| ⇒ l(M ) < |E(Q)| 4.16 Algorithmus Hopcroft-Karp (G = (A ∪ B, E)) 1. M := ∅ 2. while l(M ) < ∞ 3. S := von M nicht überdeckte Knoten in A. 4. T := Knoten, die von S aus über augmentierende Pfade der Länge l(M ) erreichbar sind. 5. Bestimme mittels DFS ausgehend von den Knoten in T eine inklusionsmaximale Menge von knotendisjunkten M -augmentierenden Pfaden der Länge l(M ). 6. Augmentiere diese alle gleichzeitig. 51 Beispiel A l(M ) = 3 S A B A B S T T ⇒ B A B A S T B 4.17 Satz √ Algorithmus 4.16 kann ich O( nm) Schritten implementiert werden und berechnet ein größtes Matching in einem bipartiten Graphen G. Beweis • Sei M ∗ ein größtes Matching. • Nach jedem Durchlauf der while-Schleife erhöht sich l(M ) um mindestens 1 wegen Lemma 4.15 √ √ ⇒ Nach n Durchläufen ist l(M ) ≥ n. Sei M aktuelles Matching. ∗ ⇒ Nach Korollar 4.9√existieren |M | − |M | knotendisjunkte M -augmentierende Pfade der Länge √ ≥ n. ⇒ (|M ∗ | − |M |) n ≤ n √ ⇒ Anzahl weitere√Runden ≤ |M ∗ | − |M | ≤ n ⇒ Insgesamt ≤ 2 n while-Durchläufe. Zu zeigen: Jeder while-Durchlauf in O(m). • Bestimme durch eine Doppelsprung-BFS“: Starte in nicht-überdeckten ” Knoten in A(< S), nehme statt Nachbarn deren gematchte Nachbarn in die Queue, usw. → Bestimme l(M ) und breche BFS bei Abstand l(M ) ab. → Erhalte T . Merke mir Vorgänger. • Starte nun konsekutiv DFS in Knoten T und rückverfolge“ die Vorgänger ” bis wieder in S. • Markiere die dabei besuchten Knoten und besuche sie nie wieder. ⇒ Aufwand auf Zusammenhangskomponente O(n + m) = O(m). 2 + Größtes Matching in O(n 3 m) via Flüsseberechnen (bipartit) 1 + Größtes Matching in O(n 2 m) (bipartit) → Lässt sich auf nicht bipartite Graphen verallgemeinern. 52 4.18 Definition PM(G) Sei G = (V, E) Graph. Sei PM(G) die Menge der charakteristischen Vektoren des perfekten Matchings von G, d.h. ∃ perfektes Matching M von G, m 0 e ∈ E\M PM(G) := x ∈ {0, 1} : . xe = 1 e∈E Beispiel 2 G= 1 PM (G) = 1 0 1 0 0 5 4 , 3 0 1 0 1 0 Wiederholung δ(v) := {e ∈ E : ∃w ∈ V mit e = {v, w} ∈ E} δ(S) := {e ∈ E : ∃v ∈ S ∃w ∈ V \S : e = {v, w}} 4.19 Proposition Sei G = (V, E) Graph. 1) x(δ(v)) = 1 ∀v ∈ V | {z } m xe PM(G) = x ∈ R : e∈δ(v) 2) xe ∈ {0, 1} P Beweis ⊆“ Klar. ” ⊇“ Auch klar. ” Ziel: Polyedrische Beschreibung von conv(PM(G)), d.h. H-Darstellung, d.h. Ungleichungen. 53 4.20 Definition FPM(G) 1) x(δ(v)) = 1 ∀v ∈ V m FPM(G) := x ∈ R : 2) xe ≥ 0 ∀e ∈ E Klar: PM(G) ⊆ FPM(G). Auch klar: 2 1 2 1 5 4 1 2 1 2 1 2 1 2 1 2 0 1 2 3 1 2 ∈ FPM (G) \ PM (G) 0 4.21 Satz Sei G = (V, E) bipartit. Dann gilt: a) Ecken von FPM(G) sind aus {0, 1}m . b) conv(PM(G)) = FPM(G). 4.22 Proposition Seien S, P 0 ⊆ Rm , S ⊆ P 0 . Wenn P 0 Polytop mit allen Ecken in S, d.h. P 0 = conv(S 0 ), S 0 ⊆ S, dann ist conv(S) = P 0 . Beweis S⊆P 0 • conv(S) ⊆ conv(P 0 ) = P 0 . Vor. S 0 ⊆S • P 0 = conv(S 0 ) ⊆ conv(S). Beweis von 4.21 a) Angenommen x e sei nicht-ganzzahlige Ecke von FPM(G). e := {e ∈ E : 0 < x • Sei E ee < 1}. e • Wegen x e (δ (v)) < 1 berührt jeder Knoten, der eine Kante aus E e enthält einen Kreis C. berührt, mindestens eine weitere ⇒ E • Weil G bipartit muss C gerade sein. 54 • Setze d ∈ Rm abwechselnd auf -1 und +1 für die Kanten aus C und 0 für alle anderen Komponenten. Für ε > 0 klein liegen x e + εd und x + εd) + 21 (e x − εd), kann x e nicht Ecke x e − εd in FPM(G). Da x e = 21 (e von FPM(G) sein. 0<x ee < 1 +1 −1 +1 e E −1 +1 −1 b) Da PM(G) ⊆ FPM(G) und nach a) alle Ecken von FPM(G) in PM(G) liegen, folgt b) mit Proposition 4.22. 4.23 Satz Sei G = (V, E) Graph, x ∈ FPM(G). Dann: ∀e ∈ E : xe ∈ 0, 12 , 1 und x Ecke von FPM(G) ⇔ e : xe = 12 bilden Familie von knotendisjunkten ungeraden Kreisen Beweis ⇐“ Sei x so, dass rechte Seite erfüllt ist. Setze w ∈ Rm durch ” −1 xe = 0 we := 0 xe > 0 Dann ist wt x e ≤ 0 gültige Ungleichung für FPM(G). Behauptung FPM(G) ∩ {e x : wt x e = 0} = {x}. Dann ist x Ecke. Beweis der Behauptung ⊇“ x ∈ FPM(G) nach Vorraussetzung, wt x = 0 nach Konstruktion. ” ⊆“ Annahme: ∃e x ∈ FPM(G), wt x e = 0, x e 6= x. ” • Wegen w ≤ 0 und x e ≥ 0 darf x e nur dort positiv sein, wo auch x positiv ist (weil hier w = 0), also xe = 0 ⇒ x ee = 0. 1 • Wenn xe = 1, , dann xe0 = 0 für alle zu e inzidenten Kanten e0 wegen x(δ(v)) = 1, also auch x ee0 = 0, wegen x e(δ(v)) = 1, dann wieder x ee = 1. 55 • x e kann also von x in den Komponenten x ee mit xe = Das geht nicht: 1 2 1 2 1 2 abweichen. 1 2 −+ −+− 1 2 1 2 Denn die entsprechenden Kanten bilden ungerade Kreise. ⇒ Behauptung bewiesen. ⇒“ Sei x Ecke von FPM(G). Dann existiert w ∈ Rm , so dass x eindeutige ” optimale Lösung von (P): max {wt x : x ∈ FPM(G)} ist. 1. Zu zeigen: xe ∈ 0, 21 , 1 ∀e ∈ E. • Konstruiere bipartiten Graphen G0 : G0 = G= v(G0 ) := {u0 : u ∈ v(G)} ∪ {u00 : u ∈ v(G)} E(G0 ) := {{u0 , v 00 } , {v 0 , u00 } : {u, v} ∈ E(G)} • Setze w0 ∈ R2m : w0 = (−w−, −w−). n o t • Betrachte (P’): max (w0 ) x0 : x0 ∈ FPM(G0 ) • Optimale Lösung wird ohne Einschränkung in einer Ecke x0 von FPM(G0 ) angenommen. Nach 4.21 a) ist x0 ganzzahlig. • Wenn x0 optimale Lösung von (P’), dann setze x e ∈ Rn durch x ee = 1 0 0 (x + x ): x e ist optimale Lösung von (P). 0 00 e e 2 ⇒x=x e. Da x0 ganzzahlig, muss xe = x ee ∈ 0, 12 , 1 . 2. Zu zeigen: raden Kreisen. e : xe = 1 2 bilden Familie von knotendisjunkten unge1 2 1 2 1 2 1 2 1 2 1 2 e : xe = 12 müssen knotendisjunkte Kreise bilden. Gäbe es geraden Kreis, dann ergäbe sich wie im Beweis von 4.21 ein Widerspruch zu x Ecke von FPM(G).“ ” 56 4.24 Satz Perfect Matching Polytope Theorem Sei G = (V, E) und definiere 1) x(δ(v)) = 1 ∀v ∈ V Q(G) := x ∈ Rm : 2) xe ≥ e ∀e ∈ E . 3) x(δ(S)) ≥ 1 ∀S ⊆ V, |S| ≥ 3, |S| ungerade Dann ist conv(PM(G))=Q(G). Beweis a) PM(G) ⊆ Q(G) klar. b) Zu zeigen: Q(G) ⊆ conv(PM(G)). Beweis durch Induktion über |V |. |V | = 0, 1, 2 OK. c) Genügt zu zeigen, dass jede Ecke von Q in conv(PM(G)) liegt: Q = conv(W ), W ⊆ conv(PM(G)) ⇒ Q = conv(W ) ⊆ conv(PM(G)) Sei x Ecke von Q. Dann existiert Subsystem von Ungleichungen innerhalb e ⊆ E und S = 1)-3), die für genau x mit Gleichheit erfüllt sind, d.h. ∃E {S1 , . . . , Sk } mit |Si | ≥ 3, |Si | ungerade, so dass x eindeutige Lösung von x ∈ Q(G) e xe = 0 ∀e ∈ E x(δ(Si )) = 1 ∀Si ∈ S. 1. Fall: S = ∅ Dann ist x Ecke von FPM(G), also nach 4.23 xe ∈ 0, 21 , 1 ∀e ∈ E und e : xe = 21 bilden ungerade Kreise. Gäbe es einen solchen ungeraden Kreis, sei S seine Knotenmenge, dann x(δ(S)) = 0, zu Bedingung 3) von Q. 1 2 1 2 1 2 1 2 m Also x ∈ {0, 1} , also x ∈ PM(G). 57 1 2 2. Fall: S 6= ∅. Sei S ∈ S. x(δ(S)) = 1 G δ(S) S S := V \S u G0 G00 u d) Erhalte G0 durch Konstruktion“ der Knoten in S zu einem Knoten u ” (dabei verschwinden nur die Kanten innerhalb von S), analog G00 durch Konstruktion von S auf u. Seien x0 bzw. x00 Restriktionen von x auf G0 bzw G00 . e) Behauptung: x0 ∈ Q(G0 ), x00 ∈ Q(G00 ), denn: x0 (δ(v)) = x(δ(v)) ∀v ∈ S, x0 (δ(u)) = x(δ(S)) = 1, weil S ∈ S. Für S 0 ⊆ S: x0 (δ(S 0 )) = x(δ(S)) ≥ 1 ger. ger. z}|{ z}|{ x (δ (u ∪ S 0 ) = x(δ(|{z} S ∪ S 0 )) ≥ 1 | {z } 0 ung. ung. Analog für x00 . f) Also nach Induktion liegen x0 ∈ conv(PM(G00 )). X X 0 00 x00 ∈ conv(PM(G00 )) ⇒ x0 = λM 0 xM , x00 = λM 00 xM M0 M 00 Wobei die Summe über (alle) perfekte(n) Matchings M 0 von G0 bzw. M 00 von G00 gebildet werden. X X λM 0 = 1 = λM 00 , λM 0 , λM 00 ≥ 0. Idee: Konstruiere daraus Konvexkombination aus perfekten Matchings von G für x. g) Betrachte perfektes Matching M von G mit xM (δ(S)) = 1. Ein solches induziert perfektes Matching M 0 von G0 und M 00 von G00 mit einer eindeutigen Kante e ∈ M 0 ∩ M 00 . Setze λM := 58 λM 0 λM 00 . xe h) X ∀e ∈ δ(S) ∪ E(S) : xe = x0e = 0 λM 0 xM = e M0 X ∀e ∈ δ(S) ∪ E(S) : xe = x00e = X 00 λM 00 xM = e M 00 λM 0 M 0 :e∈M 0 X λM 00 M 00 :e∈M 00 Zu zeigen: x= X λM xM , X λM = 1, λm ≥ 0 M Hausaufgabe: Zu zeigen: Was, wenn xe = 0? xf = X λM xM f M Sei f ∈ E(S). X λM xM Def. f = M λM X λM 0 λM 00 xe M = X e∈δ(S) = X e∈δ(S) = X e∈δ(S) xM 1 xe 1 xe 1 xe X f λM 0 λM 00 xM f M :e=M 0 ∩M 00 X λM 0 λM 00 M :e=M 0 ∩M 00 ,f ∈M ! X X λM 0 λM 00 M 00 :e∈M 00 M :e=M 0 ∩M 00 ,f ∈M 0 | {z h) } =xe = X X λM 0 e∈δ(S) M 0 :e=M 0 ,f ∈M 0 = X X λM 0 M 0 :f ∈M 0 e∈δ(S),e∈M 0 = h) X λM 0 = xf M 0 :f ∈M 0 Wofür ist conv(PM(G))=Q(G) gut? Sei G = (V, E) Graph, w ∈ Rm Kantengewichte. Berechne schwerstes“ perfek” tes Matching. max {wt x : x ∈ PM(G)} = max {wt x : x ∈ conv(PM(G)} = max {wt x : x ∈ Q(G)} = max {wt x : Ax ≤ b} = min {y t b : y t A = wt , y ≤ 0} eventuell riesige Menge Kunst“ möglichst wenig Ungleichungen ” hier auch hier eventuell Ungleichungen Gibt es hierfür eine anschauliche Interpretation“? ” Beispiele MaxFlowMinCut - MaxMatchMinCover (v = τ ) 59 4.25 Satz Sei G = (V, E) Graph. M(G) := {x ∈ Rm : x ist charakteristischer Vektor eines Matchings in G} Dann gilt: x ∈ conv(M(G)) genau dann, wenn x ∈ Rm : a) x(δ(v)) ≤ 1 ∀v ∈ V b) xe ≥ 0 ∀e ∈ E c) x(E(S)) ≤ |S|−1 2 ∀S ⊆ V, |S| ≥ 3, |S| ungerade 60 5 NP-Vollständigkeit Was ist eigentlich ein Problem? 5.1 Beispiel G = (V, E), k ∈ N gegeben. • Suchproblem (S): Finde größte Clique in G. • Optimierungsproblem (O): Bestimme die Größe der größten Clique in G. • Entscheidngsproblem (E): Gibt es in G eine Clique der Größe ≥ k? 5.2 Proposition Angenommen es existiert für eins der 3 Probleme ein Algorithmus mit Laufzeit ≤ T(n) bei einem Graphen auf n Knoten, dann existiert auch für die übrigen Probleme ein Lösungsverfahren mit Laufzeit O n2 · T(n) . Beweis (S)→(O): Klar: Suche und zähle. (O)→(E): Klar: Ist ω(G) ≥ k? (E)→(O): k = n repeat {if 6 ∃ Clique der Größe k, dann k := k − 1, sonst return k} Aufwand O (n · T(n)). (O)→(S): Hausaufgabe. Im folgenden betrachten wir nur noch Entscheidungsprobleme. 5.3 Definition Alphabet, Wort Ein Alphabet Σ ist eine endliche nicht-leere Menge. Ein Wort x ist eine endliche Folge von Zeichen aus Σ. ε ist das leere Wort (leere Folge). Σ∗ := {ε} ∪ ∞ [ Σn n=1 Ein Entscheidungsproblem ist eine Teilmenge L ⊆ Σ∗ . (Frage: Gegeben x ∈ Σ∗ , ist x ∈ L? Antwort: Ja/Nein.) x ∈ L heißt ja-Instanz“ von L. ” 5.4 Beispiel a) CLIQUE(G, k): ω(G) ≥ k?“ ” L := {(G, k)|ω(G) ≥ k} input G, k. Ist (G, k) ∈ L? b) ILP(A, b, c, k): (max ct x) ≥ k?“ u.d.N. Ax = b, x ≥ 0, x ∈ Z ” L := {(A, b, c, k) |∃x : AX = b, x ≥ 0, x ∈ Z und ct x ≥ k} 61 5.5 Definition Die Klasse P“ ” Ein Entscheidungsproblem L ⊆ Σ∗ liegt in P, wenn es einen Algorithmus A und ein Polynom p(n) gibt, so dass A zu einem gegebenen Wert f ∈ Σ∗ entscheidet, ob f ∈ L in Zeit p(|f |) (d.h. in p(|f |) Schritten). 5.6 Beispiel a) Test auf Bipartitheit b) Matchings c) Flüsse d) Kürzeste Wege 5.7 Definition Die Klasse NP“ ” Ein Entscheidungsproblem L ⊆ Σ∗ liegt in NP, wenn es einen Algorithmus A und ein Polynom p(n) gibt mit f ∈ L genau dann, wenn ein Zertifikat c(f ) ∈ Σ∗ existiert mit |c(f )| ≤ p(|f |) und A bei Eingabe f , c(f ) nach höchstens p(|f |) Schritten ja“ ausgibt. ” 5.8 Bemerkung Das heißt wenn f ∈ L, dann existiert eine Garantie“ (= Zertifikat) hierfür, die ” A schnell überprüfen kann. Wenn f 6∈ L, dann existiert keine Garantie“, die A ” zum Ja-sagen“ überredet, also: A kann nicht hereingelegt“ werden. ” ” 5.9 Beispiel a) CLIQUE(G, k) ∈ NP. • A: Interpretiere Zertifikat als kodierte Knotenmenge C in G und überprüfe, ob C Clique der Größe ≥ k. • Wenn (G, k) ∈ L, dann existiert Zertifikat. • Wenn (G, k) 6∈ L, dann existiert kein Zertifikat. b) Das aussagenlogische Erfüllbarkeitsproblem (SAT) • aussagenlogische Formel: z.B. (x1 ∨ x5 ∨ x2 ) ∧ (x7 ∨ x1 ) – – – – x1 , . . . , xn Variablen, mögliche Werte: wahr“, falsch“ ” ” xi ist die Negation von xi Terme der Form xi oder xi sind Literale die Klammern“ nennen wir Klauseln ” • SAT-Problem: Eingabe F , Frage: Existiert eine Belegung der Variablen mit wahr“ und falsch“, so dass F wahr“ ist? ” ” ” • SAT ∈ NP: Zertifikat: Erfüllende Belegung 62 c) PRIME“ L := {n ∈ N|n ist Primzahl} ∈ NP ” Wie sieht Zertifikat aus? d) NOT-PRIME“ L := {n ∈ N|n ist nicht Primzahl} ∈ NP ” Zertifikat: Faktor 5.10 Proposition P ⊆ NP. Beweis Eingabe f , Zertifikat ε = c(f ). A sei der polynomielle Algorithmus, der das Problem entscheidet. Benutze A um zu entscheiden, ob f ∈ L ist. 5.11 Definition polynomielle Transformierbarkeit L1 , L2 Entscheidungsprobleme. Wir sagen, dass sich L1 auf L2 polynomiell transformieren lässt, wenn es ein Polynom p(n) gibt, und wir zu jedem Wort f1 ∈ Σ∗ ein Wort f2 ∈ Σ∗ in Zeit p(|f1 |) konstruieren können, so dass f1 ∈ L1 ⇔ f2 ∈ L2 Schreibweise: L1 ≤p L2 5.12 Bemerkung a) Wir müssen nur zu f1 ein f2 bauen und nicht umgekehrt, aber es muss f1 ∈ L1 ⇔ f2 ∈ L2 gelten. b) L1 ≤p L2 bedeutet: L2 ist mindestens so schwer wie L1 , insbesondere L1 ≤p L2 und L2 ∈ P ⇒ L1 ∈ P. c) L1 ≤p L2 und L2 ≤p L3 , dann L1 ≤p L3 . 5.13 Definition NPC • Ein Entscheidungsproblem L heißt NP-schwer, wenn ∀L0 ∈ NP: L0 ≤p L. • Wenn L NP-schwer und L ∈ NP, dann heißt L NP-vollständig. • Die Klasse alle NP-vollständigen Probleme wird mit NPC bezeichnet. 5.14 Korollar Falls P 6= NP und L ∈ NPC, dann L 6∈ P. Nachweis von L ∈ NPC? 63 5.15 Korollar Wenn L ∈ NP und L0 ∈ NPC mit L0 ≤p L, dann L ∈ NPC. Beweis Sei L0 ∈ NP, dann wegen Definition von NPC L0 ≤p L0 ≤p L, also L0 ≤p L. Das erste NPC-Problem“: ” 5.16 Satz von Cook SAT ∈ NPC Beweis Ohne. Erinnere/Definiere: SAT-Formel: C1 ∧ . . . ∧ Cm , Ci Klauseln mit Literalen xi , xi . 3-SAT-Formel: Pro Klausel genau drei Literale. 5.17 Proposition 3-SAT ∈ NPC. Beweis • 3-SAT = {F |F 3-SAT-Formel und erfüllbar}. • 3-SAT ∈ NP, da Spezialfall von SAT ∈ NP. • 3-SAT ist NP-vollständig: Nach Korollar 5.16 genügt zu zeigen: SAT ≤p 3-SAT • Sei also f1 = C1 ∧ . . . ∧ Cm eine SAT-Formel. • Konstruiere f2 = D1 ∧ . . . ∧ De 3-SAT-Formel mit f1 erfüllbar ⇔ f2 erfüllbar. • Bilde die Di wie folgt: – Falls Ci = (λ), dann Di = (λ ∨ λ ∨ λ). – Falls Ci = (λ1 ∨ λ2 ), dann Di = (λ1 ∨ λ2 ∨ λ2 ). – Falls Ci = (λ1 ∨ λ2 ∨ λ3 ), dann Di = Ci . – Falls Ci = (λ1 ∨ . . . ∨ λk ), k ≥ 4, dann ersetze Ci durch Di = (λ1 ∨λ2 ∨y1 )∧(y 1 ∨λ3 ∨y2 )∧(y 2 ∨λ4 ∨y3 )∧. . .∧(y k−3 ∨λk−1 ∨yk ). yi sind neue Variablen. Beispiel (x1 ∨ x2 ∨ x3 ∨ x4 ) wird zu (x1 ∨ x2 ∨ y1 ) ∧ (y 1 ∨ x3 ∨ x4 ). Dann Ci genau dann erfüllbar, wenn Di erfüllbar (selbst). Damit f1 erfüllbar genau dann, wenn f2 erfüllbar. Die Transformation kann in polynomialer Zeit ausgeführt werden. 64 5.18 Bemerkung Auch 3-SAT* ∈ NPC. 3-SAT*: 3-SAT-Formeln mit drei verschiedenen Literalen in jeder Klausel. 5.19 Satz CLIQUE ∈ NPC. Input: (G, k) Frage: Hat G Clique auf ≥ k Kanten? Beweis • CLIQUE ∈ NP • CLIQUE ist NP-schwer: Zeige (wieder nach Korollar 5.16): 3-SAT ≤p CLIQUE • Sei f = C1 ∨ . . . ∨ Cm eine 3-SAT-Formel, konstruiere (in polynomiell vielen Schritten) G und k, so dass f erfüllbar ⇔ G hat Clique der Größe ≥ k. • Prinzip am Beispiel: 4 Variablen, 4 Klauseln Klauseln (x1 ∨ x2 ∨ x3 ) (x1 ∨ x3 ∨ x4 ) (x1 ∨ x2 ∨ x3 ) (x2 ∨ x3 ∨ x4 ) (fff?) (f?ff) (ffw?) (f?fw) partielle erfüllende Bedingungen (fww?) (wff?) (wfw?) (wwf?) (f?wf) (f?ww) (w?ff) (w?wf) (wfw?) (?fww) • G: V = {alle partiellen erfüllenden Bedingungen} , |V | = 7m. • E: Kanten zwischen zwei partiellen erfüllenden Bedingungen ⇔ kompa” tibel“, d.h.: Dort, wo in beiden Belegungen kein ?“ steht, müssen die Einträge ” gleich sein. • k := m. • G, k in polynomieller Zeit konstruierbar. Behauptung G hat Clique der Größe (≥) k ⇔ f erfüllbar. ⇒“ Clique benutzt aus jeder Klauselzeile genau einen Knoten. Die zugehörigen ” partiellen Belegungen sind alle gegenseitig kompatibel und kommen daher von einer erfüllenden Belegung. (Im Beispiel: (wfww)) ⇐“ Erfüllende Bedingung gegeben: In jeder Klauselzeile gibt es genau eine ” dazu kompatible partielle Belegung. All diese m = k partiellen Belegungen sind kompatibel → Clique. 65 (www?) (w?ww) 6 Traveling Salesman Problem (TSP) 6.1 Definition Hamiltonkreis Sei G = (V, E) Graph, |V | = n. Ein Kreis der Länge n in G heißt Hamiltonkreis (HK) von G. Wenn G einen Hamiltonkreis hat, dann heißt G hamiltonisch. 6.2 Bemerkung Hamiltonkreis = b jeder Knoten genau einmal. a) Ein geschlossener Weg heißt Euler-Tour, wenn er jede Kante genau einmal benutzt. b) Beispiele H: E: H: E: H: E: H: E: Thema: Was sind notwendige bzw. hinreichende Bedingungen dafür, dass G einen Hamiltonkreis hat? notwendig: 6.3 G hat Hamiltonkreis ⇒ G zusammenhängend δ(G) ≥ 2 Lemma Seien x, y zwei Knoten in G = (V, E) mit d(x) + d(y) ≥ n und {x, y} 6∈ E. Dann gilt: G hat Hamiltonkreis ⇔ G + {x, y} hat Hamiltonkreis y x d(x)+d(y) ≥ n nicht erfüllt G Beweis ⇒“ Klar. ” ⇐“ • Sei C ein Hamiltonkreis in G + {x, y}. Wenn C die Kante {x, y} nicht ” benutzt, dann fertig, weil auch G einen Hamiltonkreis hat. • Also benutzt C die Kante {x, y}. • Seien v1 , . . . , vk = z die Nachbarn von x, k = d(x). vk = z x y w C v1 v2 • Wenn y zu dem Kreisnachfolger“ eines vi , i ∈ [1, k − 1] benachbart ” wäre, dann hätte G einen Hamiltonkreis. 66 • Wir wissen bereits, dass x 6∈ Γ(y), w ∈ Γ(y). • Innerhalb der n − 3 Knoten aus V \ {x, y, w} hat y d(y) − 1 Nachbarn, aber k − 1 Plätze gesperrt (weil Nachfolger von Nachbarn von x). ⇒ d(y) − 1 ≤ n − 3 − (k − 1) = n − k − 2 ⇒ d(x) + d(y) ≤ n − 1 6.4 Korollar Sei G = (V, E) mit h = |V | ≥ 3. a) Wenn für alle Paare x, y mit {x, y} 6∈ E : d(x) + d(y) ≥ n gilt, dann hat G einen Hamiltonkreis. b) Wenn δ(G) ≥ n 2, dann hat G einen Hamiltonkreis. Beweis a) Wende Lemma 6.3 wiederholt an bis der vollständige Graph erreicht ist. Dieser hat einen Hamiltonkreis. b) Wenn δ(G) ≥ n2 hat jeder Knoten mindestens Grad n2 , also d(x)+d(y) ≥ n immer erfüllt. Die Behauptung folgt mit a). δ(G) = 2 < n 2 Bemerkung: Die Bedingung b) ist nicht notwendig, z. B. jeder Kreis mit n ≥ 3 hat Hamiltonkreis, obwohl δ(G) < n2 . 6.5 Satz Das Problem HAMILTONKREIS(HK) ist NP-vollständig. | {z } Input: Graph G Frage: Hat G einen HK? Beweis • HK ∈ NP, denn als Zertifikat könnte z.B. eine Permutation der Knoten benannt werden. • Wir werden zeigen, dass NODE-COVER | {z } ≤p GHK ≤p HK. ∈ NPC ~ Frage: Hat G ~ einen gerichteten HK? GHK: Input: Gerichteter Graph G. Zu zeigen: NODE-COVER ≤p GHK S NODE-COVER 67 ~ k Knotenzahl in der Überdeckung mit Transformation (G, k) 7−→ G, ~ hat gerichteten Hamiltonkreis G, k hat NC der Größe ≤ k ⇔ G z1 1 u 2 3 7−→ zi v zj 1 2 zk u1 u01 u02 u2 v30 v3 v20 0 v2 v1 v1 ~ G G, k • Etwas formaler: Ersetze jeden Knoten v in G durch einen gerichteten Pfad v1 → v10 → v2 → v20 → . . . → vd → vd0 mit d=d(v). • Zähle an jedem Knoten die inzidenten Kanten. • Wenn e = {u, w} bei u die i-te und bei w die j-te Kante ist, dann füge noch die Kanten ui wj und u0i wj0 ein. • Füge k zusätzliche Knoten z1 , . . . , zk mit Kanten wie im Bild ein. ⇒“ Bezeichne die k Knoten in NC mit gut“, Rest schlecht“. ” ” ” ~ • In G gibt es gute und schlechte Pfade bzw. Knoten und künstliche Knoten. ~ wie folgt: Beginne mit z1 , • Konstuiere gerichteten Hamiltonkreis in G gehe zu erstem guten Anfangsknoten u1 . Folge dem guten Pfad bis u0d , aber wann immer ein Nachbar vj von ui schlecht ist, gehe Umweg ui → vj → vj0 → u0i . Wenn bei u0d angekommen, gehe zu z2 usw. bis wieder bei z1 . • Wir erhalten einen gerichteten Hamiltonkreis, denn: Alle guten Kno~ werden getroffen, und für jeden schlechten gibt es n G eine ten in G Kante zu einem guten. Also werden sie mitgenommen“. ” ~ ⇐“ Sei C gerichteter Hamiltonkreis von G. ” Bemerkung: Falls C von künstlichen Knoten in einen Pfad hineingeht, geht er aus diesem auch wieder zu einem anderen künstlichen Knoten heraus und macht unterwegs nur die direkten Umwege (sönst gäbe es Knoten, die nicht zu C gehören können). ⇒ Wir können ein Node Cover in G wie folgt konstruieren: Alle Knoten, ~ direkte Verbindungen zu künstlichen Knoten haben, deren Pfade in G nehmen wir in NC auf. ⇒ Das ist ein Node Cover, da für alle anderen Knoten in C ein Umweg“ ” von einem NC-Pfad existieren muss (= b Kante in G). ⇒ Das Node Cover hat Größe k, da C durch alle k künstlichen Knoten geht. 68 Zu zeigen: GHK ≤p HK ~ G v 7−→ G 7−→ va vm ve ua ~ hat gerichteten Hamiltonkreis ⇒ G hat Hamiltonkreis. ⇒“ Klar: G ” ⇐“ Annahme: G hat Hamiltonkreis ⇒ Hamiltonkreis geht durch alle vm . ” ⇒ Kanten {vm , va } und {vm , ve } sind im Hamiltonkreis. ⇒ Von allen anderen Kanten mit va bzw. ve benutzt der hamiltonkreis genau eine Kante. ⇒ Wir benutzen die Kanten der Form {ve , ua } um gerichteten Hamilton~ zu bauen: (v, u) ∈ GHK. kreis in G Bemerkung δ(G) ≥ 6.6 n 2 ⇒ G hat Hamiltonkreis. Definition TSP a) Das Problem TSP besteht aus Eingabe: Vollst. Graph G = (V, E), Längenfunktion c : E → R≥0 , k ∈ R. Frage: Hat G einen Hamiltonkreis der Länge“ höchstens k? Jeder Ha” miltonkreis in G wird als TSP-Tour bezeichnet. Optimale TSP-Tour ist eine kürzest mögliche TSP-Tour. Varianten/Spezialfälle b) Metrisches TSP: c erfüllt ∀x, y, z ∈ V : c(x, y) + c(y, z) ≥ c(x, z). c) Euklidisches TSP: Knoten liegen im R2 und c(x, y) := kx − yk2 . d) Rektilineares TSP: Knoten liegen im R2 und c(x, y) := kx − yk1 . 6.7 Satz Alle Varianten des TSP aus Definition 6.6 sind NP-vollständig. Beweis Zunächst ohne. 6.8 Definition Approximationsalgorithmus Betrachte die Optimierngsvariante von TSP. Input: (G, c), gesucht: Optimale TSP-Tour. Ein Approximationsalgorithmus für TSP mit Approximationsgüte r ∈ R≥0 ist ein Algorithmus A, der zu jeder Eingabe (G, c) eine TSP-Tour A(G, c) berechnet, so dass Länge(A(G, c)) ≤ r. Länge(optimale TSP-Tour(G, c)) 69 6.9 Satz Sei r beliebig, aber fest. Falls P 6= NP, dann existiert kein polynomieller Approximationsalgorithmus für TSP mit Güte ≤ r. Beweis Angenommen, A sei solch ein Approximationsalgorithmus. Behauptung: Dann können wir das Entscheidungsproblem HK in polynoialer Zeit lösen (also HK ∈ P ∩ NPC, also P = NP). Algorithmus: Input: Graph H = (V, F ). Definiere vollständigen Graph G = (V, E) mit 1 {x, y} ∈ F c ({x, y}) = r|V | + 1 {x, y} 6∈ F. Beispiel r3 + 1 H: G: 1 1 If Länge(A(G, c)) ≤ r|V | then H hat HK“ else H hat keinen HK“. ” ” Zu Zeigen: Der Algorithmus entscheidet korrekt. • Wenn H einen HK hat, dann Länge(optimale TSP-Tour(G, c)) ≤ |V |. ⇒ Länge(A(G, c)) ≤ r|V | ⇒ Der Algorithmus liefert korrekte Ausgabe. • Wenn H keinen HK hat, dann muss jede TSP-Tour in G mindestens Länge r|V |+1 haben. Also Länge(A(G, c)) ≥ r|V |+1, d.h. der Algorithmus liefert korrekte Ausgabe. ZIEL Wir möchten nun einen Approximationsalgorithmus der Güte 2 bzw. 1,5 für das metrische TSP finden. Nächster Nachbar Heuristik 6 6 5 5 5 6 √ 6 3 · 5 + 2 · 6 + 144 + 25 40 NN = = Opt 34 34 wird beliebig schlecht: Idee: 1 1 log2 n ≤ r ≤ log2 n 3 2 Brauchen eine untere Schranke für Länge(opt(G, c)). 70 6.10 Proposition Eine optimale TSP-Tour in (G, c) ist mindestens so lang wie ein minimal spannender Baum in (G, c). Beweis Länge(opt. TSP-Tour) ≥ Länge (opt. TSP-Tour − bel. Kante) ≥ Länge MST. | {z } | {z } Kante HK | {z } Pfad, insb. Baum 6.11 Algorithmus MST-Heuristik Input: Output: Vollständiger Graph G = (V, E), c : E → R≥0 , metrisch TSP-Tour δ 1. Berechne MST B in (G, c) 2. Verdopple alle Kanten in B → Multigraph B 0 3. Finde Eulatour δ in B 0 4. while ∃ Knoten v, der durch δ mehrfach benutzt wird, ersetze Kanten {a, v} , {v, b} durch Kante {a, b}. a v b Beispiel B0 6.12 B Satz Algorithmus 6.11 ist ein polynomieller Approximationsalgorithmus für das metrische TSP mit Güte 2. Beweis L(A) L(opt) metrisch ≤ L(B 0 ) L(opt) Konstr. = 2L(B) 6.10 2L(opt) ≤ =2 L(opt) L(opt) (L(A): Länge(A(G, c)) mit A = Algorithmus 6.11) 71 6.13 Algorithmus Christofides-Heuristik 1. Berechne MST B in (G, c) 2. Füge ein leichtestes perfektes Matching in (G [u] , c) hinzu (wobei u := Knoten ungeraden Grades in B) und erhalte B 0 3. Finde Eulatour δ in B 0 4. while ∃ Knoten v, der durch δ mehrfach benutzt wird, ersetze Kanten {a, v} , {v, b} durch Kante {a, b}. B0 B 6.14 besser: Satz Algorithmus 6.13 hat Approximationsgüte 32 . Beweis Sei M ein leichtestes perfektes Matching. L(A) L(opt) ≤ ! ≤ L(B 0 ) Konstr. L(B) + L(M ) = L(opt) L(opt) 1 6.10 L(B) + 2 L(opt) L(opt) + 12 L(opt) 3 ≤ = L(opt) L(opt) 2 Denn: L(M ) ≤ ≤ 1 L(opt. TSP-Tour(G[u], c)) 2 1 L(opt. TSP-Tour(G, c)) 2 u G 72 6.15 Bemerkung Allgemeines TSP: Lässt sich nicht approximieren. Metrisches TSP: • MST-Heuristik mit Güte 2. • Christofides-Heuristik mit Güte 1,5. • Nearest-Neighbour-Heuristik: beliebig schlecht. • Nearest Insert (NI): – Starte mit kleinem Dreieck. – Erweitere Tour sukzessive um denjenigen Knoten, der zu den bereit in der Tour enthaltenen Knoten den geringsten Abstand hat. → Güte 2. • Farthest Insert (FI): Wie Nearest Insert, aber Knoten mit größtem Abstand wird genommen. → Güte ≥ 1,5 ? Praxis(z.B. TSPLIB): Christofides und Farthest Insert sind meistens am besten, oft deutlich besser als 1,5. Vorteil von Farthest Insert: Schnellere Laufzeit. • Man kann nicht auf 1.01 approximieren. Euklidisches TSP: (Arora 1998) ∀ε > 0 kann man auf1 (1 + ε) approximieren in polynomieller Zeit. (Allerdings Laufzeit O n (log n) ε .) Bemerkung: Das waren Eröffnungsverfahren“. Jetzt Verbesserungsverfahren“. ” ” rot raus, grün rein 6.16 Algorithmus K-OPT TSP Input: (G, c), G vollständiger Graph. Output: TSP-Tour T . 1. Starte mit beliebiger Tour T . 2. Wähle Menge S von K Kanten aus E(T ). 3. for all S ∈ S and all Tours T 0 mit E(T 0 ) ≥ E(T )\S if c(T 0 ) < c(T ) then T := T 0 goto 2.. 4. Stoppe irgendwann“. ” 73 6.17 Bemerkung a) Nicht spezifiziert, wann gestoppt wird. Praxis: Wenn lange keine Verbesserung. b) Eine Tour heißt K-optimal, wenn sie von K-OPT TSP nicht verbessert werden kann. Für euklidische TSP: 2-optimal ⇒ 6 ∃ Kreuzung, Umkehrung gilt nicht. Beispiel: 2-optimal, nicht 3-optimal 1 c) Eine K-optimale Tour kann um einen Faktor n 2K vom Optimum abweichen. Außerdem kann K-OPT TSP exponentiell viele Schritte brauchen bis Koptimale Tour. d) In der Praxis ist K = 2 oder K = 3 gut. 6.18 Definition δ-Pfad Anfangstour δ-Pfad 0 T v u0 Tour u0 w 0 P =P v u0 → w0 v u0 T (P 0 ) → w0 u1 ↓ v u0 w0 u1 v u0 P 1 = P u1 ,w1 w1 u2 → w1 u2 P 2 = P u2 ,w2 w3 v u0 u3 → w1 u2 w0 u1 w0 u1 ↓ w3 v u0 u3 w1 u2 w0 u1 74 T (P 1 ) w0 u1 T (P 2 ) 6.19 Algorithmus LIN-KERNIGHAN (G, c) G vollständiger Graph. 0. Sei T beliebige Tour. 1. For all v ∈ V and for all Nachbarn u von v auf T do 2. u0 := u. Entferne Kante u0 v aus T , füge Kante u0 w0 mit c(u0 w0 ) < c(u0 v) hinzu (wenn es kein solchen w0 gibt, goto 1.) und erhalte P 0 := P u0 w0 . Setze i := 0. 3. Betrachte T (P i ). Wenn c(T (P i )) neuer Rekord, speichere. 4. Sei ui+1 Nachbar von wi auf dem wi -ui -Pfad in P i . Suche Knoten wi+1 so aus, dass für P i+1 := P i − wi ui+1 + ui+1 wi+1 gilt: c(P i+1 ) < c(P i ) (5) (Wenn nicht verfügbar, goto 5.). Setze i = i + 1. 5. 6.20 Wenn neuer Rekord (siehe 3.) besser als T , dann ersetzt T . (Goto 1.). Bemerkung a) Die Kosten der sukzessiven δ-Pfade können nicht steigen. b) Bei gefundener besserer Tour wird diese nicht gleich realisiert. c) Wie wählt man in (2. und in) 4. Knoten wi+1 ? Kernigham-Lin: Wähle für w0 und w1 die jeweils besten“ 5 Kandidaten, ” für w2 , w3 , . . . nur noch den besten“. ” beste(r)“: Der Knoten wi+1 , der in (5) am meisten einspart. ” Kann zeigen: Mit dem Rezept findet Algorithmus 6.19 eine 3-optimale Tour. d) Zusätzliche Neustarts (mit neuer Starttour T in Schritt 0.) sind auch hilfreich. Alternativ: 4-interchange“ ” e) Praxis(TSPLIB): 1.01-Aprroximation möglich. Brauchen: Gute untere Schranken für die optimale Tour. 75 6.21 Satz Das Problem Input: Vollst. Graph G, metr. Kostenfunktion c : E → R≥0 , Tour T . Frage: Ist T noch nicht optimal? ist vollständig. Beweis eventuell später. D.h. wir brauchen untere Schranke für Länge einer optimalen TSP-Tour. 6.22 Definition T (n), TSP-Polytop T (n) := {char. Vektoren von TSP-Touren im Kn } n o n = x ∈ {0, 1}( 2 ) : {e : xe = 1} bilden Hamiltonkreis conv(T (n)) heißt TSP-Polytop. TSP = b min ct x : x ∈ T (n) = min ct x : x ∈ conv(T (n)) Für conv(T (n)) gibt es bislang keine Beschreibung! 6.23 Satz n (n − 3) 2 dim (conv (T (n))) = Beweis n(n−3) 2 = n 2 −2 ≤“: ” ∀x ∈ T (n) : ∀v ∈ V : X xe = 2. e∈δ(v) ∀x ∈ conv(T (n)) : ∀v ∈ V : X xe = XX e e∈δ(v) = X i λi X λi (xi )e i (xi )e = e X λi · 2 = 2. i Check: Linear unabhängig? dim(conv(T (n))) ≤ n −n 2 ≥“: Um “≥“ zu zeigen: Suche n(n−3) linear unabhängige charakteristische Vek2 ” toren, d.h. Hamiltonkreise . . . 76 6.24 Proposition n Sei Kn = (V, E), x ∈ Z( 2 ) . Dann gilt x ∈ T (n) genau dann, wenn 0P ≤ xe ≤ 1 ∀e ∈ E xe = 2 ∀v ∈ V Pe∈δ(v) xe = |X| − 1 ∀∅ 6= X $ V (1) (2) (3) (Subtourungleichung) e∈E(Kn [X]) Beweis Alle x ∈ T (n) erfüllen (1)-(3). Umgekehrt: Bedingungen (1) und (2) impizieren, dass x charakteristischer Vektor eines 2-regulären Subgraphen ist, also knotendisjunkte Vereinigung von Kreisen. Wegen Bedingung (3) kann es aber keine Kreise mit weniger als n Kanten geben, also nur genau einen Kreis. n o n P := x ∈ R( 2 ) : x erfüllt (1)-(3) heißt Subtour-Polytop. Nicht gleich dem TSP-Polytop. Frage: 6.25 Welche weiteren Bedingungen können wir einführen? Proposition n Sei x ∈ R( 2 ) mit x erfüllt (1), (2). Dann sind äquivalent: P xe = |X| − 1 ∀∅ 6= X $ V (3) e∈E(Kn [X]) P xe = |X| − 1 ∀∅ 6= X j V \ {1} (4) e∈E(Kn [X]) P xe ≥ 2 ∀∅ 6= X $ V (5) e∈δ(X) Beweis Sei ∅ = 6 X $ V . Dann ist X xe X = e∈δ(V \X) e∈δ(X) | = {z ≥2 X xe − 2 xe e∈E(Kn [X]) } X 2|X| − 2 xe . e∈E(Kn [X]) | Daraus ergibt sich die Äquivalenz. 77 {z ≤|X|−1 } 6.26 Bemerkung Weitere notwendige Bedingungen: Wenn x ∈ conv(T (n)), dann a) 2-Matching Ungleichung: X xe ≤ |X| + e∈E(Kn [X])∪F |F | − 1 ∀X ⊆ V, F ⊆ δ(X), |F |ungerade 2 (6) b) Kamm-Ungleichung: X xe + s X X xe ≥ 3s + 1 (7) i=1 e∈δ(Ti ) e∈E(Kn [X]) H c) Clique-Baum-Ungleichung: . . . n o n d) min ct x : x ∈ R( 2 ) mit x erfüllt (z.B.) (1),(2),(5) liefert untere Schranke für TSP. 6.27 Definition 1-Baum Sei G = (V, E) vollständiger Graph. Ein 1-Baum ist ein Subgraph H, der sich aus einem spannenden Baum auf den Knoten {2, . . . , n} und zwei zu Knoten 1 inzidenten Kanten zusammensetzt. Beispiele 6.28 1 4 1 4 2 3 2 3 Proposition Die Kosten eines minimalen 1-Baumes sind untere Schranke für die Kosten einer optimalen TSP-Tour. Beweis Klar: Nehme optimale TSP-Tour. Lösche zu Knoten 1 inzidente Kanten, erhalte (speziellen) spannenden Baum auf {2, . . . , n}. 78 6.29 Beispiel min 1-Baum optimale TSP-Tour 1 0 1 0 10 10 0 0 0 0 u 0 10 0 0 u 0 0 0 10 Kosten: 0 0 u 0 Kosten: 10 • Addiere 10 auf alle in u inzidenten Kanten. 1 0 1 0 10 10 10 10 u 10 10 0 0 10 10 u 10 0 0 10 10 u 10 • Optimale TSP-Tour wächst um 20 auf 30 (gleiche Tour). • Optimaler 1-Baum wächst ebenfalls auf 30. ⇒ Optimale TSP-Tour muss jetzt ≥ 30 sein. ⇒ Optimale TSP-Tour muss vorher ≥ 10 sein. • Notation: u erhält Knotennummer -10. • Können auch mehrere Knotennummern gleichzeitig verteilen, die Differenz P zwischen Tourkosten in neuem und alten Graph ist 2 Knotennummern. 6.30 Satz Held-Karp-Schranke Sei G = (V, E) vollständiger Graph mit Kostenfunktion c : E → R≥0 . Wähle für jeden Knoten v ∈ V ein yv ∈ R. Setze für e = {u, v} ∈ E : ce := ce − yu − yv . Seinen K die Kosten eines minimalen 1-Baum in (G, c). Dann ist X K +2 yv v∈V eine untere Schranke für die Kosten einer optimalen TSP-Tour in (G, c). Beweis Siehe oben. • Wie wählt man die yv ? → Rezepte oder optimieren. 79 Ziel: • Die optimale Held-Karp-Schranke“ ist gleich der optimalen Lösung des ” Subtour-Problems, also gleich 6.26 d). • Im metrischen TSP ist Held-Karp ≥ 2 3 optimaler TSP Tour. • In der Praxis viel besser. Neunummerierung A := n min ct x : x ∈ R( 2 ) mit 0P ≤ xe ≤ 1 ∀e ∈ E (12) xe = 2 ∀v ∈ V (13) Pe∈δ(v) xe = |X| − 1 ∀∅ 6= X ⊆ V \ {1} (15) e∈E(G[X]) P (19) xe = n − 2 e∈E 0 E 0 := E(G[V \ {1}]) 6.31 Satz Sei G = (V, E) nicht notwendig vollständiger Graph, n = |V |, m = |E|. conv(charakteristische Vektoren von spannenden Bäumen in G) = x ∈ Rm : ∀e ∈ E P0 ≤ xe ≤ 1 xe ≤ |X| − 1 ∀∅ 6= X ⊆ V e∈E(G[X]) P xe = n − 1 e∈E [12] (20) (21) Also: MST(G, c) = b min ct x : x ∈ Rm mit (12),(20,(21) 6.32 Korollar Sei G = (V, E) vollständiger Graph, V = [n], E = [n] 2 (n2 ) , c ∈ R≥0 . B := minimaler 1-Baum(G, c) := ∀e ∈ E P0 ≤ xe ≤ 1 x ≤ |X| − 1 ∀∅ 6= X ⊆ V \ {1} e e∈E(G[X]) n P min ct x : x ∈ R( 2 ) mit xe = n − 2 0 e∈EP xe = 2 e∈δ(1) 80 [12] [15] [19] (22) Bemerkung: Nur ein“ Unterschied zwischen A und B: ” P P (13) xe = 2 ∀v ∈ V k (22) xe = 2 e∈δ(v) e∈δ(1) Beschreibe die Gleichungen in (13), die nicht in (22) sind. e1 n−1 2 3 n em xe1 ( ) ( ) ( )} 1 0A1 x 2. .. 2 = xem n−1 Knoten-Kanten-Inzidenz-Matrix m z}|{ ∀y ∈ R : y A = (. . .), y t = (y2 , . . . , yn ) ∀e = {i, j} ∈ E : y t A e = yi + yj n−1 t yt a = 2 n X yi i=2 A= B= t min c x max x y∈Rn−1 min cty x x Bx ≤ b (12), (15), (19), (22) u.d.N. Dx = d Ax = a b = max (ut wt y t ) d u,w,y a ut B + wt D + y t A = ct u.d.N. u≥0 Bx ≤ b u.d.N. Dx = d t max max (u w ) y u,w u.d.N. ⇒B= b max (ut wt y t ) d u,w,y a t t t u B + w D = c − yt A | {z } u.d.N. =ct u≥0 81 t +2 n P yi i=2 b d + yt a ut B + wt D = cty u≥0 6.33 Satz Die Schranken in A und B sind identisch, d.h. die optimale Lösung des Soubtourproblems (A) hat die gleichen Kosten wie ein modifiziertes (siehe Satz 6.30) 1-Baum-Problem. Haben untere Schranke durch A = min ct x : x erfüllt (12),(13),(14) gefunden, wobei (14) zu (15) äquivalent ist. Wie bestimmen wir A? Problem: Große Anzahl Ungleichungen für Bedingung (14). P xe ≥ 2 ∀∅ 6= X ( V (14) e∈δ(X) X Idee: a) Löse LP nur mit Nebenbedingungen (12),(13) → x∗ . b) Wenn x∗ TSP-Tour, fertig. c) Wenn nicht, finde Subtour, die Bedingung (14) verletzt. Füge Nebenbedingung hinzu, löse wieder → cutting-plane“-Methode. ” Ungleichung schneidet für uns uninteressante Punkte ab. Neues Problem: Wie findet man verletzende Subtouren? Einfach: • Wenn Graph H = (V, F := {e : x∗e > 0}) nicht zusammenhängend, dann ergibt jede Zusammenhangskomponente von H eine Subtour. Also: Teste zunächst, ob zusamenhängend. • Wenn zusammenhängend, dann suche Cut mit kleiner Kapazität, denn X xe ≥ 2 verletzt ⇔ (X, V \X) ein Cut mit Kapazität < 2. e∈δ(X) 82 Was tun? Neue Ungleichungen. → Gomory-Chvatal-Schnittebenen Beispiel P PI 2 3 2 −2 A= −6 −2 −2 −6 −6 8 = {x ∈ Rn : Ax ≤ b} = {x ∈ Zn : Ax ≤ b} 27 7 −9 b = −11 21 (1) (2) (3) (4) (5) x2 P PI x1 x02 ∀x ∈ P : ≤6 ∀x ∈ PI : x2 ≤ 5 D.h. wir könnten (und werden gerne) Ungleichung x2 ≤ 5 dazunehmen. Wie begründen wir, dass das geht? Trick: Multipliziere (5) mit 21 : x∈PI ⇒ −3x1 + 4x2 ≤ 21 2 −3x1 + 4x2 ≤ 10 (50 ) Multipliziere (5’) mit 2, multipliziere (1) mit 3 und addiere: −6x1 + 8x2 6x1 + 9x2 17x2 ≤ 20 ≤ 81 ≤ 101 (6) ⇒ x2 ≤ 5, 94 ⇒ x2 ≤ 5 6.34 Proposition Betrachte: P PI = {x ∈ Rn : Ax ≤ b} = {x ∈ Zn : Ax ≤ b} SeienPati die Zeilenvektoren von A, i = 1, . . . , m. Seien y1 , . . . , ym R≥0 gegeben, P c := yi ai , d= yi bi . Dann gilt: P P ∀x ∈ P : ct x = yi ati x ≤ yi bi = d ∀x ∈ PI : ct x ≤ bdc, falls c ∈ Zn 83 6.35 Definition Gomory-Chvatal-Schnittebene ct x ≤ bdc heißt Gomory-Chvatal-Schnittebene bzw. -cutting plane. Man sagt ct x ≤ bdc wurde durch y1 , . . . , ym ≥ 0 aus ati x ≤ bi abgeleitet. (c = y t A, d = y t b) Sei wt x ≤ t eine Ungleichung. Wir würden gerne zeigen: ∀x ∈ PI : wt x ≤ t Ein Schnittebenenbeweis für wt x ≤ t aus ati x ≤ bi ist eine Folge von M Ungleichungen atm+k x ≤ bm+k , k = 1, . . . , M mit nichtnegativen Zahlen y1,1 y2,1 ... ... .. . y1,m y2,m+1 yM,1 ... yM,m+k , so dass ∀k = 1, . . . , M die Ungleichungen atm+k x ≤ bm+k durch yk,1 . . . yk,m+k−1 aus dem System ati x ≤ bi , i = 1, . . . , m + k − 1 abgeleitet wurden und atm+M x ≤ bm+M =w b t x ≤ t. 6.36 Satz Sei P = {x ∈ Rn : Ax ≤ b} mit A ∈ Qm×n , b ∈ Qm , PI = {x ∈ Zn : Ax ≤ b}. Sei weiterhin wx ≤ t ∀x ∈ PI . Dann existiert ein t0 ≤ t und ein Schnittebenenbeweis für wt x ≤ t0 aus Ax ≤ b. Beweisskizze • Induktion über dim(P ). • Finde Schnitt für eine Facette. • Mache daraus Schnitt für P . 6.37 Korollar Sei PI = ∅. Dann existiert ein Schnittebenenbeweis 0t x ≤ −1 aus Ax ≤ b ∀x ∈ Pi . Vergleiche Lemma von Farkas: 6 ∃x mit Ax ≤ b ⇔ ∃u ≥ 0 mit ut A = 0, ut b < 0 ⇒ ut Ax ≤ ut b, 0t x < 0, d.h. kann durch nicht negative Linearkombination aus Ax ≤ b erzeugt werden. 84 6.38 Proposition Sei wt x ≤ btc durch y ≥ 0 aus Ax ≤ b abgeleitet. Dann existiert y ∈ Rm mit 0 ≤ y ≤ 1 und y t A ∈ Z, so dass wt x ≤ btc geschrieben werden kann als Summe von (y t A)x ≤ by t bc und einer nicht negativen Kombination von Zeilen aus Ax ≤ b. Beweis Sei o.E. A ∈ Zm×n , b ∈ Zm . Wie wissen: w = y t A ∈ Zn , t = y t b. Setze y := y − byc. Klar: 0 ≤ y ≤ 1. Dann: w = y t A = (y + byc)t A = y t A +byct A |{z} ⇒∈Zn btc = by t bc = b(y + byc)t bc = by t bc − (byc)t b 6.39 Satz Sei P = {x ∈ Rn : Ax ≤ b} , A ∈ Qm×n , b ∈ Qm , PI = {x ∈ Zn : Ax ≤ b}. Sei P 0 die Menge der Vektoren aus P , die alle Gomory-Chvatal-Schnitte erfüllen. Setze: 0 0 P 0 := P, P 1 := P 0 , P 2 := (P 0 ) , P i+1 := P i . Dann existiert ein k ∈ N mit conv(PI ) = P k (k heißt Chvatal-Rang von P ). Beweis Folgt aus Satz 6.36 mit Proposition 6.38. TSP-Eingabe(G, c) G vollständiger Graph. Heuristisch gefundene Tour T ∗ . Untere Schranke L. Aber: Abstand zwischen L und c(T ∗ ) zu groß. 6.40 Idee: Branch & Bound A, B ⊆ E SA,B := {Touren T : A ⊆ T, B ∩ T = ∅} 85 6.41 Algorithmus Input: Output: (G, c), Tour T ∗ , untere Schranke L. Optimale Tour T ∗ . 1. R := c(T ∗ ) 2. Beginne mit einelementigem Baum mit (aktivem) Knoten SA,B (wobei A = ∅ = B (S∅,∅ )) 3. Wähle aktiven Knoten SA,B des Baumes und deaktiviere ihn, wähle Kante e ∈ E\(A ∪ B) 4. A0 := A ∪ {e}, B 0 := B ∪ {e} 5. For S 0 = SA0 ,B , SA,B 0 do berechne untere Schranke L0 für alle Touren in S 0 6. 7. if S 0 = {T } and c(T ) < R then T ∗ := T, R := c(T ∗ ) 8. if |S 0 | > 1 and L0 < R then nehme S 0 als aktives Kind von SA,B in den Baum auf 9. goto 3. 6.42 Bemerkung n a) Algorithmus 6.41 hat Laufzeit von O(2( 2 ) ) und findet immer eine optimale Tour. (In der Praxis schneller) b) Untere Schranke in 6. lässt sich z.B. durch Hinzufügen der Gleichung xe = 1(SA0 ,B ) bzw. xe = 0(SA,B 0 ) und Berechnung der LP-Relaxation generieren. Außerdem: Halte Ausschau nach weiteren Ungleichungen, die wegen der neuen Gleichung verletzt sind, füge diese hinzu und löse LPRelaxation neu. c) Für SA,B könnte man auch jederzeit“ ” Löse TSP in (G, c) heuristisch, wobei ce ce + c ce = ce + 2C eine neue obere Schranke finden: e∈A e 6∈ A ∪ B , e∈B wobei C hinreichend groß. d) Weiterhin wichtig: Wahl der Starttour T ∗ , des nächsten aktiven Knoten und der Kante e in 3. e) Branch & Bound lässt sich auch auf viele andere kombinatorische Optimierungsprobleme anwenden. Branch: Wähle nicht ganzzahlige x∗i und füge hinzu die Ungleichung: xi ≤ bx∗i c bzw. xi ≥ dx∗i e Bound: LP-Relaxation mit neuer Ungleichung. 86 7 Färbung und Average-Case Analyse 7.1 Definition Färbbarkeit, Chromatische Zahl K ∈ N, G = (V, E) heißt K-färbbar, wenn es eine K-Färbung von G gibt, d.h. eine Abbildung f : V → [K] mit ∀{x, y} ∈ E : f (x) 6= f (y). Chromatische Zahl von G 7.2 χ(G) := min{K ∈ N : G ist K-färbbar}. Algorithmus Greedy Input: Graph, Output: Färbung. Betrachte Knoten in beliebiger Reihenfolge und gib jedem Knoten die niedrigstmögliche Farbe. 7.3 Beispiel Verschiedene Reihenfolgen der Knoten benötigen verschiedene Farbenanzahl: 3 2 4 5 1 4 7.4 1 5 3 2 Proposition a) Greedy findet eine Färbung und lässt sich in O(nm) implementieren. b) Für jeden Graphen existiert eine Reihenfolge, die mittels Greedy zu einer optimalen Färbung führt. c) Anzahl der von Greedy verwendeten Farben beträgt höchstens Maximalgrad + 1. Beweis Hausaufgabe. 7.5 Proposition Für jeden Graphen G gilt: a) ω(G) ≤ χ(G) b) n α(G) ≤ χ(G) Beweis Klar. 7.6 Satz a) Ist χ(G) ≤ 3?“ ist NP-vollständig. (3-COL) ” 6 b) Falls P 6= NP lässt sich χ(G) nicht auf n 7 approximieren. 87 Beweis a) Standard. b) Schwer. Greedy färbt fast alle“ Graphen approximativ mit Güte ≤ 2. ” ZIEL: 7.7 Definition Gn, 1 2 Sei Gn die Menge aller Graphen auf der Knotenmenge {1, . . . , n}. Gn, 21 := Ergebnis eines Zufallsexperiments, bei dem jedes der n2 Paare der Knotenmenge [n] mit Wahrscheinlichkeit 12 eine Kante bildet 7.8 Bemerkung n a) |Gn | = 2( 2 ) (n) b) ∀G ∈ Gn : Pr[Gn, 12 = G] = 12 2 = |G1n | → Gn, 12 modelliert Gleichverteilung auf Gn . 7.9 Proposition lim Pr[Gn, 21 hat kein Dreieck] = 0 n→∞ Beweis Wahrscheinlichkeit kein Dreieck = Pr[Gn, 12 7 8 b n3 c 7 n→∞ hat kein Dreieck] = −→ 0 8 Bild Anteil ”kein Dreieck” geht gegen null Gn 7.10 Proposition Sei K ≥ 2 log2 n, n ≥ 4. Dann: Pr[ω(Gn, 12 ) ≥ K] = Pr[α(Gn, 21 ) ≥ K] < 88 1 2 Beweis Pr[ω(G n, 21 ) ≥ K] ≤ (∗) ≤ (K2 ) n 1 nK − K 2 + K ≤ 2 2 2 K 2 K! K K K 22 K2 K 22 1 2− 2 + 2 = < K! K! 2 In (∗) geht ein, dass: K ≥ 2 log2 n ⇔ 7.11 K K ≥ log2 n ⇔ 2 2 ≥ n 2 Bemerkung Etwas genauere Rechnung zeigt ∀ε > 0: lim Pr[α(Gn, 21 ) ≥ (2 + ε) log n] = 0 n→∞ 7.12 Satz ∀ε > 0 : lim Pr[Greedy braucht für Gn, 21 ≥ (1 + ε) n→∞ n Farben] = 0 log n Beweisidee n 2 n 4 7.13 Farbklassen haben die Größe log n Korollar ∀0 < ε < 1 : lim Pr[Greedy-Algorithmus hat für Gn, 21 Approximationsgüte > 2 + 4ε] = 0 n→∞ Beweis Güte = = = # Farben(Greedy[Gn, 21 ]) χ(Gn, 21 ) α(Gn, 12 ) 7.12 & 7.5 b) ≤ (1 + ε) logn n 2 (2 + ε) log n ≤ (1 + ε) log n log n 2 (1 + ε)(2 + ε) = 2 + 3ε + ε < 2 + 4ε (1 + ε) n α(Gn, 1 ) 7.11 89 Bemerkung • Nichts Besseres bekannt. • Auch interessant: Sicher 2-Approximation, fast sicher gute Laufzeit. Trick:“ Wenn keine gute Approximation, dann exakter, exponentieller Algo” rithmus. ⇒ Immer gut, meistens schnell. Ursprüngliche Motivation: für Gn, 12 und 7.10: Gegeben: K, n ∈ N. Frage: Gibt es Graphen G auf n Knoten mit α(G) < K und ω(G) < K? a) Nein, wenn n ≥ 22k . k b) Ja, wenn n ≤ 2 2 . Denn nach 7.10: ⇒ Pr[α(Gn, 21 ) ≥ K oder ω(Gn, 12 ) ≥ K] < 1 ⇒ Pr[α(Gn, 12 ) < K und ω(Gn, 21 ) < K] > 0 α≥K < 12 ω≥K < 12 Gn R(K) := min{n : Nein} = min{n : ∀G ∈ Gn gilt α(G) ≥ K oder ω(G) < K} R(3)? α(G) < 3, ω(G) < 3 mit roten Kanten: Clique der Größe 3 ohne rote Kanten: Stabile Menge der Größe 3 R(3) ≤ 6 R(4) = 18 42 ≤ R(5) ≤ 49 5 < 90