Optimierung 2 - Foswiki · Optimierung 2 Leitfaden zur Vorlesung von Anusch Taraz im Wintersemester...

39
Optimierung 2 Leitfaden zur Vorlesung von Anusch Taraz im Wintersemester 2007/2008 Zentrum f¨ ur Mathematik Technische Universit¨ at M¨ unchen 17. M¨ arz 2008 Inhaltsverzeichnis 1 Einf¨ uhrung in die Graphentheorie 2 2 urzeste Wege, minimal spannende B¨ aume, Matroide 10 2.1 urzeste Wege ...................................... 10 2.2 Minimal spannende B¨ aume ............................... 12 2.3 Matroide .......................................... 14 3 Fl¨ usse in Netzwerken 17 4 Matchings 22 5 Ganzzahlige lineare Optimierung 28 5.1 Ganzzahlige Polyeder ................................... 28 5.2 Unimodularit¨ at und totale Unimodularit¨ at ....................... 29 6 Travelling Salesman Problem 30 1

Transcript of Optimierung 2 - Foswiki · Optimierung 2 Leitfaden zur Vorlesung von Anusch Taraz im Wintersemester...

Optimierung 2

Leitfaden zur Vorlesung von Anusch Tarazim Wintersemester 2007/2008

Zentrum fur MathematikTechnische Universitat Munchen

17. Marz 2008

Inhaltsverzeichnis

1 Einfuhrung in die Graphentheorie 2

2 Kurzeste Wege, minimal spannende Baume, Matroide 10

2.1 Kurzeste Wege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 Minimal spannende Baume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3 Matroide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Flusse in Netzwerken 17

4 Matchings 22

5 Ganzzahlige lineare Optimierung 28

5.1 Ganzzahlige Polyeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.2 Unimodularitat und totale Unimodularitat . . . . . . . . . . . . . . . . . . . . . . . 29

6 Travelling Salesman Problem 30

1

Vorwort

Dies ist ein Leitfaden durch die Vorlesung ”Optimierung 2“ im Wintersemester 2007/2008. Erenthalt (im Gegensatz zur Vorlesung) keinerlei Beweise, sondern sollte lediglich als erweitertesInhaltsverzeichnis angesehen werden.

1 Einfuhrung in die Graphentheorie

Definition 1.1 (Zahlen) Wir bezeichnen mit N := {0, 1, 2, . . .} die Menge der naturlichen Zahlenund setzen N

+ := N \ {0}. Die Menge der ganzen Zahlen ist Z := {. . . , ,−2,−1, 0, 1, 2, . . .}.Fur i, j ∈ N mit i ≤ j sei [i, j] := {i, . . . , j} und [i] := [1, i].Mit log bzw. ln wird der Logarithmus zur Basis 2 bzw. e bezeichnet. Reelle Zahlen runden wir mitder sogenannten oberen bzw unteren Gaußklammer. Fur x ∈ R sei

�x� := max{n ∈ Z : n ≤ x} �x� := min{n ∈ Z : x ≤ n}.Sei V eine Menge und k ∈ N. Dann bezeichne mit(

V

k

):= {W ⊆ V : |W | = k}, (1)

V k := V × · · · × V = {(v1, . . . , vk) : vi ∈ V }, (2)

die Menge aller k-elementigen Teilmengen von V bzw das k-fache kartesische Produkt von V .

Bemerkung 1.2 Offensichtlich gilt, dass∣∣∣∣(V

k

)∣∣∣∣ =(|V |k

)und

∣∣V k∣∣ = |V |k,

wenn V endlich ist.

Definition 1.3 (Graphen) Ein Graph ist ein Tupel G = (V,E), wobei V eine nicht–endlicheMenge und E ⊆ (

V2

)eine Teilmenge der zweielementigen Teilmengen von V ist.1 Die Elemente

v ∈ V heißen die Knoten (auch Ecken, engl. vertices oder nodes), die Elemente aus e ∈ E dieKanten (engl. edges) von G.

Ein gewichteter Graph G = (V,E, �) enthalt zusatzlich eine Gewichts- oder Langenfunktion� : E → R.

Definition 1.4 (isomorph) Viele dieser Graphen unterscheiden sich jedoch lediglich in den ”Na-men“ ihrer Knoten: Zwei Graphen G1 = (V1, E1) und G2 = (V2, E2) heißen isomorph, in ZeichenG1

∼= G2, falls es eine Bijektion f : V1 → V2 gibt, so daß gilt: {u, v} ∈ E1 ⇔ {f(u), f(v)} ∈ E2.

Definition 1.5 (spezielle Graphen) Die folgenden Graphen werden so oft benutzt, dass sie sicheigene Namen verdient haben:

Pn := (V,E) mit V := {0, . . . , n} und E := {{i− 1, i} : i ∈ [n]}, fur n ∈ N0

Cn := (V,E) mit V := [n] und E := {{i, i+ 1} : i ∈ [n− 1]} ∪ {n, 1}, fur n ∈ N, n ≥ 3

Kn := (V,E) mit V := [n] und E :=(n

2

)fur n ∈ N

En := (V,E) mit V := [n] und E := ∅ fur n ∈ N.

Ein Graph, der isomorph zu Pn ist, heißt Pfad der Lange n.Ein Graph, der isomorph zu Cn ist, heißt Kreis der Lange n.Ein Graph, der isomorph zu Kn ist, heißt Clique auf n Knoten, oder kurz: n-Clique.Ein Graph, der isomorph zu En ist, heißt stabile Menge auf n Knoten, oder kurz: n-stabile Menge.

1Es werden hier fast ausschließlich nur sogenannte einfache (endliche) Graphen betrachtet, d.h. Graphen ohneSchlingen (Kanten, deren Endpunkte zusammenfallen) und ohne mehrfache (parallele) Kanten zwischen zwei Knoten.

2

Wenn x und y die zwei Knoten in Pn bezeichnen, die nur in einer Kante enthalten sind, dannnennt man x und y auch Anfangs- und Endknoten und sagt, dass Pn ein x, y-Pfad ist. Achtung:ein Pfad der Lange n hat n+ 1 Knoten (aber n Kanten).

Manchmal spricht man auch von vollstandigen Graphen statt von Cliquen, oder von unabhangi-gen statt von stabilen Mengen.

Definition 1.6 (Subgraphen) Ein Graph H = (W,F ) heißt Subgraph eines Graphen G =(V,E), in Zeichen H ⊆ G, falls W ⊆ V und F ⊆ E ∩ (

W2

). Zwei Sonderfalle verdienen eigene

Namen:

Falls F = E∩(W2

), dann heißt H induzierter Subgraph von G. In diesem Fall ist G offensichtlich

durch die Auswahl der Knoten W festgelegt und wir schreiben auch H = G[W ].

Falls W = V , dann heißt H aufspannender Subgraph von G.

Wenn G = (V,E, �) ein gewichteter Graph ist und H = (W,F ) ⊆ G, dann sei �(H) :=∑

e∈F �(e)das Gewicht (manchmal auch die Lange) von H .

Definition 1.7 (zusammenhangender Graph, Baum) Ein Graph G = (V,E) heißt zusam-menhangend, wenn es fur alle Knoten x, y ∈ V einen x, y-Pfad als Subgraph von G gibt. Ein GraphG heißt kreisfrei, wenn es keinen Kreis als Subgraphen von G gibt. Wenn G zusammenhangendund kreisfrei ist, nennt man G einen Baum.

Mit diesen Vokabeln ausgestattet konnen wir bereits eine Reihe von wichtigen kombinatorischenOptimimerungsproblemen prazise definieren.

Definition 1.8a) Kurzester Weg:Eingabe: G = (V,E, �) und s, t ∈ V .Gesucht: s, t-Pfad H als Subgraphen von G, der �(H) minimiert.b) Minimal aufspannender Baum:Eingabe: G = (V,E, �).Gesucht: Baum H als aufspannenden Subgraphen von G, der �(H) minimiert.c) Minimal aufspannender Kreis / Travelling Salesman Problem:Eingabe: G = (V,E, �).Gesucht: Kreis H als aufspannenden Subgraphen von G, der �(H) minimiert.d) Großte Clique:Eingabe: G = (V,E).Gesucht: Clique H auf k Knoten als Subgraphen von G, der k maximiert.

Analog kann man naturlich auch eine großte stabile Mengen suchen. Die entsprechenden Kardina-litaten der Clique bzw. der stabilen Menge heißen Cliquenzahl ω(G) und Stabilitatszahl α(G):

ω(G) := max{k ∈ N : ∃k-Clique in G} α(G) := max{k ∈ N : ∃k-stabile Menge in G}

Bemerkung 1.9 Wir werden im Laufe der Vorlesung sehen, dass es fur die Probleme a) undb) effiziente Verfahren gibt, die eine optimale Losung finden. Wir werden außerdem zeigen, dassdies fur das Problem c) aller Voraussicht nach nicht moglich ist, es aber Verfahren gibt, die ei-ner optimalen Losung beweisbar nahe kommen; was wiederum fur das Problem d) ebenfalls außerReichweite zu liegen scheint.

Definition 1.10 (Nachbarn) Zwei Knoten u, v ∈ V eines Graphen G = (V,E) heißen adjazent,verbunden oder benachbart, falls {u, v} ∈ E. Eine Kante e ∈ E beruhrt oder inzidiert mit einemKnoten v ∈ V , wenn v ∈ e. Die Nachbarschaft eines Knotens v ∈ V ist die Menge N(v) := {u ∈V | {u, v} ∈ E} der Nachbarn von v. Der Grad deg(v) := |N(v)| eines Knotens v ∈ V zahlt dieKanten, die in dem Graphen mit v inzidieren. (Manchmal schreibt man auch NG und degG, umzu betonen, um welchen Graphen es sich handelt.) Mit Δ(G) und δ(G) werden der großte und derkleinste in G auftretende Grad bezeichnet. Ist Δ(G) = δ(G) = k, dann spricht man von einemk-regularen Graphen.Sei G = (V,E) und v ∈ V . Mit G− v bezeichnet man den Graphen, den man erhalt, wenn man v

3

aus V und alle Kanten aus E, die mit v inzidieren, entfernt. Sei e ∈ E. Mit G− e bezeichnet manden Graph, aus dem man lediglich die Kante e entfernt, also (V,E \ {e}).

Proposition 1.11 Fur jeden Graphen G = (V,E) gilt:a)

∑v∈V d(v) = 2|E|,

b) G hat eine gerade Anzahl von Knoten ungeraden Grades.

Beweis. a) Wenn wir die Summe der Grade bilden, dann zahlen wir jede Kante genau zweimal,namlich von jedem ihrer zwei Endknoten aus einmal.b) Siehe Ubungsaufgabe 0.2.

Vorlesung 19.10.07

Proposition 1.12a) Wenn G = (V,E) ein Baum und |V ≥ 2 dann hat G mindestens zwei Blatter, d.h. Knoten v, wmit deg(v) = deg(w) = 1.b) Sei G = (V,E) zusammenhangender Graph mit Kreis C, un es sei e eine beliebige Kante imKreis. Dann ist G′ := G− e ein zusammenhangender Graph.c) Ein Graph G ist zusammenhangend genau dann wenn G einen Baum als aufspannenden Sub-graphen besitzt.

Beweis. ...

Satz 1.13 Fur einen Graphen G = (V,E) auf n = |V | Knoten sind aquivalent:

a) G ist ein Baum;

b) G ist zusammenhangend und hat n− 1 viele Kanten;

c) G ist kreisfrei und hat n− 1 viele Kanten;

d) G ist Kanten-maximal kreisfrei;

e) G ist Kanten-minimal zusammenhangend;

f) Je zwei Knoten aus V sind in G durch genau einen Pfad verbunden.

Beweis. Wir zeigen hier exemplarisch nur die Implikation a) ⇒ b). Der Rest folgt eventuell in denUbungen...

Fur die Anzahl der Baume gibt es eine sehr schone, kurze Formel, die wir hier ohne Beweisangeben.

Satz 1.14 (Cayley, 1882) Die Anzahl der Baume mit Knotenmenge [n] betragt nn−2.

Definition 1.15 (Bipartite Graphen) Ein Graph G = (V,E) heißt bipartit genau dann, wennseine Knotenmenge V eine Partition V = A∪B hat, so dass A und B stabile Mengen induzieren.Mit anderen Worten: alle Kanten verlaufen zwischen A und B, d.h.

E ⊆ {{a, b} : a ∈ A, b ∈ B} .

Bei Gleichheit spricht von einem vollstandigen bipartiten Graphen, und bezeichnet ihn in Analogiezum K|V | mit K|A|,|B|.

Bemerkung 1.16a) Stabile Mengen, Pfade und (wie wir gleich sehen werden) Baume im allgemeinen sind bipartit.b) Ein Kreis ist genau dann bipartit, wenn er eine gerade Anzahl von Knoten besitzt.

4

Definition 1.17 (Zusammenhangskomponente, Abstand, Sphare) SeiG = (V,E) ein Graph.a) Eine Zusammenhangskomponente von G ist ein inklusionsmaximaler zusammenhangender Sub-graph von G.b) Der Abstand zwischen zwei Knoten u, v ist definiert als:

dist(u, v) :={

min{k ∈ N : ∃ u, v-Pfad der Lange k} : falls es einen u, v−Pfad gibt,∞ : sonst.

c) Sei u ∈ V . Fur 0 ≤ i ≤ n − 1 heißt dann die Knotenmenge Si(u) := {v ∈ V : dist(u, v) = i}die i-te Sphare um u.Offensichtlich gilt S0(u) = {u} und S1(u) = N(u).

Mit Hilfe des Begriffs der Sphare lasst sich zeigen, dass ungerade Kreise das einzige Hindernisfur einen bipartiten Graphen darstellen.

Satz 1.18 (Konig 1936) Sei G = (V,E) ein zusammenhangender Graph. Dann sind aquivalent:a) G ist bipartit.b) G enthalt keine Kreise ungerader Lange als Subgraphen.c) Fur jeden Knoten u ∈ V gilt: A := S0(u)∪S2(u)∪ ... und B := S1(u)∪S3(u)∪ ... bilden stabileMengen.

Beweis. Die Implikation c) ⇒ a) ist klar nach Definition, weil fur die so definierten Mengen A undB gilt: V = A∪B. Die Implikation a) ⇒ b) ist auch klar, siehe auch 1.16b). Um die Implikationb) ⇒ c) zu zeigen, nehmen wir an, dass es eine Kante e = {x, y} gebe, die innerhalb von A oderB liegt. Wir unterscheiden zwei Falle:...

Damit ist insbesondere klar, dass Baume bipartit sind (wie in Bemerkung 1.16 angekundigt).

Vorlesung 25.10.07

Definition 1.19 (Farbung) Sei k ∈ N. Eine k-Farbung von G ist eine Abbildung f : V → [k]mit

∀{x, y} ∈ E : f(x) �= f(y).

Die chromatische Zahl von G wird bezeichnet mit

χ(G) := min{k ∈ N : G hat eine k-Farbung }.

Bemerkung 1.20a) Der folgende Graph hat chromatische Zahl 3...b) G ist genau dann bipartit, wenn χ(G) ≤ 2.c) χ(C2k) = 2 und χ(C2k+1) = 3.d) χ(Kn) = n und χ(En) = 1.e) ω(G) ≤ χ(Kn).f) |V |/α(G) ≤ χ(G).g) Wir werden noch sehen: es ist algorithmisch einfach, zu entscheiden, ob χ(G) ≤ 2, aber schwerzu entscheiden, ob χ(G) ≤ 3.

Definition 1.21 (Laundau–Notation) Es seien f, g : N → R+ zwei Funktionen. Wir schreiben

f(n) = O (g(n))

wenn es Konstanten c ∈ R+ und n0 ∈ N gibt, so daß

f(n) ≤ c g(n) ∀n ≥ n0.

Wir schreibenf(n) = Ω (g(n)) ,

5

wenn es Konstanten c ∈ R+ und n0 ∈ N gibt, so daß

