Optimierung 2

Werbung
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
Herunterladen