f(n) ≥ c g(n) ∀n ≥ n0.

Wir schreibenf(n) = Θ (g(n)) ,

wenn es Konstanten c1, c2 ∈ R+ und n0 ∈ N gibt, so daß

c1 g(n) ≤ f(n) ≤ c2 g(n) ∀n ≥ n0.

Wir schreibenf(n) = o (g(n)) ,

wenn es fur jede Konstante c ∈ R+ eine Konstante n0 ∈ N gibt, so daß

f(n) ≤ c g(n) ∀n ≥ n0.

Wir schreibenf(n) = ω (g(n)) ,

wenn es fur jede Konstante c ∈ R+ eine Konstante n0 ∈ N gibt, so daß

f(n) ≥ c g(n) ∀n ≥ n0;

Beispiel 1.22 a) 7n2 + 17n = O(n2),b) 17n = O(n2),c) 7n2 + 17n = Θ(n2),c) 1

7n2 �= o(n2),

d) 17n

2 = o(n2.1),e) n2 + 5n− 7

√n+ (−1)n lnn = Θ(n2).

Bemerkung 1.23 a) limn→∞f(n)g(n) = 0 ⇔ f(n) = o(g(n))

b) f(n) = Θ(g(n) genau dann, wenn f(n) = O(g(n)) und f(n) = Ω(g(n)).

Definition 1.24 (Reprasentationen von Graphen) Es sei G = (V,E) ein Graph. Wir wollenim Folgenden zwei Moglichkeiten der Reprasentation und Speicherung von Graphen betrachten.Ab jetzt gelte immer, falls nichts anderes gesagt wird: Fur einen Graphen G = (V,E) setzen wirn := |V | und m := |E|.

(1) Adjazenzliste

Feld von n Listen, eine fur jeden Knoten in V

Fur v ∈ V enthalt die Liste Adj[v] Verweise auf alle Knoten, die zu v benachbart sind.

Vorteil: Kompakte Darstellung (O(n +m) Speicher)

Nachteil: Test, ob {v, w} Kante ist, kostet in schlechtestem Fall O(n) Zeit

(2) Adjazenzmatrix

n× n Matrix A = (aij) mit

aij ={

1 , falls {i, j} ∈ E0 sonst

Vorteil: Test, ob {v, w} Kante ist, kostet O(1) Zeit

Nachteil: Adjazenzmatrix erfordert Θ(n2) Speicher.

Bemerkung 1.25 Falls m = O(n) ist ein Aufwand von O(n+m) naturlich viel besser als O(n2).Ein Verfahren mit Platz- oder Zeitkomplexitat O(m+n) ist daher einem Verfahren mit KomplexitatO(n2) vorzuziehen. Wir werden einige Beispiele fur kanonische Graphenklassen sehen, fur diem = O(n) gilt.

6

Wir kommen nun zu zwei fur Graphenalgorithmen fundamentale Prinzipien, der Breitensuche(engl. Breadth-First-Search, kurz BFS) und der Tiefensuche (engl. Depth-First-Search, kurz DFS).Beide stellen Methoden dar, einen Graphen zu durchsuchen bzw. zu durchlaufen, um Strukturin-formation uber den Graphen zu gewinnen. Viele Graphenalgorithmen sind nichts anderes als eineauf das Problem abgestimmte Variante der Breiten- oder Tiefensuche.

Breitensuche. Zu einem gegebenen Startknoten u ∈ V berechnet der Algorithmus Breiten-

suche beginnend mit i = 0 sukzessive aus der Sphare Si(u) die Sphare Si+1(u) durch Untersuchungder Nachbarn der Knoten in Si - bis schließlich alle Knoten der Zusammenhangskomponente vonG, die u enthalt, besucht wurden.

Die Knoten werden dabei in einer Warteschlange (engl. Queue) Q abgespeichert, die nachdem first-in first-out Prinzip arbeitet. Mit Enqueue (Q, u) wird das Element u am Ende von Qeingefugt, mit v := Dequeue (Q) wird das Element am Anfang von Q als v gespeichert und ausQ entfernt.

Als ein Ergebnis der Breitensuche werden die Knoten nach und nach als ”bekannt“ markiert.Dazu wird ein Vektor bekannt der Lange n mitgefuhrt; seine i-te Komponente bekannt[i] ist gleich0, wenn der Knoten i noch nicht bekannt ist, andernfalls ist sie gleich 1.

Vorlesung 26.10

Algorithmus 1.26Input: Graph G = (V,E), Knoten u ∈ VOutput: Feld “bekannt“BFS(G, u)(1) Enqueue (Q, u)(2) bekannt[u] := 1; foreach w ∈ V \ {u} do bekannt[w] := 0(3) while Q �= ∅(4) v := Dequeue (Q)(5) foreach w ∈ N(v) and bekannt[w] = 0(6) Enqueue (Q,w)(7) bekannt[w] := 1

Proposition 1.27 Sei G = (V,E) ein Graph und u ∈ V ein Knoten von G, sowie H = (W,F )die Zusammenhangskomponente von G, die u enthalt. Dann besucht BFS(G, u) alle Knoten undKanten von G, die in H liegen, genau einmal. Das heißt: die Knoten werden genau einmal in Qaufgenommen (und dabei als bekannt markiert) und die Kanten werden genau einmal (in Schritt(5)) entlang gegangen. Die Laufzeit betragt O(|V | + |F |).

Beweis: ... �

Durch eine minimale Erweiterung von BFS konnen wir auch die Abstande von u zu allenanderen Knoten berechnen und einen aufspannenden Baum berechnen.

Algorithmus 1.28Input: Graph G = (V,E), Knoten u ∈ VOutput: Felder “bekannt“, “abst“, “vor“BFS

∗(G, u)(1) Enqueue (Q, u)(2) bekannt[u] := 1; foreach w ∈ V \ {u} do bekannt[w] := 0(3) abst[u] := 0(4) while Q �= ∅(5) v:= Dequeue (Q)(6) foreach w ∈ N(v) and bekannt[w] = 0(7) Enqueue (Q,w)(8) bekannt[w] := 1(9) abst[w] := abst[v] + 1(10) vor[w] := v

7

Proposition 1.29 Sei G = (V,E) ein Graph und u ∈ V ein Knoten von G, sowie H = (W,F )die Zusammenhangskomponente von G, die u enthalt. Dann gilt fur BFS∗(G, u):a) Wenn w in Q aufgenommen wird, hat vor[w] Q als letzter Knoten verlassen.b) Wenn a vor b in Q aufgenommen wird, dann gilt abst[a] ≤ abst[b].c) Zu jedem Zeitpunkt unterscheiden sich die abst[.]-Werte in Q nur um maximal 1.d) Die Folge w, vor[w], vor[vor[w]], . . . bildet einen w, u-Pfad der Lange abst[w].e) Die Kantenmenge F := {{w, vor[w]} : w ∈W \ {u}} bildet die Kantenmenge eines aufspannen-den Baumes von H.f) Fur alle w ∈W gilt: abst[w] = dist(u,w).

Beweis: a) gilt nach Konstruktion.b) und c): diese Bedingungen gelten zu Beginn, wenn Q = (u). Jeder neue Knoten w erhalt einenWert abst[w], der um eins hoher ist als der von vor[w], welcher Q gerade verlassen hat (siehe a)).Also bleiben die Bedingungen erhalten.d) Zwischen w und vor[w] ist nach Konstruktion eine Kante. Da abst[w] − 1 = abst[vor[w]] sinktder abst[.] Wert in dieser Folge mit jedem Schritt um 1, es muss sich also um einen Pfad handeln,der bei u endet und Lange abst[w] hat.e) F enthalt n− 1 Kanten. Wegen d) enthalt der Graph (V, F ) fur alle Knoten w einen w-u-Pfad,ist also zusammenhangend, und damit nach Satz 1.13 ein Baum.f) Wegen d) gilt abst[w] ≥ dist(u,w) fur alle Knoten w. Es genugt also zu zeigen, dass auchabst[w] ≤ dist(u,w) gilt. Wir beweisen dies durch Induktion uber dist(u,w).Wenn dist(u,w) = 0, dann u = w und abst[u] = 0. Gelte also die Behauptung fur alle Knoten mitkleinerem Abstand zu u als w.Betrachte einen kurzesten u,w-Pfad P . Sei y der Nachbar von w auf P . Nach Induktionsannahmegilt abst[y] ≤ dist(u, y). Außerdem ist dist(u, y) + 1 = dist(u,w).Also muss wegen abst[w] ≥ dist(u,w) > dist(u, y) ≥ abst[y] und Kontraposition von b) der Knoteny vor dem Knoten w die Schlange Q verlassen haben. Entweder w ist zu dem Zeitpunkt, wo y dieSchlange Q verlasst, schon in Q; dann gilt nach c) abst[w] ≤ abst[y]+1 ≤ dist(u, y)+1 = dist(u,w),was zu zeigen war. Oder w kommt jetzt in die Schlange, dann ist vor[w] = y und wiederumabst[w] = abst[y] + 1 ≤ dist(u, y) + 1 = dist(u,w), was zu zeigen war. �

Tiefensuche. In vielen Fallen ist es unerheblich, in welcher Reihenfolge man die Knoten undKanten eines Graphen ablauft – entscheidend ist, daß alle Knoten und Kanten (ggf. einer Zusam-menhangskomponente) ”besucht“ werden. Der Algorithmus Tiefensuche, den wir nun kennen-lernen werden, unterscheidet sich von Breitensuche lediglich durch die Auswahlstrategie fur diezu besuchenden Knoten und ist ein reprasentatives Beispiel fur den sinnvollen Einsatz rekursiverProgrammierung.

Ein ausgewahlter Knoten u ∈ V wird der Startknoten der Tiefensuche. Wenn es einen Nachbarnw gibt, der noch unbekannt ist, dann markiere diesen Knoten als bekannt und wahle ihn als einenneuen Startknoten fur einen rekursiven Aufruf der Tiefensuche. Gibt es wahrend eines solchenAufrufs einmal keinen unbekannten Nachbarn, dann beende diesen rekursiven Aufruf und kehre zudem Vorganger zuruck, und betrachte dessen Nachbarn (weiter).

Algorithmus 1.30Input: Graph G = (V,E), Knoten u ∈ VOutput: Felder “bekannt“, “vor“DFS(G, u)(1) foreach v ∈ V(2) bekannt[v] := 0(3) DFS-visit(u)

DFS-visit(v)(1) bekannt[v] := 1(2) foreach w ∈ N(v)(3) if bekannt[w] = 0 then vor[w] := v, DFS-visit(w)

Vorlesung 02.11.07

8

Proposition 1.31 Sei G = (V,E) ein Graph und u ∈ V ein Knoten von G, sowie H = (W,F )die Zusammenhangskomponente von G, die u enthalt. Dann markiert DFS(G, u) alle Knoten undKanten von G, die in H liegen, als bekannt. Die Kantenmenge F := {{w, vor[w]} : w ∈W \ {u}}bildet einen aufspannenden Baum von H. Die Laufzeit betragt O(|V | + |F |).

Beweis: Die Laufzeit der Tiefensuche kann wie folgt abgeschatzt werden: jeder Knoten wird hochs-tens einmal in DFS-visit aufgerufen, danach ist er bekannt und kann nicht noch einmal aufgerufenwerden. Wenn DFS-visit fur Knoten v aufgerufen wird, entstehen Kosten in der Hohe von maximaldeg(v). Also in der Summe O(|V | + ∑

v∈W deg(w)) = O(|V | + |F |) ergibt.

Ansonsten verlauft der Beweis analog zu den Beweisen von 1.27 und 1.29. �

9

2 Kurzeste Wege, minimal spannende Baume, Matroide

2.1 Kurzeste Wege

Definition 2.1 (Kurzeste Pfade Problem, vergleiche auch Definition 1.8) Gegeben ein GraphG = (V,E) mit einer Langen- (oder Gewichts-) Funktion � : E → R≥0, sowie s, t ∈ V . Gesucht istein s, t-Pfad P = (W,F ) ⊆ G mit minimaler Lange

dist(s, t) := �(P ) :=∑e∈F

�(e).

Lemma 2.2 Sei P = (v1, . . . , vk) ein kurzester v1, vk-Pfad. Dann ist fur alle 1 ≤ i ≤ j ≤ k derPfad (vi, . . . , vj) ein kurzester vi-vj-Pfad.

Beweis: Klar durch Einsetzen eines angeblich kurzeren Pfades. �

Algorithmus 2.3Input: Graph G = (V,E), Langenfunktion � : E → R+, Knoten s ∈ VOutput: Feld “abst“Dijkstra(G, �, s)(1) foreach x ∈ V \ {s} do abst[x] := ∞(2) abst[s] := 0(3) Q := V(4) while Q �= ∅(5) x := Knoten in Q mit kleinstem abst[.]-Wert(6) Q := Q \ {x}(7) foreach y ∈ N(x) ∩Q(8) abst[y] := min{abst[y], abst[x] + �({x, y})

Proposition 2.4 Der Algorithmus von Dijkstra hat Laufzeit O(n2) und berechnet abst[x] = dist(s, x)fur alle x ∈ V .

Beweis: . . . �

Bemerkung 2.5a) Bei der Distanzberechnung in einem ungewichteten Graphen mittels Breitensuche ”reichte“ dieReihenfolge in Q. Hier muss genauer geschaut werden (und jedesmal ein ”neues“ Minimum gebildetwerden, weil sich die abst[.]–Werte permanent andern; daher auch die hohere Laufzeit. Durch dieBenutzung von intelligenteren Datenstrukturen (zB sogenannten Fibonacci-Heaps) lasst sich dasVerfahren auf O(m+ n logn) beschleunigen.b) Der Algorithmus von Dijkstra breitet sich kreisformig um den Startknoten aus und arbeitetnicht zielgerichtet. Dies wird im sogenannten A∗-Algorithmus verbessert – siehe eventuell in denUbungen.c) Der Algorithmus von Dijkstra funktioniert nicht, wenn es Kanten mit negativer Lange gibt.Warum nicht?d) Der Algorithmus von Dijkstra bestimmt mit abst[x] = dist(s, x) nur die Lange von kurzestens, x-Pfaden, nicht aber die Pfade selber. Wie kann man das leicht andern?

Vorlesung 8.11.

Definition 2.6 Ein gerichteter, gewichteter Graph ist ein Tupel �G = (V, �E, �) mit endlicher Kno-tenmenge V �= ∅, gerichteter Kantenmenge E ⊆ V × V und Gewichtsfunktion � : �E → R. Furs, t ∈ V definieren wir:

• ein gerichteter s, t-Weg ist eine Folge von Knoten W = (v1, . . . , vk) mit k ≥ 1 und s = v1,t = vk und (vi, vi+1) ∈ �E fur alle i ∈ [k − 1],

10

• ein gerichteter s, t-Pfad ist ein gerichteter s, t-Weg mit paarweise verschiedenen Knoten, d.h.vi �= vj fur alle i �= j ∈ [k],

• ein gerichteter Zyklus ist ein gerichteter Weg (v1, . . . , vk) mit k ≥ 1 und (vk, v1) ∈ �E,

• ein gerichteter Kreis ist ein gerichteter Pfad (v1, . . . , vk) mit k ≥ 2 und (vk, v1) ∈ �E.

Das Gewicht eines Weges/Pfades ist definiert durch �(W ) :=∑k−1

i=1 �((vi, vi+1)), das Gewicht einesZyklus/Kreises ist definiert durch �(W ) := �((vk, v1)) +

∑k−1i=1 �((vi, vi+1)).

�G heißt stark zusammenhangend, wenn fur alle s, t ∈ V ein s, t-Weg in �G existiert. Die Distanz vons zu t ist definiert als

dist(s, t) :={

min{�(W ) : W ist ger. s, t−Weg} : falls es einen ger. s, t-Weg gibt,∞ : sonst.

Proposition 2.7 Sei �G = (V, �E, �) stark zusammenhangend. Dann gilt:a) Wenn es einen Zyklus W mit �(W ) < 0 gibt, dann gilt dist(u, v) = −∞ fur alle u, v ∈ V .b) Wenn es keinen solchen Zyklus gibt, dann gibt es zu jedem Paar u, v ∈ V einen u, v-PfadW = (v1, . . . , vk) mit �(W ) = dist(u, v) undc) fur alle i ≤ j ∈ [k] ist der Pfad (vi, . . . , vj) ein kurzester vi, vj-Weg.

Beweis: ... �

Bemerkung 2.8 Wir treffen die folgenden Vereinbarungen. Wir schreiben abgekurzt �(i, j) =�((i, j)). Außerdem setzen wir �(i, j) := 0 wenn i = j, und �(i, j) := ∞ wenn i �= j und (i, j) �∈ �E.

Wir wollen nun in dem veranderten Szenario (gerichteter Graph, eventuell negative Kan-tenlangen) die Distanzen dist(u, v) fur alle geordneten Paare u, v ∈ V bestimmen. Das folgendeLemma ist das Kernstuck des Algorithmus und illustriert die Strategie der dynamischen Program-mierung.

Lemma 2.9 Seien �G = (V, �E), � : �E → R und i, j ∈ [n] und k ∈ [0, n]. Es seien

Pki,j := {P = (v1, . . . , vr) : P ist gerichteter i, j-Pfad und v2, . . . , vr−1 ∈ [k]} ,

dki,j := min{�(P ) : P ∈ Pk

i,j}.Dann gilt:

dki,j =

{�(i, j) : falls k = 0min{dk−1

i,j , dk−1i,k + dk−1

k,j } : falls k ≥ 1

Beweis: ... �

Algorithmus 2.10Input: Graph �G = (V, �E), Langenfunktion � : E → R,Voraussetzung: �G habe keine Kreise negativer LangeOutput: n× n Matrix DFloyd–Warshall(G, �)(1) for i = 1 to n(2) for j = 1 to n(3) d0

i,j := �(i, j)(4) for k = 1 to n(5) for i = 1 to n(6) for j = 1 to n(7) dk

i,j := min{dk−1i,j , dk−1

i,k + dk−1k,j }

(8) return D := (dni,j)1≤i,j≤n

Proposition 2.11 Algorithmus 2.10 berechnet in O(n3) die Matrix D[i, j] = dni,j = dist(i, j) fur

alle Paare i, j ∈ [n].

11

Beweis: ... �

Angenommen, man hat die Distanzen berechnet. Was ist zu tun, um die kurzesten Pfade zuermitteln?

Bemerkung 2.12

a) Wir illustrieren die Pfadberechnung am Beispiel des Algorithmus Floyd–Warshall. Sei dazuP k

i,j ∈ Pki,j mit �(P k

i,j) = dki,j ; und sei πk

i,j der Vorganger von j auf P ki,j. Dann gilt:

π0i,j =

{i : falls i �= j und (i, j) ∈ �ENIL : sonst

πki,j =

{πk−1

i,j : falls dk−1i,j ≤ dk−1

i,k + dk−1k,j

πk−1k,j : falls dk−1

i,j > dk−1i,k + dk−1

k,j

b) Algorithmus 2.10 setzt voraus, dass der Graph keine Kreise negativer Lange besitzt. Wieuberpruft man das? Behauptung: G hat genau dann einen Zyklus negativer Lange. wenn es gibti, k ∈ [n] mit dk

i,i < 0.

Vorlesung 9.11.

2.2 Minimal spannende Baume

Definition 2.13 (minimal spannender Baum) Gegeben ein (ungerichteter) GraphG = (V,E)und eine Langenfunktion � : E → R≥0. Gesucht ist ein spannender Baum T = (V, F ) ⊆ G (engl:minimal spanning tree, kurz: MST), so dass �(T ) :=

∑e∈F �(e) minimal unter allen spannenden

Baumen von G ist.

Idee: Wir bauen den Baum sukzessive auf, indem zu einem bereits konstruierten Teilbaum diekurzeste Kante zwischen ”Baumknoten“ und ”Nicht-Baumknoten“ hinzugefugt wird.

Algorithmus 2.14 (Algorithmus von Prim)Input: Graph G = (V,E), Langenfunktion � : E → R≥0

Output: Baum T = (V, F )Prim(G, �)(1) Wahle beliebigen Knoten s ∈ V(2) W := {s}, F := ∅, σ[s] := 0(3) foreach v ∈ N(s) do vor[v] := s, σ[v] := �(s, v)(4) foreach v ∈ V \ (N(s) ∪ {x}) do vor[v] := NIL, σ[v] := ∞(5) while W �= V(6) y := Knoten mit minimalem σ[.]-Wert in V \W(7) W := W ∪ {y}, F := F ∪ {vor[y], y}(8) foreach z ∈ N(y) ∩ (V \W ) mit σ[z] > �(y, z)(9) σ(z) := �(y, z)(10) vor[z] := y

Satz 2.15 Der Algorithmus von Prim arbeitet korrekt und kann mit Laufzeit O(n2) implementiertwerden.

Beweis. Korrektheit: Nach jedem Durchlauf der WHILE-Schleife gilt:

(1) T = (W,F ) ist Baum auf W .

12

(2) Fur alle v ∈ V \W gilt

σ[v] = min{�(x, v) |x ∈W und {x, v} ∈ E}und σ[v] = �(vor[v], v).

(3) Es gibt einen minimalen spannenden Baum T ∗ mit T ⊆ T ∗.

Aus (1) und (3) folgt die Behauptung, daß der Algorithmus von Prim korrekt arbeitet.

Offensichtlich gelten (1) - (3) nach der Initialisierung.

Angenommen, (1) - (3) gelten zu Beginn einer WHILE-Schleife.

Sei T der zu Beginn der WHILE-Schleife konstruierte Baum, sei T ∗ ein minimal spannenderBaum, der T enthalt, und sei y der Knoten, der im jetzt folgenden Schleifendurchlauf neu zu Whinzugefugt wird. Dann gelten nach Konstruktion (1) und (2) auch nach Beendigung der WHILE-Schleife (bzgl. der neuen Menge W). Es bleibt, (3) zu zeigen.

Falls {y, vor[y]} ∈ E(T ∗), sind wir schon fertig.

Angenommen, dies ist nicht der Fall. Dann existiert Pfad P ∗ in T ∗, der vor[y] mit y verbindet.Sei {x′, v′} ∈ P ∗ die Kante, die W ”verlaßt”, mit x′ ∈ W und v′ ∈ V \W . Nach Wahl von y und(2) gilt

�(vor[y], y) = σ[y] ≤ σ[v′]≤ �(v′, x′).

Betrachte T := (T ∗\{v′, x′}) ∪ {vor[y], y} .

T ist spannender Baum in G (weil wieder zusammenhangend und n− 1 Kanten) der Lange

�(T ) = �(T ∗) − �(v′, x′) + �(vor[y], y)≤ �(T ∗)

Da T ∗ ein minimal spannender Baum ist, gilt �(T ) = �(T ∗), und T ist auch ein minimal spannenderBaum, der zudem T enthalt.

Laufzeit:

Die Initialisierung benotigt O(n) Schritte.

Die WHILE-Schleife wird (n − 1)-mal durchlaufen, und in jedem Durchlauf werden hochstensO(n)-Schritte benotigt, insgesamt also O(n2). �

Bemerkung: Es ist moglich, den Algorithmus von Prim mit O(m + n logn) Laufzeit zu imple-mentieren.

Hier die Idee fur einen noch einfacheren Algorithmus: Wahle in jedem Schritt die kurzesteKante uberhaupt, die keinen Kreis erzeugt.

Algorithmus 2.16 (Algorithmus von Kruskal)Input: Graph G = (V,E), Langenfunktion � : E → R+

Output: Baum T = (V, F )Kruskal(G, �)(1) Sortiere alle Kanten in E so, daß �(e1) ≤ · · · ≤ �(em);(2) F := ∅;(3) for i = 1 to m(4) if (V, F ∪ {ei}) kreisfrei then F := F ∪ {ei}

Satz 2.17 Der Algorithmus von Kruskal arbeitet korrekt und kann mit Laufzeit O((m + n) logn)implementiert werden.

13

Vorlesung 15.11.07

Beweis: Die Korrektheit beweisen wir im nachsten Abschnitt in einem allgemeinen Rahmen.

Zur Laufzeit: Sortieren kostet O(m logm) = O(m logn). Test auf Kreisfreiheit: wir konnen unsnicht n-mal einen O(m)-Test via BFS leisten. Stat dessen merken wir uns fur jede Komponenteeinen reprasentativen Knoten (R-Knoten). Jeder Knoten zeigt auf den R-Knoten seiner Kompo-nente (zu Beginn, beim leeren Graphen, auf sich selber). Jeder R-Knoten merkt sich außerdemnoch die Große seiner Komponente.

Wenn nun eine neue Kante ei = {x, y} im Algorithmus getestet wird, brauchen wir lediglichdie R-Knoten von x und y zu vergleichen: wenn sie gleich sind, liegen x und y in der gleichenKomponente und {x, y} darf nicht zu F hinzugefugt werden. Andernfalls liegt die Kante zwischenzwei Komponenten und darf hinzugefugt werden. In dem Fall wahlen sich alle Knoten der kleinerenKomponente den R-Knoten der großeren Komponente als neuen R-Knoten, und dieser R-Knotenmerkt sich, dass seine Komponente eine neue Große bekommen hat. Wir sagen, dass die Knotender kleineren Komponente korrigiert werden.

Ein Test (ob eine Kante eingefugt werden darf) geht mit dieser Datenstruktur in O(1). DasUpdate in einer Runde (in der eine Kante hinzugefugt wird) verursacht Kosten, die proportional zuder Anzahl der zu korrigierenden Knoten sind. Die Komponentengroße eines korrigierten Knotenverdoppelt sich mindestens. Das heißt, das jeder Knoten hochstens logn mal korrigiert wird, unddamit sind die gesamten Update Kosten O(n logn). �

2.3 Matroide

Definition 2.18 (Unabhangigkeitssystem, Matroid) Ein Unabhangigkeitssystem ist ein Paar(E, I), wobei E eine endliche Menge ist und ∅ �= I ⊆ P(E) und die die Bedingung

B ∈ I, A ⊆ B ⇒ A ∈ I (3)

erfullt ist. E heißt Grundmenge, die Mengen A ⊆ E mit A ∈ I heißen unabhangig, und die MengenB ⊆ E mit B �∈ I heißen abhangig.

Wenn außerdem noch gilt, dass

∀A,B ∈ I mit |A| < |B| : ∃e ∈ B \A mit (A ∪ {e}) ∈ I, (4)

dann nennen wir (E, I) ein Matroid.

Proposition 2.19 Sei G = (V,E) ein Graph und sei

I := {F ⊆ E : (V, F ) ist kreisfreier Graph }.Dann ist (E, I) ein Matroid.

Beweis: ... �

Proposition 2.20 Sei (E, I) ein Unabhangigkeitssystem. Dann gilt:a) ∅ ∈ I.b) (E, I) ist genau dann Matroid, wenn gilt:

∀A,C ∈ I, |A| + 1 = |C| : ∃e ∈ C \A mit (A ∪ {e}) ∈ I. (5)

Beweis: ... �

Proposition 2.21 Sei (E, I) ein Unabhangigkeitssystem, F ⊆ E und IF := {A ∈ I : A ⊆ F}.Dann gilt:a) (F, IF ) ist ein Unabhangigkeitssystem.b) Wenn (E, I) ein Matroid ist, dann ist auch (F, IF ) ein Matroid.(F, IF ) heißt das durch F induzierte Unabhangigkeitssystem.

14

Beweis: klar nach Definition. �

Definition 2.22 Sei U = (E, I) ein Unabhangigkeitssystem. Jede inklusionsmaximale unabhangi-ge Menge von I heißt Basis. Jede inklusionsminimale abhangige Menge von I heißt Kreis. Wirdefinieren den

oberen Rang von U := r+(U) := max{|B| : B Basis von U}

unteren Rang von U := r−(U) := min{|B| : B Basis von U}.Wenn R+(U) = r−(U) =: r(U), dann heißt r(U) Rang von U .

Mit dieser Definition kann man nun eine neue Charakterisierung von Matroiden angeben:

Lemma 2.23 Sei U = (E, I) ein Unabhangigkeitssystem. Dann gilt: U ist genau dann ein Matroid,wenn

∀F ⊆ E und UF := (F, IF ) gilt, dass r+(UF ) = r−(UF ).

Beweis: ... �

Lemma 2.24 Sei M := (E, I) ein Matroid, A ∈ I, e ∈ E, A ∪ {e} �∈ I. Dann enthalt A ∪ {e}genau einen Kreis.

Beweis. eventuell spater.

Vorlesung 16.11.07

Definition 2.25 Ein Maximierungsproblem uber einem Unabhangigkeitssystem E, I) ist gegebendurch eine Gewichtsfunktion � : E → R≥0 (und der Vereinbraung, dass fur Mengen A ∈ I wieder�(A) :=

∑e∈A �(e) sein soll). Gesucht ist eine Menge A∗ ∈ I mit

�(A∗) = maxA∈I

�(A).

Algorithmus 2.26 (Greedy–Algorithmus zur Maximierung uber Unabh.sys.)

Input: Unabhangigkeitssystem (E, I), Gewichtsfunktion � : E → R+

Output: Ag ∈ IGreedy–Max(E, I, �)(1) Sortiere E = {e1, . . . , em} so, daß �(e1) ≥ · · · ≥ �(em);(2) Ag := ∅;(3) for i = 1 to m(4) if Ag ∪ {ei} ∈ I then Ag := Ag ∪ {ei}

Dieser Algorithmus heißt Greedy–Algorithmus (engl. greedy = gierig), weil er in jedem Schrittden großtmoglichen Gewinn anstrebt. Eine von ihm gefundene Losung Ag ∈ I wollen wir Greedy–Losung von (E, I, �) nennen. Unser Ziel ist es nun, eine weitere Charaktersierung von Matoridenzu finden, namlich dass der Greedy–Algorithmus genau dann das Maximierungsproblem optimallost, wenn (E, I) ein Matroid ist. Tatsachlich werden wir noch mehr beweisen.

Definition 2.27 Sei U = (E, I) ein Unabhangigkeitssystem. Fur F ⊆ E setzen wir wieder UF :=(F, IF ) und

κ(F ) :=

{1 falls r+(UF ) = 0r−(UF )r+(UF ) falls r−(UF ) > 0

und nenne ρ(U) := min{κ(F ) : F ⊆ E} den Rangquotienten von U .

15

Bemerkung 2.28 Sei U = (E, I) ein Unabhangigkeitssystem. Dann gilt:a) ρ(U) ≤ 1.

b) U Matroid(2.23)⇔ ∀F ⊆ E: r+(UF ) = r−(UF )

(2.27)⇔ ρ(U) = 1.

Beispiel 2.29 Sei m ≥ 4 und E = {e1, . . . , em}, und

I := {{e1}} ∪ P({e2, . . . , em}).Dann ist U := (E, I) ein Unabhangigkeitssystem, aber kein Matroid.

Setze außerdem γ ∈ N und � : E → N definiert durch

�(e) :=

{γ + 1 fur e = e1,

γ fur e ∈ E \ {e1}.

Dann ist Ag = {e1}, aber die optimale Losung A∗ des Maximierungsproblems uber U ist gegebendurch A∗ = {e2, . . . , em}. Es gilt also �(Ag) und �(A∗) = (m − 1)γ. Außerdem ist r−(U) = 1 undr+(U) = m− 1. Man beobachtet also, dass

�(Ag)�(A∗)

=γ + 1

γ(m− 1)= (1 +

)1

m− 1≈ r−(U)r+(U)

.

Das folgende technische Lemma ist lediglich eine Rechenhilfe:

Lemma 2.30 Seien E = {e1, . . . , em}, A ⊆ E, � : E → R. Wir definieren fur alle j = 0, . . . ,mdie Mengen Ej := {e1, . . . , ej} und Aj := A ∩ Ej. Dann gilt

∑e∈A

�(e) =m∑

j=1

(�(ej) − �(ej+1))|Aj |,

wobei wir �(em+1) := 0 setzen.

Satz 2.31 Sei (E, I, �) eine Maximierungsaufgabe uber dem Unabhangigkeitssystem U = (E, I)mit Greedy-Losung Ag ⊆ E und optimaler Losung A∗ ⊆ E. Dann gilt

1 ≥ �(Ag)�(A∗)

≥ ρ(U),

und es gibt eine Gewichtsfunktion, fur die die zweite Ungleichung mit Gleichheit gilt.

Korollar 2.32 Sei U = (E, I) ein Unabhangigkeitssystem. Dann gilt: U ist genau dann Matroid,wenn der Greedy–Algorithmus 2.26 fur jede Funktion � : E → R≥0 eine optimale Losung derMaximierungsaufgabe (E, I, �) findet.

Vorlesung 22.11.07

Was hilft uns das alles bei dem Versuch, die Korrektheit von Kruskals Algorithmus (siehe 2.16und 2.17) zu beweisen?

Definition 2.33 Sei U = (E, I) ein Unabhangigkeitssystem und J := {B ∈ I : B ist Basis von I}.Dann heißt (E, J) das zu (E, I) gehorige Basissystem.Eine Minimierungsaufgabe uber einem Unabhangigkeitssytem (E, I) mit Kostenfunktion � : E → R

besteht darin, in dem zu (E, I) gehorigen Basissytem (E, J) eine Menge B∗ ∈ J mit �(B∗) =minB∈J �(B) zu finden.

Beispiel 2.34 Das Problem ”minimal spannender Baum“ (siehe Definition 2.13) in einem Gra-phen G = (V,E) mit � : E → R ist eine Minimierungsaufgabe uber dem Unabhangigkeitssystem(E, I) mit � : E → R, wobei I := {F ⊆ E : (V, F ) ist kreisfrei}.

16

Proposition 2.35 Sei U = (E, I) ein Unabhangigkeitssystem und (E, J) das zugehorige Basis-system. Sei � : E → R eine Kostenfunktion und β := max{0,max{�(e) : e ∈ E}}. Definiereψ(e) := β − �(e) fur e ∈ E und ψ(A) :=

∑e∈A ψ(e) fur alle A ∈ I. Dann gilt:

βr−(U) − max{ψ(A) : A ∈ I} ≤ min{�(B) : B ∈ J} ≤ βr+(U) − max{ψ(A) : A ∈ I}.

Beweis: ... �

Korollar 2.36 Sei U = (E, I) ein Matroid, (E, J) zugehoriges Basissytem, � : E → R eineKostenfunktion und β und ψ so wie in 2.35 definiert. Wir betrachten den allgemeinen Greedy–Minimierungsalgorithmus uber Unabhangigkeitssystemen, den wir aus dem Algorithmus 2.16 er-halten, in dem wir die Bedingung ”(V,E ∪ {ei}) kreisfrei“ durch ”F ∪ {ei} ∈ I“ ersetzen. Danngilt:a) ψ(e) ≥ 0 fur alle e ∈ E.b) βr(U) − max{ψ(A) : A ∈ I} = min{�(B) : B ∈ J}.c) Der Greedy–Minimierungsalgorithmus angewendet auf (E, I, �) berechnet eine Menge B∗ ∈ Jmit �(B∗) = min{�(B) : B ∈ J}.

Beweis: ... �

Der Trick mit dem Aufaddieren von β, um die Zielfunktion nicht-negativ zu machen, funktio-niert hier, weil (anders als bei dem Problem der kurzesten Wege) im Matroid alle Basen gleichviele Elemente enthalten.

Zum Abschluss noch ein kleiner Ausblick:

Bemerkung 2.37 Seien M1 := (E, I1), . . . , MK := (E, Ik) Matroide und � : E → R≥0. Dannist U := (E, I) mit I := I1 ∩ · · · ∩ Ik ein Unabhangigkeitssystem und fur den Rangquotientengilt: ρ(U) ≥ 1/k. Insbesondere liefert der Greedy–Algorithmus fur das Maximierungsproblem auf(E, I, �) eine Approximation der Gute

�(Ag)�(A∗)

≥ 1k.

Beweis: ohne. �

3 Flusse in Netzwerken

Vorlesung 16.11

Definition 3.1 (Netzwerk, Fluss) Ein Netzwerk ist ein Tupel N = (V, �E, s, t, c), wobei G =(V, �E) ein gerichteter Graph ist, s, t ∈ V zwei ausgezeichnetene Knoten benennen und c : �E → R≥0

eine Kapazitatsfunktion. Die Knoten s bzw. t werden Quelle bzw. Senke genannt. Fur einen Knotenv ∈ V schreiben wir

N+(v) := {w ∈ V : ∃(v, w) ∈ �E} N−(v) := {w ∈ V : ∃(w, v) ∈ �E}.

Eine Abbildung f : �E → R≥0 heisst s-t-Fluss (engl. flow) in N , wenn∑y∈N−(x)

f((y, x)) =∑

y∈N+(x)

f((x, y)) ∀x ∈ V \ {s, t} [Flusserhaltung] ,

f((x, y)) ≤ c((x, y)) ∀(x, y) ∈ �E [Zulassigkeit] ,

wobei wir im Folgenden der Einfachheit halber immer nur noch f(x, y) statt f((x, y)) und c(x, y)statt c((x, y)) schreiben werden. Der Wert von f ist definiert als

val(f) :=∑

y∈N+(s)

f(s, y) −∑

y∈N−(s)

f(y, s)

Ein Fluss f hat maximalen Wert in N , falls val(f) ≥ val(f ′) fur alle Flusse f ′ in N gilt.

17

Wenn es Kanten (x, y) und (y, x) mit f(x, y) ≥ f(y, x) > 0 gibt, dann erhalt man einen neuenFluss f ′ mit val(f) = val(f ′) durch f ′(x, y) := f(x, y)−f(y, x), f ′(y, x) := 0 und f ′(u, v) := f(u, v)fur alle anderen Kanten (u, v). Wir konnen also ab jetzt die folgende Vereinbarung treffen:

Fur jedes Knotenpaar x, y gilt: f(x, y) = 0 oder f(y, x) = 0.

Proposition 3.2 Jedes Netzwerk besitzt mindestens einen Fluss maximalen Werts.

Beweis: ... �

Definition 3.3 (Schnitt) Eine Menge X ⊆ V mit s ∈ X und t ∈ V \X heißt s-t-Schnitt (engl.cut). Die Kapazitat von X ist definiert durch

cap(X) :=∑

u∈X,v∈N+(u)\X

c(u, v)

Vorlesung 23.11.07

Lemma 3.4a) Wenn f ein Fluss und X ein s-t-Schnitt im Netzwerk N sind, dann gilt val(f) ≤ cap(X).b)

val(f) =∑

x∈X,y∈N+(x)\X

f(x, y) −∑

x∈X,y∈N−(x)\X

f(y, x)

Beweis: ... �

Bemerkung 3.5 Wir konnen das Flussproblem auch als LP formulieren. Dazu fuhren wir diefolgenden Bezeichnungen ein. Sei v ∈ V . Setze

δ−(v) := {(x, v) ∈ �E}, δ+(v) := {(v, y) ∈ �E}

n := |V |, m := | �E|, �E = {e1, . . . , em}, V = {s, t, v1, . . . , vn−2}cT = (ce1 , . . . , cem) ∈ Rm

≥0 mit cej := c(ej).

Mit unserer Losungsvariable x ∈ Rm≥0 beschreiben wir die Flusswerte der einzelnen Kanten: wenn

(a, b) = ej, dann soll xej = f(a, b). Unser LP lautet also

maxx∈R

muTx u.d.N. Cx = 0, 0 ≤ x ≤ c,

wobei uT = (ue1 , . . . , uem) ∈ Rm definiert ist durch

uej =

⎧⎪⎨⎪⎩

+1 : ej ∈ δ+(s)−1 : ej ∈ δ−(s)0 : sonst

und C = (Cvi,ej ) ∈ R(n−2)×m mit

Cvi,ej =

⎧⎪⎨⎪⎩

+1 : ej ∈ δ−(vi)−1 : ej ∈ δ+(vi)0 : sonst.

Die Matrix C nennt man auch die (Knoten-Kanten) Inzidenzmatrix, in diesem Fall von demgerichteten Graphen G− {s, t}.

18

Definition 3.6 (Restnetzwerk) Sei N = (V, �E, s, t, c) ein Netzwerk und f ein Fluss in N . DasRestnetzwerk von N bezuglich f ist definiert als Nf := (V, �Ef , s, t, cf ), wobei wir zunachst dieKapazitatsfunktion c mittels c(x, y) := 0 fur (x, y) �∈ �E auf ganz V ×V erweitern. Dann setzen wir

cf (x, y) :=

⎧⎨⎩

c(x, y) − f(x, y) falls f(x, y) > 0c(x, y) + f(y, x) falls f(y, x) > 0c(x, y) sonst

sowie �Ef := {(x, y) : cf (x, y) > 0}.

Lemma 3.7 Wenn f ein Fluss in N und W ein gerichteter Pfad im Restnetzerk Nf sind, dannsei 0 < δ := mine∈W cf (e) und definiere f ′ wie folgt:

(i) Falls (x, y) ∈W und δ < f(y, x), setze f ′(x, y) := 0 und f ′(y, x) := f(y, x) − δ.

(ii) Falls (x, y) ∈W und δ ≥ f(y, x), setze f ′(x, y) := f(x, y) + δ − f(y, x) und f ′(y, x) := 0.

(iii) Falls (x, y) �∈W und (y, x) �∈W , setze f ′(x, y) := f(x, y).

Dann ist f ′ ein Fluss in N mit val(f ′) > val(f). (Wir sagen, dass wir f ′ aus f durch Augmentierenvon f entlang von W erhalten haben.)

Vorlesung 29.11

Satz 3.8 (MaxFlowMinCut-Theorem) Sei N ein Netzwerk. Dann gilt:

maxf : Fluss in N

val(f) = minX: s-t-Schnitt in N

cap(X)

Korollar 3.9 Sei f ein Fluss in N . Wenn es in Nf keine s-t-Pfade mehr gibt, dann hat f maxi-malen Wert.

Algorithmus 3.10Input: Netzwerk N = (V, �E, s, t, c)Output: Fluss fFord-Fulkerson(N = (V, �E, s, t, c))(1) f := 0(2) while ∃ s-t-Pfad W in Nf

(3) augmentiere f entlang von W wie in Lemma 3.7

Satz 3.11 Sei N ein Netzwerk mit Kapazitaten aus N0. Dann terminiert Algorithmus 3.10 nachhochstens O(

∑u,v c(u, v)) Schritten mit einem Fluss maximalen Werts.

Bemerkung 3.12 Zwei Probleme bleiben: der Algorithmus ist zu langsam, und kann im Fallenicht naturlicher Kapazitaten eventuell gar nicht oder gegen einen suboptimalen Fluss konvergieren.Abhilfe: augmentiere in jeder Runde entlang mehrerer kurzester s-t-Pfade.

Definition 3.13 Sei N = (V, �E, s, t, c) ein Netzwerk und f ein Fluss in N . Der Fluss f heißtsaturiert, wenn es im Restnetzwerk Nf keinen f -augmentierenden Pfad gibt, der nur Kanten ausN benutzt.(Bemerkung: Wenn f maximalen Wert hat, dann ist f saturiert, aber nicht notwendigerweiseumgekehrt.)Das geschichtete Restnetzwerk ist definiert als GNf = (V ′, G�Ef , s, t, cf) mit

k := distNf(s, t), V0 := {s}, Vk := {t}, Vi := {x ∈ V : distNf

(s, x) = i},

V ′ := V0 ∪ · · · ∪ Vk, G�Ef :={

(x, y) ∈ �Ef : x ∈ Vi, y ∈ Vi+1, 0 ≤ i ≤ k − 1}.

19

Der Durchsatz eines Knotens v �∈ {s, t} ist definiert als

DS(v) := min{∑

(x,v)∈G�Ef

cf (x, v),∑

(v,x)∈G �Ef

cf (v, x)},

fur s bzw. t setzen wir

DS(s) :=∑

(v,x)∈G�Ef

cf (v, x), DS(t) :=∑

(x,v)∈G�Ef

cf (x, v).

Mit Hilfe dieser Konzepte entwickeln wir nun eine Verbesserung des Algorithmus 3.10. DieGrundidee ist dabei wie folgt: wir berechnen in jeder Runde einen saturierten Fluss im geschichtetenRestnetzwerk.

Vorlesung 30.11.

Algorithmus 3.14Input: GNf = (V ′, G�Ef , s, t, cf )Output: Fluss gMaxFlow(GNf = (V ′, G�Ef , s, t, cf))(1) g := 0(2) while es gibt s-t-Pfad in GNf

(3) v:=Knoten mit minimalem Durchsatz(4) g := PushFlow (GNf , v, g)(5) g := PullFlow (GNf , v, g)(6) aktualisiere Kapazitaten in GNf

(7) entferne rekursiv Knoten von Durchsatz 0 und(8) Kanten mit Kapazitaten 0 aus GNf

(9) (aber berechne kein neues Restnetzwerk)

Die Routine PullFlow ”druckt“ dabei (mittels einer BFS–ahnlichen Vorgehensweise) eineLadung der Große DS(v) vom Knoten v bis zum Knoten t entlang der Kanten des geschichtetenRestnetzwerks, siehe die folgende Psudocode–Beschreibung. Dies geht, weil v als Knoten mit mi-nimalem Durchsatz gewahlt war. Die Routine PullFlow arbeitet im kompletter Analogie und

”zieht“ die Ladung von s nach v.

Algorithmus 3.15Input: GNf = (V ′, G�Ef , s, t, cf ), Knoten v, Fluss gOutput: Fluss gPushFlow(v, g)(1) Q := {v}, push[v] := DS(v)(2) foreach x ∈ V ′ \ {v} do push[x] := 0(3) while Q �= {t}(4) v:=Dequeue (Q)(5) while push[v] �= 0(6) wahle Kante (v, x) ∈ G�Ef

(7) if cf (v, x) ≥ push[v] then(8) push[x] := push[x] + push[v](9) g(v, x) := g(v, x) + push[v](10) push[v] := 0(11) else(12) push[x] := push[x] + cf (v, x)(13) g(v, x) := g(v, x) + cf (v, x)(14) push[v] := push[v] − cf (v, x)(15) if x �∈ Q then Enqueue (Q, x)(16) return g

Lemma 3.16 Algorithmus 3.14 berechnet einen saturierten Fluss g in GNf .

20

Beweis: ... �

Algorithmus 3.17Dinic(N = (V, �E, s, t, c))(1) f := 0(2) while es gibt s-t-Pfad in GNf

(3) f := f+ MaxFlow (GNf )(4) berechne GNf neu

Lemma 3.18 Nach jedem Aufruf von MaxFlow innerhalb von Algorithmus 3.17 vergroßert sichder s-t-Abstand in GNf .

Satz 3.19 Algorithmus 3.17 findet einen Fluss maximalen Werts in O(n3) Schritten.

Beweis: Die Korrektheit, also die Optimalitat des Flusses, ist klar: Der Algorithmus terminierterst, wenn ein Fluss f gefunden ist, so dass GNf (und damit auch Nf ) keinen s-t-Pfad mehrbesitzt. Nach Korollar 3.9 hat f dann maximalen Wert.

Zur Laufzeit: Wegen Lemma 3.18 kann es maximal n Durchlaufe der Prozedur MaxFlow inAlgorithmus 3.17 geben. Es genugt also zu zeigen, dass ein MaxFlow–Durchlauf in O(n2) erledigtwerden kann.

Betrachte einen MaxFlow–Aufruf. Da in jeder while–Schleife mindestens ein Knoten mitDurchsatz 0 geloscht wird, kann es nur n solche Schleifendurchlaufe geben. Betrachte den i-tenDurchlauf der while–Schleife, 1 ≤ i ≤ n. In den PushFlow und PullFlow Routinen werden nunKanten bearbeitet. Wieviele? Jede bearbeitete wird anschließend entfernt (diejenigen mit Kapa-zitat 0) oder verbleibt. Letztere wollen wir beruhrt nennen. Sei mi bzw. m∗

i die Anzahl der im i-tenSchleifendurchlauf entfernten bzw. beruhrten Kanten.

Es ist offensichtlich, dass jede Kante des Netzwerks nur in maximal einer der Schleifen geloschtwerden kann, also gilt

∑i mi ≤ m. Außerdem kann in jeder der i–ten Schleife pro Knoten nur

maximal eine Kante beruhrt werden, denn wenn sie nicht entfernt, sondern nur beruhrt wurde,besteht kein Bedarf, eine weitere, aus diesem Knoten ausgehende Kante zu beruhren. Also giltm∗

i ≤ n. Insgesamt folgt damit:

Kosten(einmal MaxFlow) ≤n∑

i=1

Kosten in der i-ten while–Schleife ≤n∑

i=1

O(mi) + O(m∗i )

≤ O(m) +n∑

i=1

O(m∗i ) ≤ O(m) +

n∑i=1

O(n) = O(m+ n2) = O(n2).

Korollar 3.20a) Bei 0-1-Kantenkapazitaten hat der Algorithmus 3.17 eine Laufzeit von O(nm).b) Eine genauere Analyse zeigt: tatsachlich geht es bei 0-1-Kapazitaten sogar in O(n2/3m) Schrit-ten.c) Bei ganzzahligen Kantenkapazitaten berechnet der Algorithmus 3.17 einen Fluss mit ganzzahli-gen Flusswerten.

Beweis: a) Da bei 0-1-Kapazitaten keine beruhrten Kanten (sondern nur entfernte) Kanten auf-treten ergibt sich die Behauptung aus der vorangegangenen Laufzeitanalyse.

b) ohne.

c) Wenn die Kantenkapazitaten ganzzahlig sind und der Startfluss ganzzahlig ist, dann sindauch die Kapazitaten im Restnetzwerk ganzzahlig, somit auch die Durchsatze aller Knoten, unddamit ist dann auch der neue Fluss wieder ganzzahlig, und alles wiederholt sich. �

Vorlesung 7.12.

21

4 Matchings

Definition 4.1 Sei G = (V,E) ein Graph. Eine Menge M ⊆ E heißt Matching, falls fur allee, e′ ∈M mit e �= e′ gilt, dass e∩e′ = ∅. Ein Matching M heißt maximales Matching, wenn fur allee ∈ E \M gilt, dass M + e kein Matching ist. M heißt großtes Matching, wenn fur alle MatchingsM ′ gilt: |M | ≥ |M ′|. M heißt perfektes Matching, wenn 2|M | = |V | gilt. Offensichtlich ist eingroßtes Matching maximal, aber ein maximales Matching nicht notwendigerweise ein großtes. DieMatchingzahl

ν(G) := max{|M | : M ist Matching von G}ist definiert als die Kardinalitat eines großten Matchings von G.

Ein Knoten v heißt uberdeckt von M , wenn es eine Kante e ∈ M mit v ∈ e gibt. Eine MengeS ⊆ V heißt Knotenuberdeckung von G, wenn von jeder Kante in E mindestens ein Knoten in Sliegt.

τ(G) := max{|S| : S ist Knotenuberdeckung von G}heißt Knotenuberdeckungszahl.

Proposition 4.2 In jedem Graphen G gilt: ν(G) ≤ τ(G).

Beweis: ... �

Satz 4.3 (Satz von Konig) Sei G = (A ∪B,E) bipartit. Dann gilt:a) Ein großtes Matching von G lasst sich in O(n2/3m) Schritten berechnen.b) ν(G) = τ(G).

Beweis: a) Wir gehen zunachst alle Kanten von G durch und betrachten anschließend nur nochdie Menge V ′ der Knoten, die wenigstens einen Nachbarn haben. Dies geht in O(m) und fuhrt zueinem Graphen G′ mit m Kanten und n′ ≤ 2m Knoten. Jetzt konstruieren wir aus G′ wie folgt einNetzwerk N := (V ′ ∪ {s, t}, �E, s, t, c): fuge eine Kante von s zu jedem Knoten in A ∩ V ′ ein, undvon jedem Knoten in B ∩ V ′ zu t. Jede Kante aus E wird von ihrem Endknoten in A zu ihremEndknoten in B orientiert. Alle Kanten erhalten Kapazitat 1. Wir berechnen nun mit Hilfe vonAlgorithmus 3.17 einen Fluss f maximalen Werts in N und behaupten:1) M := {e ∈ �E ∩ (A×B) : f(e) = 1} ist ein Matching in G.2) val(f) = |M |.3) M ist großtes Matching in G.Das sieht man wie folgt ein: Nach Korollar 3.20 gilt, dass f ganzzahlig ist, wegen der Kapazitats-beschrankung gilt also f(e) ∈ {0, 1} fur alle e ∈ �E. Wegen Flusserhaltung ist M ein Matching inG′, also auch in G, damit ist 1) bewiesen. Außerdem gilt:

val(f) =∑

x∈A,y∈B

f(x, y) = |M |,

was 2) beweist. Und schließlich zu 3): M ist ein großtes Matching in G′, denn wir konnen zujedem Matching M ′ in G′ wie folgt einen Fluss f ′ in N konstruieren: die Kanten aus M ′ erhaltenFlusswert 1, die sie mit s und t verbindenden Kanten auch, alle anderen Kanten erhalten Flusswert0. Wegen der Matchingeigenschaft ist das ein Fluss, er hat Flusswert val(f ′) = |M ′|. Damit folgt:

|M ′| = val(f ′) ≤ max{val(f) : f Fluss in N} = val(f)2)= |M |,

also ist M großtes Matching in G′ und somit auch in G.

Wir konnen also mit Hilfe des Flusses f ein großtes Matching in G berechnen. Fur die Lauf-zeitberechnung erinnern wir uns daran, dass N genau n′ + 2 Knoten und m+ n′ Kanten hat, unddass n′ ≤ 2m gilt. Also konnen wir die Laufzeit gemaß Korollar 3.20 durch

O((n′ + 2)2/3(m+ n′) = O(n2/3m)

abschatzen.

22

b) Wir hatten in Proposition 4.2 bereits bewiesen, dass ν(G) ≤ τ(G) gilt. Um die umgekehrteUngleichung zu zeigen, konstruieren wir wieder ausgehend von G ein Netzwerk N ′: im Unterschiedzum Netzwerk N aus Teil a) ubernnehmen wir alle Knoten aus G (auch die ohne Nachbarn), unddie Kanten zwischen A und B erhalten Kapazitat ∞, ansonsten genauso wie in N . Wir berechnenwieder mit Hilfe von Algorithmus 3.17 einen Fluss f ′ maximalen Werts inN ′. Wegen Flusserhaltunghaben die Kanten zwischen A und B auch unter f ′ Flusswert ≤ 1, und damit folgt, dass beideFlusse gleichen Wert haben.

Sei nun X ⊆ A ∪B ∪ {s} ein s, t-Schnitt minimaler Kapazitat in N ′. Dann gilt:

cap(X) 3.8= max{val(f ′′) : f ′′ Fluss in N} = val(f ′) = val(f)a)= ν(G).

Man beachte, dass es in N keine Kanten von A∩X nach B \X geben kann, weil sonst cap(X) = ∞ware. Daraus folgt, dass die Menge C := (A \X) ∪ (B ∩X) eine Knotenuberdeckung von G ist.Weiterhin gilt, dass

cap(X) =∑

(s,v)∈ �E:v∈A\X

cap(s, v) +∑

(v,w)∈�E:v∈A∩X,w∈B\X

cap(v, w) +∑

(w,t)∈�E:w∈B∩X

cap(w, t)

= |A \X | + 0 + |B ∩X | = |C|.Also ist

τ(G) ≤ |C| = cap(X) = ν(G),

was zu zeigen war. �

Vorlesung 13.12.

Satz 4.4 (Heiratsatz von Hall) Sei G = (A ∪ B,E) bipartit. Dann besitzt G genau dann einMatching, das alle Knoten in A uberdeckt, wenn

∀S ⊆ A : |N(S)| ≥ |S|,wobei N(S) := {y ∈ V : ∃x ∈ S mit {x, y} ∈ E} die Nachbarschaft von S ist.

Beweis: ... �

Aus dem Satz von Hall lasst sich das folgende Korollar leicht ableiten:

Korollar 4.5 Sei G = (A ∪ B,E) bipartit. Dann gilt: G besitzt genau ein perfektes Matching,wenn |A| = |B| und fur jede Menge S ⊆ A gilt: |N(S)| ≥ |S|.

Beweis: ... �

Fur allgemeine (soll heißen: nicht–notwendigerweise bipartite) Graphen gibt es die folgendeDefektformel von Berge. Bezeichne mit q(G) die Anzahl Komponenten von G mit einer ungeradenAnzahl von Knoten. Definiere den Defekt von G als

def(G) := maxS⊆V

{q(G[V \ S]) − |S|}.

Satz 4.6 (Defektformel von Berge) Fur jeden Graphen G = (V,E) gilt: |V |−2ν(G) = def(G).

Beweis: Wir zeigen hier nur die einfache Richtung ≥: Sei S ⊆ V eine beliebige Teilmenge. Dannist

|V | − 2ν(G) = minimale Anzahl von nicht gematchten Knoten ≥ q(G[V \ S]) − |S|,denn nachdem man die Menge S entfernt hat, muss in jeder Zusammenhangskomponente mit einerungeraden Anzahl mindestens ein Knoten ungematcht bleiben, falls er sich nicht mit einem Knotenaus S zu einer Matchingkante zusammen tut. Ein Knoten in S kann das aber hochstens einmaltun, und damit bleiben mindestens q(G[V \ S]) − |S| Knoten ungematcht.

Da obige Ungleichung fur jede Teilmenge S gilt, muss auch |V | − 2ν(G) ≥ def(G) sein. �

23

Definition 4.7 Sei M ein Matching in G = (V,E). Ein Pfad in G heißt M -alternierend, falls er ab-wechselnd Kanten ausM und E\M benutzt. Ein Pfad in G der Lange ≥ 1 heißt M -augmentierend,falls er M -alternierend ist und Anfangs- und Endknoten nicht von M uberdeckt sind.

Proposition 4.8 Ein Matching M in G ist genau dann ein großtes Matching, wenn es keinenM -augmentierenden Pfad in G gibt.

Beweis: ... �

Vorlesung 14.12.

Korollar 4.9 Wenn es Matchings M1 und M2 in G mit |M1| > |M2| gibt, dann existieren |M1| −|M2| knotendisjunkte M2-augmentierende Pfade in G, die nur Kanten aus M1ΔM2 enthalten.

Beweis: siehe Beweis von Proposition 4.8. �

Damit ist die Idee fur unseren Algorithmus klar: beginnne mit dem leeren Matching, solangees noch augementierenden Pfade gibt, augmentiere das Matching entlang dieses Pfades, wenn eskeine mehr gibt, ist das Matching großtmoglich. Allerdings: wie sucht man nach augmentierendenPfaden bzw. stellt sicher, dass es keine mehr gibt?

Zunachst eine Definition und ein technisches Lemma:

Definition 4.10 Sei M ein Matching in G. Dann sei

�(M) :={ ∞ falls M großtes Matching

min{�(P ) : P ist großter M -augm. Pfad} sonst

Bemerkung 4.11a) Seien A1, . . . , At ⊆ A. Dann ist A1Δ . . .ΔAt die Menge aller Elemente aus A, die in genaueiner ungeraden Anzahl von Ai enthalten ist.b) Seien P1, . . . , Pt knotendisjunkte M -augmentierende Pfade. Dann ist

M ′ := MΔ (E(P1) ∪ · · · ∪ E(Pt)) = MΔE(P1)Δ . . .ΔE(Pt)

ein Matching mit |M ′| = |M | + t.

Beweis: ... �

Ahnlich wie bei den saturierten Flussen im geschichteten Restnetzwerk ist es nun von entschei-dender Bedeutung, dass nach einer gutgewahlten Augmentationsrunde der Parameter �(M) ummindestens eins wachst.

Lemma 4.12 Sei M Matching in G und P1, . . . , Pt eine inklusionsmaximale Menge von knotendis-junkten M -augmentierenden Pfaden der Lange �(M). Dann ist M ′ := MΔ (E(P1) ∪ · · · ∪ E(Pt))ein Matching mit

�(M ′) > �(M).

Beweis: folgt spater. �

Wir beschreiben nun unseren Algorithmus zunachst nur ungenau und werden spater in derLaufzeitanalyse die Details nachliefern.

24

Algorithmus 4.13Input: Graph G = (A ∪B,E)Output: Matching MHopcroft–Karp(G = (A ∪B,E))(1) M := ∅(2) while �(M) <∞(3) S:= nicht von M -uberdeckte Knoten in A(4) T := Knoten, die von S aus uber M -augmentierende Pfade der Lange

�(M) erreichbar sind.(5) bestimme mittels DFS ausgehend von den Knoten in T eine inklusi-

onsmaximale Menge knotendisjunkter M -augmentierender Pfade derLange �(M)

(6) augmentiere diese Pfade gleichzeitig

Satz 4.14 Algorithmus 4.13 findet in einem bipartiten Graphen ein großtes Matching und lasstsich mit einer Laufzeit von O(

√nm) Schritten implementieren.

Beweis: Wir erlautern zunachst, wie sich ein Durchlauf der while-Schleife in O(n+m) Schrittenimplementieren lasst. Die Menge S ist unmittelbar gegeben. Starte nun im ersten Knoten von Seine Breitensuche. Sobald ein ungematchter Nachbar auftaucht, wird �(M) = 1 festgelegt. Sind alleNachbarn gematcht, dann nehme – statt wie ublich die Nachbarn selber – die Matchingpartner derNachbarn in die Queue auf. Gehe zunachst nicht weiter in die Tiefe, sondern starte nun im nachstenKnoten von S eine analoge Breitensuche. Stoßt eine Breitensuche dabei auf Nachbarn, die schonvon einer anderen Breitensuche entdeckt wurden, dann wird die Kante bis dahin noch erkundet,die Nachbarn dann aber nicht weiterverfolgt. Wenn alle Knoten in S nur gematchte Nachbarnhaben, gehen die Breitensuchen einen Schritt weiter in die Tiefe. Die Breitensuchen verlaufen alsoso parallel wie moglich.

Auf diese Weise wird der Parameter �(M) und die Menge T bestimmt. Wir merken uns dabeizu jedem Knoten seinen Vorganger, der einen um eins kleineren Abstabd zu der Menge S hat.Hierbei wird jede Kante nur einmal beschritten, so dass nur der Aufwand O(n+m) anfallt.

Starte nun in einem beliebigen Knoten in T eine Tiefensuche und verfolge dabei die Vorgangerzuruck bis hin zu einem Knoten in S. Ein auf diese Weise einmal gefundener M–augmentierenderPfad der Lange �(M) wird als bekannt markiert. Starte nun die nachste Tiefensuche in einemneuen Knoten von T , bereits markierte Knoten werden dabei nicht wieder betrachtet. Auf dieseWeise findet der Algorithmus wiederum in O(n + m) die gewunschte inklusionsmaximale Mengeknotendisjunkter Pfade.

Wir zeigen nun noch, dass es nur O(√n) Aufrufe der while-Schleife gibt. Sei M∗ ein großtes

Matching. Nach jedem Durchlauf der while-Schleife erhoht sich nach Lemma 4.12 �(M) um mindes-tens eins. Sei M das aktuelle Matching nach

√n Durchlaufen, jetzt betragt �(M) also mindestens√

n.

Nach Korollar 4.9 existieren jetzt |M∗| − |M | knotendisjunkte (M -augmentierende) Pfade derLange mindestens

√n. Also muss (|M∗| − |M |)√n ≤ n. Dadurch ist die Anzahl der weiteren

Durchlaufe durch (|M∗| − |M |) ≤ n/√n =

√n beschrankt, und es gibt insgesamt hochstens 2

√n

Durchlaufe.

Da wir uns auf zusammenhangende Graphen beschranken konnen (betrachte andernfalls dieZusammenhangskomponenten einzeln), gilt O(n+m) = O(m) und es ergibt sich somit eine Laufzeitvon O(

√n(n+m) = O(

√nm). �

Vorlesung 20.12.

Es fehlt noch derBeweis: von Lemma 4.12. ... �

Angenommen, wir haben einen gewichteten Graphen gegeben und wollen nun nicht ein großtesMatching berechnen, sondern ein moglichst leichtes (oder schweres) perfektes Matching. Ein erster

25

Schritt ist eine elegante Beschreibung der perfekten Matchings eines Graphens.

Definition 4.15 Sei G = (V,E) ein Graph. PM(G) bezeichne die Menge der charakteristischenVektoren der perfekten Matchings von G, das heißt:

PM(G) :={x ∈ {0, 1}m : ∃ perfektes Matching M von G mit xe :=

{0 e �∈M1 e ∈M

}}

Proposition 4.16 Sei G = (V,E) ein Graph. ur Erinnerung: δ(v) := {e ∈ E : v ∈ e}. Dann gilt

PM(G) =

⎧⎨⎩x ∈ Rm : ∀v ∈ V :

∑e∈δ(v)

xe = 1, ∀e ∈ E : xe ∈ {0, 1}⎫⎬⎭

Beweis: ... �

Naturlich stort uns an dieser Beschreibung noch die Ganzzahligkeitsbedingung. Der erste na-heliegende Schritt ist die Ersetzung von xe ∈ {0, 1} durch xe ≥ 0, und das fuhrt zu der folgendenDefinition.

Definition 4.17

FPM(G) =

⎧⎨⎩x ∈ Rm : ∀v ∈ V :

∑e∈δ(v)

xe = 1, ∀e ∈ E : xe ≥ 0

⎫⎬⎭

Man beachte: PM(G) ist eine Familie von 0, 1-Vektoren, FPM(G) ist ein Polytop. Wie ver-halten sich PM(G) und FPM(G) zueinander? Offensichtlich gilt, dass PM(G) ⊆ FPM(G) gilt.Im Falle von bipartiten Graphen G konnen wir aber noch viel mehr sagen.

Satz 4.18 Sei G ein bipartiter Graph. Dann gilt: Die Ecken von FPM(G) sind ganzzahlig.

Beweis: Angenommen, x sei eine nicht–ganzzahlige Ecke von FPM(G). Sei E := {e ∈ E : 0 <xe < 1}. Wegen

∑e∈δ(v) xe = 1 beruhrt jeder Knoten, der eine Kante aus E beruhrt, mindestens

zwei. Also enthalt E einen Kreis C, und weil G bipartit ist, muss C gerade Lange haben. Setzedie Komponenten in d ∈ Rm abwechselnd auf −1 und +1 fur die Kanten in C, und auf 0 fur alleanderen Kanten. Fur ε > 0 klein genug liegt dann x+ εd und x− εd in FPM(G), aber dann kannx = 1

2 (x+ εd) + 12 (x− εd) nicht Ecke von FPM(G) sein; Widerspruch. �

Vorlesung 21.12.07

Inwiefern hilft uns nun die Aussage, dass die Ecken von FPM(G) ganzzahlig sind?

Proposition 4.19 Sei P ′ ein Polytop, S Menge mit S ⊆ P ′ ⊆ Rm, und sei S′ die Menge derEcken von P ′. Wenn S′ ⊆ S gilt, dann folgta) conv(S) = P ′,b) min{wTx : x ∈ S} = min{wTx : x ∈ P ′}.

Beweis: ... �

Korollar 4.20 Fur G bipartit gilt: conv(PM(G)) = FPM(G).

Beweis: folgt sofort aus Proposition 4.19. �

Damit haben wir ein Beispiel fur eine sehr allgemeine Strategie kennengelernt: gegeben eindiskreter Suchraum S, finde eine gute polyedrische Beschreibung P ′ (die moglichst wenige Neben-bedingungen benotigt) mit S ⊆ P ′, so dass die Ecken von P ′ in S liegen. Dies wollen wir jetztauch noch fur allgemeine (also nicht-notwenidig bipartite) Graphen G erreichen.

Lassen wir die Bedingung “bipartit” aus Satz 4.18 fallen, dann sind die Ecken immer noch “fastganzzahlig”:

26

Satz 4.21 Sei G = (V,E) ein Graph, x ∈ FPM(G). Dann gilt: x ist Ecke von FPM(G) genaudann, wenn fur alle e ∈ E gilt, dass xe ∈ {0, 1

2 , 1} und die Menge {e ∈ E : xe = 12} eine Familie

von knotendisjunkten, ungeraden Kreisen bildet.

Beweis: Angenommen, x sei von der obigen Form. Wir setzen w ∈ Rn durch

we :={ −1 xe = 0

0 xe > 0.

Dann ist wT x ≤ 0 eine gultige Ungleichung fur FPM(G) und wir behaupten, dass

FPM(G) ∩ {x : wT x = 0} = {x},womit x tatsachlich Ecke von FPM(G) ware. Die Aussage ⊇ in der Behauptung gilt, weil x ∈FPM(G) nach Voraussetzung und wTx = 0 nach Konstruktion.Angenommen, die Aussage ⊆ gelte nicht, das heisst, es gebe ein x ∈ FPM(G) mit wT x = 0 undx �= x.Wegen w ≤ 0 und x ≥ 0 darf x nur in den Komponenten positiv sein, wo auch x positiv ist (weilw dort 0 ist). Wenn xe = 1, dann xe′ = 0 fur alle zu e inzidenten e′ wegen

∑e∈δ(v) xe = 1. Also

ist auch dort xe′ = 0. Wegen∑

e∈δ(v) xe = 1 dann aber wiederum xe = 1.x konnte also von x nur in den Komponenten xe mit xe = 1

2 abweichen. Das geht aber auchnicht, da die entsprechenden Kanten ungerade Kreise bilden. Damit ist auch ⊆ in der Behauptungbewiesen.

Zeigen wir nun die umgekehrte Richtung in der Aussage des Satzes: sei x eine Ecke vonFPM(G). Dann existiert ein w ∈ Rm, so dass x eindeutige optimale Losung von

(P ) : max{wTx : x ∈ FPM(G)}ist.

Zunachst ist zu zeigen, dass xe ∈ {0, ,1} fur alle e ∈ E ist. Dazu konstruieren wir einen bipartiten

Graphen G′ wie folgt:

V (G′) := {u′ : u ∈ V (G)} ∪ {u′′ : u ∈ V (G)}, E(G′) := {{u′, v′′}, {u′′, v′} : {u, v} ∈ E(G)}.Sei außerdem w′ ∈ R2m der Vektor, den man durch Verdoppelung / Hintereinanderhangen von werhalt. Betrachte nun

(P ′) : max{(w′)Tx′ : x′ ∈ FPM(G′)}.Die optimale Losung wird (u.a.) in einer Ecke x′ von FPM(G′) angenommen. Nach Satz 4.18sind alle Ecken ganzzahlig, also auch x′. Setze nun x ∈ Rm durch xe = 1

2 (x′e′ + x′e′′). Dann ist xoptimale Losung von (P) (denn gabe es eine bessere, dann auch eine bessere fur (P’)), also mussx = x, denn x war ja eindeutige Losung von (P). Da x′ ganzzahlig, muss xe = xe ∈ {0, 1

2 , 1}.Bleibt zu zeigen, dass die Menge {e : xe = 1

2} eine Familie von knotendisjunkten ungeradenKreisen bildet. Es ist klar wegen

∑e∈δ(v) xe = 1, dass diese Kanten eine Familie von Kreisen bildet.

Hatte einer der Kreise eine gerade Lange, dann ergabe sich in der gleichen Weise ein Widerspruchdazu, dass x Ecke von FPM(G) ist, wie in Satz 4.18. �

Mit Hilfe dieses Satzes konnen wir nun die Nebenbedingungen in FPM(G) so verscharfen, dasswir wieder eine Beschreibung von conv(PM(G)) erhalten. Fur einen Graphen G = (V,E) und eineMenge S ⊆ V definieren wir δ(S) := {e = {x, y} ∈ E : x ∈ S, y ∈ V \ S}.

Satz 4.22 Sei G = (V,E) ein Graph. Setze

Q(G) ={x ∈ Rm : ∀v ∈ V :

∑e∈δ(v)

xe = 1, ∀e ∈ E : xe ≥ 0,

∀S ⊆ V mit |S| ≥ 3, |S| ungerade :∑

e∈δ(S)

xe ≥ 1}.

Dann ist conv(PM(G)) = Q(G).

27

Beweis: Zunachst ist klar nach Definition von Q(G), dass PM(G) ⊆ Q(G). Man kann nun zeigen,dass jede Ecke von Q(G) in conv(PM(G)) liegt – aber wir werden diesen Beweis in der Vorlesungnicht fuhren. Daraus folgt dann mit Proposition 4.19 die Aussage des Satzes. �

Vorlesung 10.1.08

5 Ganzzahlige lineare Optimierung

5.1 Ganzzahlige Polyeder

Definition 5.1 Sei L ⊆ Rn. L heißt Gitter (engl. lattice) des R

n, wenn es eine Basis {v1, . . . , vn}des R

n gibt mit

L =n∑

i=1

λivi : λ1, . . . , λ− n ∈ Z}.

{v1, . . . , vn} heißt Basis des Gitters. Zn heißt Standardgitter im R

n.

Bemerkung 5.2 Sei L ein Gitter des Rn. Dann gibt es eine regulare Matrix T ∈ Rn×n mitL = T (Z).

Beweis: ... �

Oft ist es von Interesse, den optimalen Punkt eines linearen Optimierungsproblems auf ei-nem solchen Gitter zu finden. Mit Bemerkung 5.2 wissen wir, dass wir uns hierfur im Folgendeno.B.d.A. auf das Standardgitter beschranken konnen.

Definition 5.3 Sei P ⊆ Rn ein Polyeder. Dann heißt PI := conv(Zn ∩ P ) die ganzzahlige Hulle

(engl. integer hull) oder auch ganzzahliger Kern von P . Gilt P = PI , dann heißt P ganzzahlig.

Bemerkung 5.4 Sei P ⊆ Rn und c ∈ R

n. Dann gilt:

maxx∈Z

n∩PcTx = max

x∈conv(Zn∩P )

cTx = maxx∈PI

cTx = maxx∈P

cTx

nach Definition 5.3 und den Ergebnissen der Optimierung 1. Insbesondere bedeutet dies, dass derOptimalwert eines linearen Optimierungsproblems auf einem ganzzahligen Polyeder P ⊆ R

n imFall c ∈ Z

n ganzzahlig ist.

Definition 5.5 Eine H-Darstellung {x ∈ Rn : Ax ≤ b} eines Polyeders heißt ganzzahlig, falls

A ∈ Zm×n und b ∈ Z

m gilt. Ein Polyeder P heißt rational, falls P eine ganzzahlige H-Darstellungbesitzt.

Satz 5.6 Sei P = {x ∈ Rn : Ax ≤ b, A ∈ R

m×n, b ∈ Rm}. Gilt P = PI , dann hat P eine

ganzzahlige H-Darstellung P = {x ∈ Rn : A′x ≤ b′, A′ ∈ Zm′×n, b′ ∈ Zm,m′ ≤ m}.

Beweis: ... �

Satz 5.7 Sei P ein rationales Polyeder. Dann besitzt P eine V-Darstellung

P = conv(V ) + cone(S)

mit endlichen Teilmengen V ⊆ Qn und S ⊆ Z

n.

Beweis: ... �

Man sieht also, dass es reicht, die Frage zu klaren, wann alle Ecken eines rationalen Polyedersganzzahlig sind. Diese Frage ist aber – wie wir ja schon am Beispiel des Matching–Polytops ge-sehen haben – oft schwer zu beantworten. Im Folgenden beschaftigen wir uns daher mit einigenhinreichenden Bedingungen fur die Ganzzahligkeit von Polyedern.

28

5.2 Unimodularitat und totale Unimodularitat

Definition 5.8 Sei A ∈ Qm×n. Fur jedes b ∈ Z

m setze P (b) := {x ∈ Rn : Ax ≤ b}.

Definition 5.9 Eine Matrix A ∈ Zm×n heißt unimodular, wenn rang(A) = n ist und fur jede

Teilmenge B ⊆ [m] mit |B| = n gilt, dass det(AB) ∈ {−1, 0, 1}.

Zunachst ein technisches Lemma.

Lemma 5.10 Sei C ∈ Zn×n regular. Dann sind folgende Aussagen aquivalent:

a) |det(C)| = 1,b) fur alle c ∈ Z

n gilt C−1c ∈ Zn,

c) C−1 ∈ Zn×n.

Beweis: ... �

Satz 5.11 Sei A ∈ Zm×n mit rang(A) = n. Dann sind die beiden folgenden Aussagen aquivalent:

a) A ist unimodular.b) Fur jedes b ∈ Z

m ist jede Ecke von P (b) ganzzahlig.

Beweis: ... �

Korollar 5.12 Seien A ∈ Zm×n unimodular und b ∈ Zm. Dann gilt P = PI .

Beweis: Folgt aus Satz 5.7 und Satz 5.11. �

Definition 5.13 Eine Matrix A ∈ Zm×n heißt total unimodular, wenn fur jede quadratische Teil-matrix C von A gilt, dass det(C) ∈ {−1, 0, 1}.

Bemerkung 5.14 Sei A ∈ Zm×n total unimodular. Dann gilt A ∈ {0,±1}m×n. Ferner ist jedeMatrix A′, die aus A durch Streichen von (bis zu m−1) Zeilen und (bis zu n−1)) Spalten entsteht,total unimodular.

Beweis: klar nach Definition. �

Satz 5.15 Die Matrix A ∈ Zm×n ist genau dann dann total unimodular, wenn

(A

En

)unimodular

ist (wobei En hier die n× n Einheitsmatrix ist).

Beweis: ... �

Satz 5.16 Sei A ∈ Zm×n und sei A′ eine der folgenden Matrizen:

AT ,−A, (A,Em),(A

En

),

(A

−A).

Dann ist A genau dann total unimodular, wenn A′ total unimodular ist.

Beweis: ... �

Korollar 5.17 Die Matrix A ∈ Zm×n ist genau dann total unimodular, wenn fur jeden Vektor

b ∈ Zm alle Ecken von {x ∈ R

n : Ax ≤ b, x ≥ 0} ganzzahlig sind.

Beweis: ... �

29

Satz 5.18 Sei A ∈ {0,±1}m×n. Dann sind aquivalenta) A ist total unimodular.b) Jede Teilmenge J der Spalten von A besitzt eine Zerlegung J = S ∪ T , so dass

∑j∈S Aj −∑

j∈T Aj ∈ {0,±1}m, wobei Aj die j-te Spalte von A bezeichne.c) Jede quadratische regulare Teilmatrix A′ von A besitzt eine Zeile mit ungerader Anzahl vonNichtnullelementen.d) Die Summe aller Elemente jeder quadratischen Teilmatrix mit geraden Zeilen- und Spaltensum-men ist durch 4 teilbar.e) Keine quadratische Teilmatrix hat Determinate ±2.

Beweis: ... �

Vorlesung 17.1.08

Korollar 5.19a) Sei A ∈ {0,±1}m×n mit genau zwei Nichtnull-Elementen pro Spalte. Dann ist A genau danntotal unimodular, wenn es eine Aufteilung der Zeilen von A in zwei Klassen gibt, so dass fur jedeSpalte gilt:

die zwei Nichtnull-Elemente einer Spalte gehoren zu verschiedenen Klassen genau dann,wenn sie gleiche Vorzeichen haben.

b) Sei A ∈ {0,±1}m×n mit genau einer +1 und einer −1 pro Spalte. Dann ist A total unimodular.

Beweis: ... �

Beispiel 5.20 Sei G = (V,E) ein vollstandiger bipartiter Graph, also

V = P1∪P2, |V | = n, |P1| = n1, |P2| = n2, E = {e1, . . . , em} mit m = n1 · n2.

Seien w = (w1, . . . , wm) ∈ Rm die Kantengewichte. Gesucht ist ein schwerstes Matching in G.

Sei M ein Matching in G. Dann definieren wir den fur M charakteristischen Vektor x ∈ Rm

durch xi := 1 genau dann, wenn ei ∈ M . Betrachte nun die Inzidenzmatrix A ∈ R(n1+n2)×(n1n2)

von G, bei der wir die Zeilen so arrangieren, dass die ersten n1 Zeilen die Knoten in P1 reprasen-tieren, die zweiten n2 Zeilen die Knoten aus P2.

Es gilt, dass x ∈ Rm genau dann charakteristischer Vektor eines Matchings in G ist, wenn

Ax ≤ 1 und x ∈ {0, 1}m, und daher konnen wir unser Optimierungsproblem wie folgt als ILPformulieren:

maxx∈R

m{wTx : Ax ≤ 1, x ∈ {0, 1}m}.

Die Matrix A hat genau zwei Nichtnull-Elemente pro Spalte. Wahle Klassen K1 = {1, . . . , n1} undK2 = {n1 + 1, . . . , n1 + n2}. Dann ist nach Korollar 5.19 A total unimodular, also hat P = {x ∈Rm : Ax ≤ b, x ≥ 0} nur ganzzahlige Ecken nach Korollar 5.17. Also hat das obige ILP dengleichen Wert wie das LP

maxx∈R

m{wTx : Ax ≤ 1, x ≥ 0}.

6 Travelling Salesman Problem

Definition 6.1 Sei G = (V,E) ein Graph. Ein Kreis in G mit |V | Knoten heißt Hamilton Kreis(HK) in G.

Wir werden uns (u.a.) mit dem Problem beschaftigen, zu einem gegebenem Graph G zu ent-scheiden, ob G einen Hamilton Kreis hat. Fur dieses Problem ist kein effizienter Algorithmus

30

bekannt, und wir werden mit Hilfe der NP-Vollstandigkeitstheorie zeigen, dass es vermutlich auchkeinen gibt.

Dazu mussen wir zunachst einige grundlegende Begriffe aus der Vorlesung des letzten Semesterswiederholen. (Entsprechend steht z.B. Definition I.6.4 fur Definition 6.4 aus Optimierung I.)

Wiederholung. In Definition I.6.4 haben wir die Klasse P derjenigen Probleme eingefuhrt,fur die es einen Algorithmus mit polynomialer Laufzeit gibt, der das Problem korrekt entscheidet.Die Klasse NP (siehe Definition I.6.7) enthalt alle Probleme, die in polynomialer Zeit korrektgelost werden konnen, wenn man ein sogenanntes Zertifikat mitgeliefert bekommt. Laut PropositionI.6.9 gilt, dass P ⊆ NP. (Achtung: NP steht fur Nondeterministic Polynomial, und nicht fur NotPolynomial.) Hinter der Klasse NP steht eine etwas gewohnungsbedurftige Definition – tatsachlichgenugt es aber fur unsere jetzigen Zwecke zu verstehen, dass NP eine sehr große Klasse ist, dienahezu alle naturlichen Optimierungsprobleme enthalt.

Im Gegensatz dazu mussen wir uns wieder sehr genau damit vertraut machen, wann ein ProblemL1 in ein Problem L2 uberfuhrt oder transformiert werden kann. In Definition I.6.10 haben wirfestgelegt, dass sich Problem L1 auf Problem L2 polynomial transformieren lasst (und schreibenL1≤p L2), wenn es ein Polynom p(n) gibt und wir zu jedem f1 ∈ Σ∗ ein f2 ∈ Σ∗ in Zeit hochstensp(|f1|) konstruieren konnen, so dass

f1 ∈ L1 ⇔ f2 ∈ L2.

Mit anderen Worten: L2 ist mindestens so schwer wie L1, denn wenn wir L2 losen konnten, dannkonnten wir mit Hilfe der obigen Transformation auch L1 losen.

Und schließlich die Definition I.6.12: ein ProblemL heißt NP-vollstandig (englisch: NP-complete,kurz: NPC), wenn L ∈ NP und fur alle L′ ∈ NP gilt, dass L′≤p L.

Die folgende Proposition erklat, warum es unwahrscheinlich ist, dass ein Problem, das mindes-tens so schwer ist wie ein NP-vollstandiges Problem, in polynomialer Zeit gelost werden kann.

Proposition 6.2 Wir betrachten zwei Probleme L und L∗. Wenn L∗ ∈ NPC und L∗≤p L undL ∈ P, dann ist P = NP.

Beweis: ... �

Wir uben zunachst den Begriff der Transoformation an zwei sehr einfachen Beispielen.

Beispiel 6.3a) Das Problem Clique ist wie folgt definiert.Eingabe: Graph G und k ∈ N.Frage: Hat G eine k-Clique?

b) Das Problem Stabile Menge ist wie folgt definiert.Eingabe: Graph G und k ∈ N.Frage: Hat G eine k-stabile Menge?

c) Das Problem Knotenuberdeckung ist wie folgt definiert.Eingabe: Graph G und k ∈ N.Frage: Hat G eine k-Knotenubderdeckung?(Zur Erinnerung: eine k-Knotenubdereckung in G = (V,E) ist eine Menge S ⊆ V mit |S| = k, sodass fur alle Kanten e ∈ E gilt: e ∩ S �= ∅.

Offensichtlich gilt die folgende Beziehung:

S ⊆ V ist �-stabile Menge von G ⇔ V \ S ist (n− �)-Knotenuberdeckung von G. (6)

Es gilt: Clique ≤p Stabile Menge, wie man mit der offensichtlichen Transformation (G, k) �→(G, k) nachweist, wobei G := (V,

(V2

) \ E), denn G hat eine genau dann eine k-Clique, wenn Geine k-stabile Menge hat.

31

Es gilt: Stabile Menge ≤p Knotenuberdeckung, wie man mit der offensichtlichen Trans-formation (G, k) �→ (G,n − k) nachweist, denn G hat genau dann eine k-stabile Menge, wenn Geine n− k-Knotenuberdeckung hat.

Vorlesung 18.01.08

Definition 6.4 Ein Problem L heißt NP-schwer, wenn fur alle Probleme L′ ∈ NP gilt, dassL′≤p L.

Proposition 6.5 Wenn L NP-schwer ist und L ∈ P, dann ist P = NP.

Beweis: ... �

Wie zeigt man, dass ein Problem NP-schwer ist? Wegen der Transitivitat der Relation ≤p

genugt hier der Vergleich mit einem NP-schweren Problem.

Proposition 6.6 Wenn es ein NP-schweres Problem L∗ gibt mit L∗≤p L, dann ist auch L auchNP-schwer.

Beweis: ... �

Beispiel 6.7 Wir erinnern zunachst an das aussagenlogische Erfullbarkeitsproblem (engl.: Satis-fiability, kurz: SAT). Gegeben ist eine aussagenlogische Formel, z.B.

(x1 ∨ x2 ∨ x3) ∧ (x2 ∨ x5 ∨ x2) ∧ (x7 ∨ x1).

Hierbei sind x1, . . . , xn Variablen, die die die Werte ”wahr“ oder ”falsch“ annehmen konnen, xi

ist die Negation von xi. Ein Term der Form xi oder xi nennt man Literal. Eine ”Klammer“, wiesie in der obigen Formel auftritt, nennt man Klausel. Beim SAT-Problem erhalt man als Eingabedie Formel, und die Frage ist, ob es eine Belegung der Variablen mit wahr oder falsch gibt, sodassdie ganze Formel wahr wird. Mit k-SAT bezeichnet man den Spezialfall von SAT, bei dem jedeKlausel genau k verschiedene Variablen enthalt.

a) Offensichtlich gilt (mit Hilfe der Identitat als Transformation), dass 3-SAT ≤p SAT.

b) Umgekehrt haben wir in I.6.17 bewiesen, dass auch SAT ≤p 3-SAT.

c) Man kann zeigen, dass 2-SAT ∈ P gilt.

d) Der Grundstein der NP-Vollstandigkeitstheorie wird durch das Resultat, dass SAT NP-vollstandig ist, gelegt (siehe I.6.16). Damit haben wir also einen Ausgangspunkt, und somit folgtbeispielsweise aus b) und Proposition 6.6 sofort, dass 3-SAT NP-schwer ist.

Satz 6.8 3-SAT ≤p CLIQUE.

Beweis: ... �

Nach diesen Vorbereitungen konnen wir uns nun langsam unserem Eingangs gestellten Problemnahern.

Definition 6.9 Das Problem Hamiltonkreis (HK) erhalt als Eingabe einen Graphen G undsoll die Frage beantworten, ob G einen Hamiltonkreis enthalt.Das Problem gerichteter Hamiltonkreis (GK) erhalt als Eingabe einen gerichteten Graphen�G und soll die Frage beantworten, ob �G einen gerichteten Hamiltonkreis enthalt.

Satz 6.10 Knotenuberdeckung ≤p ger. Hamilton Kreis

32

Beweis: ... �

Mit dieser Transformation sind wir nun am Ziel. Wir haben gezeigt, dass

SAT ≤p 3-SAT ≤p Clique ≤p Stabile Menge ≤p Knotenuberdeckung

≤p ger. Ham.kreis ≤p ger. Ham.pfad ≤p Ham.pfad ≤p Ham.kreis

(die letzten drei Transformationen wurden in den Ubungen behandelt). Damit haben wir bewiesen,dass Hamiltonkreis ein NP-schweres Problem ist, und es daher vermutlich keine schnell zu uber-prufende Charakterisierung fur Graphen gibt, die einen Hamilton Kreis besitzen. Im Folgendenwollen wir aber kurz einige hinreichende Bedingungen kennenlernen.

Vorlesung 24.01.08

Bemerkung 6.11 Wenn G = (V,E) einen Hamilton Kreis hat, dann muss δ(G) := min{deg(v) :v ∈ V } ≥ 2.

Unser Ziel ist es zu zeigen: wenn δ(G) ≥ |V |/2, dann hat G einen Hamilton Kreis.

Lemma 6.12 Seien x, y zwei Knoten in G = (V,E) mit d(x) + d(y) ≥ n und {x, y} �∈ E. Danngilt: G hat genau dann einen HK, wenn G′ := (V,E ∪ {x, y}) einen HK hat.

Beweis: ... �

Korollar 6.13 Sei G = (V,E) ein Graph mit n = |V | ≥ 3.a) Wenn fur alle Paare x, y mit {x, y} �∈ E gilt, dass d(x) + d(y) ≥ n, dann hat G einen HK.b) Wenn δ(G) ≥ n/2, dann hat G einen HK.

Beweis: ... �

Definition 6.14a) Das Travelling Salesman Problem (TSP) erhalt als Eingabe einen vollstandigen GraphenG = (V,

(V2

)) und eine Kostenfunktion c : E → R≥0 sowie eine Zahl k ∈ R≥0. Die Frage lautet: Hat

G einen HK der Lange hochstens k? (Die “Lange” eines HK ist dabei die Summe der benutztenKantengewichte.) Jeder HK in G wird als TSP-Tour bezeichnet. Eine optimale TSP–Tour ist einekurzest mogliche TSP-Tour. Mogliche Varianten / Spezialfalle lauten:b) Metrisches TSP: Die Kostenfuntion c erfullt die Dreiecksungleichung, also dass

∀x, y, z ∈ V : d(x, y) + d(y, z) ≥ d(x, z).

c) Euklidisches TSP: Hier liegen die Knoten von V im R2 und c(x, y) := ‖x− y‖2.d) Rektilineares TSP: Hier liegen die Knoten von V im R2 und c(x, y) := ‖x− y‖1.

Satz 6.15 Alle oben genannten Varianten des TSP sind NP-vollstandig.

Wir werden spater mit einem starkeren Satz die NP-Vollstandigkeit der allgemeinen Variantea) zeigen.

Definition 6.16 Wir betrachten nun die Optimierungs– bzw. Suchvariante des TSP: Eingabe istein vollstandiger Graph G = (V,E) mit einer Kostenfunktion c : E → R≥0, gesucht ist eineoptimale TSP–Tour, die wir mit opt(G, c) bezeichnen wollen. Mit Lange einer Tour – oder kurz, L– bezeichnen wir die Summe der Kantengewichte, die in der Tour verwendet werden.

Ein Approximationsalgorithmus fur das TSP mit Approximationsgute r ∈ R≥0 ist ein Algorith-mus A, der zu jeder TSP-Eingabe (G, c) eine TSP-Tour A(G, c) berechnet, so dass

Lange(A(G, c))Lange(opt(G, c))

≤ r.

33

Vorlesung 25.01.08

Satz 6.17 Sei r beliebig, aber fest. Falls P �= NP, dann existiert kein polynomialer Approximati-onsalgorithmus fur TSP mit Gute r.

Beweis: ... �

Wir werden nun aber sehen, dass fur das metrische TSP sehr wohl Approximationsalgorithmenmit einer festen Gutegarantie existeren. Die Idee dabei ist, dass wir eine effizient berechenbareuntere Schranke fur die Lange von opt(G, c) brauchen.

Proposition 6.18 Eine optimale TSP-Tour in (G, c) ist mindestens so lang wie ein minimalspannender Baum in (G, c).

Beweis: ... �

Algorithmus 6.19Input: vollstandiger Graph G = (V,E), metrische Kostenfunktion c : E → R≥0

Output: TSP-Tour TMST–Heuristik(G = (V,E), c)(1) Berechne MST B in (G, c)(2) Verdoppele alle Kanten in B und erhalte Multigraph B′

(3) Berechne Euler Tour T in B′

(4) while es Knoten v gibt, der durch T mehrfach durchlaufen wird(5) ersetze konsekutive Kanten {a, v}, {v, b} durch {a, b}

Satz 6.20 Algorithmus 6.19 ist ein polynomialer Approximationsalgorithmus fur das metrischeTSP mit Gute 2.

Beweis: ... �

Wie konnen wir die Gute des Algorithmus noch verbessern? In Zeile (2) haben wir relativbrutal alle Kanten verdoppelt, um einen eulerschen Graphen zu erzwingen. Etwas sparsamer istdie Variante, die an dieser Stelle lediglich Matching–Kanten zwischen Knoten ungeraden Gradesin B einfugt.

Algorithmus 6.21Input: vollstandiger Graph G = (V,E), metrische Kostenfunktion c : E → R≥0

Output: TSP-Tour TChristofides–Heuristik(G = (V,E), c)(1) Berechne MST B in (G, c)(2) Sei U die Menge aller Knoten ungeraden Grades in B. Fuge ein in (G[U ], c)

leichtestes perfektes Matching zu B hinzu und erhalte B′.(3) Berechne Euler Tour T in B′

(4) while es Knoten v gibt, der durch T mehrfach durchlaufen wird(5) ersetze konsekutive Kanten {a, v}, {v, b} durch {a, b}

Satz 6.22 Algorithmus 6.21 ist ein polynomialer Approximationsalgorithmus fur das metrischeTSP mit Gute 1.5.

Beweis: Sei M das in Schritt (2) berechnete Matching. Wir behaupten:

L(M) ≤ 12L(opt(G[U ], c)) ≤ 1

2L(opt(G, c)). (7)

Die zweite Ungleichung ist offensichtlich. Die erste Ungleichung ergibt sich wie folgt: betrachteopt(G[U ], c). Dieser HK auf G[U ] induziert zwei perfekte Matchings in G[U ] (die erste, dritte,

34

funfte Kante usw., und die zweite, vierte, sechste Kante usw.). Eins davon hat eine Lange vonhochstens 1

2L(opt(G[U ], c)), also muss das leichteste perfekte Matching hochstens so lang sein.

Damit konnen wir nun ahnlich wie (aber besser als) im Falle der MST-Heuristik argumentieren.Sei wieder A die vom Algorithmus berechnete TSP–Tour.

L(A)L(opt)

≤ L(B′)L(opt)

=L(B) + L(M)

L(opt)

(7)

≤ L(B) + 12L(opt)

L(opt)6.18≤ L(opt) + 1

2L(opt)L(opt)

=32.

Vorlesung 31.01.08

Die bisherigen Approximationsalgorithmen fur das TSP haben den MST als untere Schranke furdie Lange einer optimalen TSP-Tour benutzt. Unser nachstes Ziel ist es, bessere untere Schrankenzu konstruieren.

Definition 6.23 Wir setzen

T (n) := {x ∈ {0, 1}(n2) : {e : xe = 1} bilden einen HK in Kn = ([n],

([n]2

))}

und bezeichnen conv(T (n)) als das TSP-Polytop. Zu gegebenem Kostenvektor c ∈ R(n2) lautet das

TSP-Problem also

min{cTx : x ∈ T (n)} = min{cTx : x ∈ conv(T (n))}.

Was uns aber fehlt, ist eine gute Beschreibung von conv(T (n)).

Proposition 6.24 Sei x ∈ Z(n2). Dann ist x ∈ T (n) genau dann, wenn

0 ≤ xe ≤ 1 ∀e ∈ ([n]2

)(8)∑

w:w �=v

x{v,w} = 2 ∀v ∈ [n] (9)

∑e∈(X

2 )xe ≤ |X | − 1 ∀∅ �= X ⊂ [n] (10)

Beweis: . . . �

Bemerkung 6.25P := {x ∈ R(n

2) : x erfullt (8),(9),(10) }heißt Subtour-Polytop. Es gilt conv(T (n)) ⊂ P . Welche weiteren Ungleichungen brauchen wir, umdas TSP-Polytop zu beschreiben, d.h. Gleichheit zu erzwingen? Zunachst geben wir ein ein paaraquivalente Umformungen fur Bedingung (10) an.

Proposition 6.26 Angenommen, x ∈ R(n2) erfulle (8) und (9). Dann sind aquivalent:∑

e∈(X2 )xe ≤ |X | − 1 ∀∅ �= X ⊂ [n] (vgl. 10)

∑e∈(X

2 )xe ≤ |X | − 1 ∀∅ �= X ⊆ [2, n] (11)

∑v∈S,w∈[n]\S

x{v,w} ≥ 2 ∀∅ �= X ⊂ [n] (12)

35

Beweis: . . . �

Wir halten fest, dass

min{cTx : x ∈ T (n)} ≥ min{cTx : x ∈ R(n2), x erfullt (8), (9) und (10), (11) oder (12) }.

Hier noch ein weiterer Ansatz fur eine weitere (?) untere Schranke.

Definition 6.27 Ein 1-Baum ist ein Subgraph H ⊆ ([n],([n]2

)), der sich aus einem spannenden

Baum auf den Knoten {2, . . . , n} und zwei zu Knoten 1 inzidenten Kanten zusammensetzt.

Proposition 6.28 Die Kosten eines minimalen 1-Baums sind eine untere Schranke fur die Kosteneiner optimalen TSP-Tour.

Beweis: Klar – jede TSP-Tour ist ein 1-Baum. �

Dies ergibt im allgemeinen keine gute untere Schranke. Betrachte beispielsweise den folgendenGraphen mit den Knoten 1, 2, 3, 4, 5 und den Kosten 100 fur die Kante {1, 5}, Kosten 1 fur dieKante {1, 4}, Kosten 10 fur die Kanten {2, 3}, {2, 4} und {3, 4}, sowie Kosten 0 fur alle anderenKanten.

Offensichtlich gibt es einen 1-Baum mit Kosten 0. Und eine TSP-Tour mit Kosten 10 findetsich auch schnell. Wir wurden gerne zeigen, dass das eine optimale TSP-Tour ist – scheinbar hilftuns die untere Schranke durch den 1-Baum dabei nicht.

Doch, und zwar mit folgendem Trick. Addiere Kosten 10 auf alle in Knoten 5 inzidenten Kanten.1) Jetzt wachsen die Kosten unserer TSP-Tour um 20 auf Kosten 30.2) Es lasst sich schnell uberprufen, dass die Kosten eines optimalen 1-Baums ebenfalls auf 30wachsen. Das heißt: jede TSP-Tour in dem neuen Graph muss mindestens Kosten 30 haben.3) Dann muss aber in dem alten Graph jede TSP-Tour Kosten mindestens 10 gehabt haben.Warum? Beweis durch Widerspruch: Angenommen, es hatte eine mit Kosten 10 − ε gegeben,dann hatte die gleiche Tour im neuen Graphen genau 20 mehr gekostet (denn wir hatten nur denAufschlag von genau 10 + 10 fur die zwei in Knoten 5 inzidenten Kanten zahlen mussen), unddamit hatten wir in dem neuen Graphen eine Tour mit Kosten 30− ε gehabt, im Widerspruch zu2).

Wir haben also durch den 1-Baum indirekt doch eine untere Schranke von 10 fur TSP-Tourenim alten Graphen gezeigt.

Wir ubersetzen das in einen allgemeinen Satz. Zu der Operation ”erhohe die Kosten aller in 5inzidenten Kanten um 10“ sagen wir, dass ”Knoten 5 die Knotennummer −10 erhalt und schreibeny5 := −10“.

Satz 6.29 Sei c :([n]2

) → R≥0, (y1, . . . , yn] ∈ Rn beliebig, Setze fur alle e = {u, v} ∈ ([n]2

)die

modifizierten Kosten auf ce := ce − yu − yv.Seien die Kosten eines minimalen 1-Baums bei Kosten c durch K gegeben. Dann ist K+2

∑v∈V yv

eine untere Schranke fur eine optimale TSP-Tour bei Kosten c.

Beweis: ... �

Vorlesung 01.02.08

Unser Ziel ist es nun, zu zeigen, dass man (bei optimaler Wahl der Knotennummer yi) in derobigen Proposition tatsachlich die gleiche Schranke wie durch das Subtourpolytop erzielt. Um daseinzusehen, mussen wir zunachst den Wert eines optimalen 1-Baums durch ein LP beschreiben.

Satz 6.30 (Spannende–Baume–Polytop) Sei G = (V,E) ein (diesmal nicht notwendigerweisevollstandiger) Graph mit |V | = n und |E| = m. Dann ist die konvexe Hulle der charakteristischen

36

Vektoren von spannenden Baumen in G genau die Menge der Vektoren x ∈ Rm, die die folgendenEigenschaften erfullen:

0 ≤ xe ≤ 1 ∀e ∈ E (vgl. 8)∑e∈E(G[X])

xe ≤ |X | − 1 ∀∅ �= X ⊂ V (13)

∑e∈E

xe = n− 1 . (14)

Insbesondere gilt, dass fur einen Kostenvektor c ∈ R≥0m der Wert eines minimal spannenden

Baums von G gegeben ist durch min{x : Rm : x erfullt (8), (13), (14)}.Beweis: Offensichtlich erfullen Konvexkombinationen von charakteristischen Vektoren spannenderBaume obige Bedingungen. Der Beweis der umgekehrten Richtung muss in der VL leider entfallen.�

Korollar 6.31 (minimaler 1-Baum) Sei c ∈ R≥0(n2) und betrachte vollstandigen Graphen ([n],

([n]2

)).

Dann sind die Kosten eines minimalen 1-Baums bzgl. Kosten c gegeben durch

min{cTx : x ∈ R(n

2) mit

0 ≤ xe ≤ 1 ∀e ∈(

[n]2

)(vgl. 8)∑

e∈(X2 )xe ≤ |X | − 1 ∀∅ �= X ⊆ [2, n] (vgl. 11)

∑e∈([2,n]

2 )xe = n− 2 (15)

∑w∈[2,n]

x{1,w} = 2}

(16)

Beweis: Klar nach Definition eines 1-Baums und 6.30. �

Satz 6.32 Maximiert man den Wert des minimalen 1-Baums uber alle Knotennummern y, dannerhalt man den gleichen Wert wie bei Minimierung uber dem Subtour-Polytop in 6.25.

Beweis: ... �

Lagrange-Relaxation

Hinter der obigen Methode steht das allgemeine Prinzip des Lagrange–Relaxation. Betrachte dasILP

(P ) : z∗ := minx∈R

n{cTx : Ax = b, Bx = d, x ≥ 0, x ∈ Z

n}

Vergleiche dies mit

(Dy) : L(y) := minx∈Rn

{cTx+ (d−Bx)T y : Ax = b, x ≥ 0, x ∈ Zn}.

Dann gilt fur jedes y, dass z∗ ≥ L(y), denn wenn x die Bedingung aus (P ) erfullt, dann auch dieBedingung aus (Dy) fur jedes y und cTx = cTx+ (d−Bx)T y = L(y).

Bilde dann die beste untere Schranke

u∗ := maxy

L(y).

37

Branch-and-Bound Verfahren

Der Hauptgrund fur die Entwicklung von guten unteren Schranken ist, dass man sie fur sogenannteBranch-and-Bound Verfahren braucht. Angenommen wir haben eine (nicht-notwendigerweise op-timale) TSP-Tour T ∗ berechnet und haben eine untere Schranke L fur die Lange einer optimalenTour. Jetzt wollen wir den Abstand zwischen c(T ∗) und L verringern.

Definition 6.33 Fur A,B ⊆ ([n]2

)setzen wir

SA,B := {TSP–Touren T : A ⊆ T,B ∩ T = ∅},also die Touren, die alle Kanten aus A und keine aus B enthalten. Die SA,B stellen die Knoten ineinem ((eventuell sehr großen) Hilfsbaum dar.

Algorithmus 6.34Input: TSP–Eingabe (G, c), Tour T ∗, untere Schranke LOutput: optimale Tour T ∗Branch–and–Bound(G, c, T ∗, L)(1) Sei R := c(T ∗) und beginne mit dem einelementigen Hilfsbaum mit aktivem

Knoten S∅,∅.(2) Wahle aktiven Knoten SA,B im Hilfsbaum und deaktiviere ihn.(3) Wahle Kante e �∈ A ∪B. Setze A′ := A ∪ {e} und B′ := B ∪ {e}.(4) foreach S′ ∈ {SA′,B, SA,B′}(5) berechne untere Schranke L′ fur alle Touren in S′

(6) if S′ = {T } and c(T ) < R then T ∗ := T , R := c(T ∗)(7) if |S′| > 1 and L′ < R then nehme S′ als aktives Kind von SA,B in

den Hilfsbaum auf(8) gehe zu 2)

Bemerkung 6.35a) Algorithmus 6.34 hat im schlimmsten Fall Laufzeit O(2(n

2)) und findet immer eine optimaleTour.b) Die untere Schranke in Schritt 6) kann man beispielsweise durch Berechnung der LP-Relaxierung(Subtour-Polytop) unter Hinzufugen der Gleichung xe = 1 bzw xe = 0 gefunden werden. c) Wichtigist weiterhin eine ”gute“ Wahl der Starttour T ∗, des aktiven Knotens in Schritt 2) und der Kantein Schritt 3). Hierfur gibt es verschiedene Rezepte.d) Das Branch–and–Bound Verfahren lasst sich auch auf viele andere kombinatorische Optimie-rungsprobleme anwenden. Im Branching Schritt wahlt man eine nicht ganzzahlige Variable x∗i undverzweigt auf die Falle xi ≤ �x∗i � und xi ≥ �x∗i �. Fur den Bounding Schritt berechnet man danneine neue untere Schranke mit Hilfe der LP–Relaxierung inklusive neuer Ungleichung.

Vorlesung 07.02.08

Ausblick: Schnittebenenverfahren

Angenommen, die unteren Schranken, die man durch Berechnungen von Relaxationen erhalten hat,sind zu niedrig. Dann braucht man weitere Ungleichungen, die sich aus der Ganzzahligkeit ergeben.Wir brauchen dann noch weitere Ungleichungen, die das Polytop kleiner machen, ohne ganzzahligePunkte (also mogliche TSP-Touren) abzuschneiden.Wir wollen hier aber einen allgemeinen Ansatzkennenlernen, der nicht nur fur das TSP interessant ist. Dazu zunachst wieder ein Beispiel.

Beispiel 6.36 Sei P := {x ∈ Rn : Ax ≤ b} und sei P := {x ∈ Zn : Ax ≤ b} mit

A :=

⎛⎜⎜⎜⎜⎝

2 32 −2

−6 −2−2 −6−6 +8

⎞⎟⎟⎟⎟⎠ , b :=

⎛⎜⎜⎜⎜⎝

277

−9−11

21

⎞⎟⎟⎟⎟⎠ .

38

Wie man leicht (zB graphisch) verifiziert, gilt fur alle x ∈ P , dass x2 ≤ 6. Und der Punkt(4.5, 6) ∈ P zeigt, dass diese Schranke auch angenommen wird. Gleichzeitig kann man aber auchleicht feststellen, dass fur alle x ∈ P gilt, dass x2 ≤ 5 gilt. Wie lasst sich das jedoch beweisen?

Betrachten wir dazu zunachst den folgenden Trick. Dividiere die letzte Ungleichung durch 2 underhalte

−3x1 + 4x2 ≤ 10.5

Daraus ergibt sich aber fur alle x ∈ P , dass

−3x1 + 4x2 ≤ 10.

Multipliziere diese Ungleichung nun mit 2, und addiere dazu das 3-fache der ersten Ungleichung.Wir erhalten 17x2 ≤ 101, also x2 ≤ 5.94, nach Abrunden also x2 ≤ 5, wie gewunscht.

Proposition 6.37 Betrachte P := {x ∈ Rn : Ax ≤ b} und P := {x ∈ Zn : Ax ≤ b}, und seienaT

i die Zeilenvektoren von A. Seien y1, . . . , ym ∈ R≥0 gegeben, und setze c :=∑m

i=1 yiai ∈ Rn undd :=

∑mi=1 yibi ∈ R. Dann gilt fur alle x ∈ P :

cTx =∑

i

yiaTi x ≤

∑i

yibi = d,

und, falls c ∈ Zn, dann insbesondere fur alle x ∈ P , dass cTx ≤ �d�.

Definition 6.38 Seien die Bezeichnungen wie oben. Wenn c ∈ Zn, dann heißt die Ungleichung

cTx ≤ �d�

Gomory–Chvatal Schnittebene (cutting–plane). Man sagt, dass die Ungleichung cTx ≤ �d� durchy1, . . . , ym aus Ax ≤ b abgeleitet wurde.

Sei nun wTx ≤ t eine gultige Ungleichung fur die Punkte in P . Ein Schnittebenenbeweis furwTx ≤ t aus Ax ≤ b ist eine Folge von M Ungleichungen zusammen mit nichtnegativen Zahlen

y1,1, . . . , y1,m, y2,1, . . . , y2,m+1, . . . , yM,1, . . . , yM,m+M−1,

so dass fur alle k = 1, . . . ,M die Ungleichung aTm+kx ≤ bm+k durch yk,1, . . . , yk,m+k−1 aus den

vorangegangenen Ungleichungen abgeleitet wurde und am+M = w und bm+M = t.

Satz 6.39 Sei A ∈ Qm×n sowie P := {x ∈ Rn : Ax ≤ b} und P := {x ∈ Zn : Ax ≤ b}. Sei fernerwTx ≤ t fur alle x ∈ P . Dann existiert ein t′ ≤ t und ein Schnittebenenbeweis fur wTx ≤ t′ ausAx ≤ b.

Beweis: (nur skizziert) �

39