05.11.2012 Aufrufe

Kombinatorische Optimierung Approximation und Randomisierung ...

Kombinatorische Optimierung Approximation und Randomisierung ...

Kombinatorische Optimierung Approximation und Randomisierung ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Kombinatorische</strong> <strong>Optimierung</strong><br />

<strong>Approximation</strong> <strong>und</strong> <strong>Randomisierung</strong><br />

Barbara Langfeld Anand Srivastav<br />

Institut für Informatik<br />

Christian-Albrechts-Universität zu Kiel<br />

Sommersemester 2009<br />

http://www.numerik.uni-kiel.de/~lang/sose09/kopt2.html<br />

☞ Der folgende Text ist kein Skript; er ergänzt die Vorlesungsmitschrift (<strong>und</strong> ersetzt<br />

sie nicht). Der Text beinhaltet:<br />

• Sammlung der Handouts zu den Einzelvorlesungen,<br />

• Korrekturen/Ergänzungen zum Tafelanschrieb,<br />

• Literatur <strong>und</strong> weitere Quellen zur Vorlesung.<br />

Stand dieser Sammlung: 17. Juli 2009<br />

1


Handouts zur VL vom 20.04.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 0.3.1 (Kruskal-Algorithmus für MST).<br />

Eingabe: Zusammenhängender Graph G = (V, E), Kantengewichtung c : E → R.<br />

Ausgabe: Ein (minimal aufspannender) Baum T = (V, ET ).<br />

1: m ← |E|, ET ← ∅ ⊲ Initialisierung<br />

2: Sortiere die Kanten nach Gewichten: c(e1) ≤ . . . ≤ c(em)<br />

3: for i from 1 to m do<br />

4: if (V, ET ∪ {ei}) kreisfrei then<br />

5: ET ← ET ∪ {ei}<br />

6: end if<br />

7: end for<br />

8: Gib T = (V, ET ) aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 2


Handouts zur VL vom 22.04.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Beispiel 1.1.2.<br />

⎛<br />

∗<br />

⎜ 3<br />

C = ⎜<br />

⎝1/2<br />

2<br />

∗<br />

17<br />

0<br />

1<br />

∗<br />

⎞<br />

5<br />

2 ⎟<br />

5⎠<br />

4 7 1 ∗<br />

Beispiel 1.1.6.<br />

⎛<br />

∗<br />

⎜ 3<br />

C = ⎜<br />

⎝1/2<br />

·<br />

∗<br />

17<br />

·<br />

·<br />

∗<br />

⎞<br />

·<br />

· ⎟<br />

· ⎠<br />

4 7 1 ∗<br />

3<br />

1 2 2<br />

0 5<br />

1<br />

2<br />

1/2<br />

17<br />

4<br />

7<br />

1<br />

3 5 4<br />

1<br />

3<br />

2<br />

1/2 4<br />

17<br />

7<br />

3<br />

1<br />

4<br />

�<br />

�<br />

1 2 3 4<br />

π1 =<br />

3 2 1 4<br />

�<br />

�<br />

1 2 3 4<br />

π2 =<br />

1 2 3 4<br />

T = (1, 2, 3, 4, 1)<br />

T ′ = (1, 3, 4, 2, 1)<br />

Beispiel 1.2.5. Euklidisches Beispiel: Kosten sind euklidische Abstände.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 3


Handouts zur VL vom 22.04.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 1.2.4 (Christofides-Algorithmus).<br />

Eingabe: Eine symmetrische TSP-Instanz (Kn, c) mit Dreieckungleichung.<br />

Ausgabe: TSP-Tour.<br />

1: Berechne minimalen spannenden Baum S in (Kn, c). ⊲ z.B. mit Kruskal<br />

2: Setze V ′ := {v ∈ V : deg S(v) ist ungerade}.<br />

3: Berechne in (Kn, c) zwischen den Knoten aus V ′ ein perfektes Matching M mit<br />

minimalen Kosten. ⊲ z.B. mit Edmonds<br />

4: Setze G ∗ := (V, E(S) ∪ M); das ist möglicherweise ein Multigraph.<br />

5: Berechne eine Eulertour R in G ∗ .<br />

6: Aus R gewinne TSP-Tour T durch Shortcut-Technik.<br />

7: Gib T aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 4


Handouts zur VL vom 27.04.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Zur Sprechweise („Meist, aber nicht immer im Sinne von...“):<br />

Algorithmus: „lässt sich analysieren“, „Gütegarantie bekannt.“<br />

Heuristik: „produziert schnell eine zulässige Lösung“ (oft ohne Gütegarantie).<br />

Zwei Gr<strong>und</strong>ideen für Heuristiken:<br />

Insert-Heuristiken: Beginne mit Teillösung, erweitere sie durch „Einfügen“.<br />

z.B. MST: Subgraph Stück für Stück zum Baum erweitern.<br />

z.B. TSP: „Subtour“ Stück für Stück um Städte erweitern (s.u.).<br />

Verbesserungs-Heuristiken: Beginne mit (kompletter) Lösung, verbessere diese durch<br />

lokale Operationen.<br />

Bsp. Matching: Starte mit nicht erweiterbarem Matching, versuche durch lokales<br />

Kantentauschen ein größeres Matching zu finden („augmentierende Pfade“).<br />

Bsp. TSP: Starte mit Tour, nimm (z.B.) 2 Kanten aus der Tour <strong>und</strong> probiere,<br />

ob Ersetzen durch zwei andere Kanten eine kürzere Tour liefert. Iteriere das.<br />

☞ Für das TSP gibt es viele Heuristiken (2-Opt-Heuristik, Lin-Kernighan-Heuristik,<br />

Approximatonsschema von Arora,...), wir betrachten exemplarisch Insert-Heuristiken.<br />

Algorithmus 1.3.6 (TSP-Insert).<br />

Eingabe: Eine symmetrische TSP-Instanz, eine Heuristik NEXT ∈ {NEXTN, NEXTF , NEXTC}<br />

<strong>und</strong> ein Startknoten v1 ∈ V .<br />

Ausgabe: TSP-Tour.<br />

1: T1 ← (v1), i ← 1 ⊲ Initialisierung<br />

2: Bilde Ti+1 durch Einfügen von vi+1 := NEXT(Ti) in Ti.<br />

3: i ← i + 1<br />

4: falls i < n, also noch Knoten nicht besucht werden, gehe zu 2.<br />

5: Gib T aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 5


Handouts zur VL vom 29.04.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 1.5.1 (Allgemeines Schema für B & B im TSP).<br />

Eingabe: TSP-Instanz (Kn, c)<br />

Ausgabe: Optimale (also kostenminimale) TSP-Tour T ∗<br />

Es sei T die Menge aller TSP-Touren.<br />

1: Finde obere Schranke Soben ∈ [0, ∞] für optimale TSP-Tour.<br />

2: B ← ({T }, ∅)<br />

3: Markiere den Knoten T mit „aktiv“. ⊲ Ende der Initialisierung<br />

4: while es gibt aktiven B-Knoten do<br />

5: Wähle aktiven Knoten X ∈ B<br />

6: Markiere X als „inaktiv“.<br />

7: Erzeuge mit Branch(X) eine Partition X = X0 ˙∪ . . . ˙∪Xℓ(X).<br />

8: for i = 1, . . . , ℓ(X) do<br />

9: Ermittele mit Bo<strong>und</strong>(Xi) untere Schranke Sunten für alle Touren in Xi.<br />

10: if Xi = {T } <strong>und</strong> c(T ) ≤ Soben then<br />

11: Soben ← c(T ) <strong>und</strong> T ∗ ← T<br />

12: end if<br />

13: if |Xi| > 1 <strong>und</strong> Sunten ≤ Soben then<br />

14: B ← (V (B) ∪ {Xi}, E(B) ∪ {{X, Xi}})<br />

15: Markiere Xi mit „aktiv“.<br />

16: end if<br />

17: end for<br />

18: end while<br />

19: Gib T ∗ aus.<br />

20: procedure Branch(X) ... ist noch zu definieren ...<br />

21: end procedure<br />

22: procedure Bo<strong>und</strong>(X) ... ist noch zu definieren ...<br />

23: end procedure<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 6


Handouts zur VL vom 04.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 1.5.13 (Bo<strong>und</strong>).<br />

Eingabe: Disjunkte Mengen A, B ⊆ E<br />

Ausgabe: Untere Schranke Sunten für alle Touren in X(A, B).<br />

1: U ← {(ST1), (ST2)} ∪ {xe = 1 : e ∈ A} ∪ {xe = 0 : e ∈ B}<br />

2: Finde Lösung x ∗ ∈ R |E| des LPs<br />

min{c T x : x erfüllt alle (Un-)Gleichungen in U}.<br />

(Falls das LP unzulässig, setze X(A, B) auf „inaktiv“)<br />

3: Teste, ob x ∗ die Ungleichungen (ST3) erfüllt. ⊲ Prop. 1.5.11<br />

4: if x ∗ erfüllt (ST3) then<br />

5: Sunten ← c T x ∗<br />

6: if x ∈ {0, 1} |E| then<br />

7: T ← TSP-Tour, für die x ∗ Inzidenzvektor ist ⊲ T optimal in X(A, B)<br />

8: Ersetze X(A, B) im Suchbaum B durch {T } ⊲ Branch(X) unnötig<br />

9: end if<br />

10: else<br />

11: U ← U ∪ {verletzte Subtourungleichung}<br />

12: goto 2<br />

13: end if<br />

14: Gib Sunten aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 7


Handouts zur VL vom 04.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 1.5.21 (B & B im TSP mit 1-Bäumen).<br />

Eingabe: TSP-Instanz (Kn, c)<br />

Ausgabe: Optimale (also kostenminimale) TSP-Tour T ∗<br />

Es sei wie bisher T die Menge aller TSP-Touren.<br />

1: Finde 1-Baum E ′ in (Kn, c) mit kleinstem Gewicht<br />

2: if E ′ TSP-Tour then fertig, T ∗ ← E ′ goto 26<br />

3: end if<br />

4: Finde obere Schranke Soben ∈ [0, ∞] für optimale TSP-Tour.<br />

5: B ← ({T }, ∅), markiere den Knoten T mit „aktiv“.<br />

6: while es gibt aktiven B-Knoten do ⊲ Branch nach Algorithmus 1.5.3<br />

7: Wähle aktiven Knoten X(A, B) ∈ B, markiere X als „inaktiv“.<br />

8: Wähle e ∈ E \(A∪B) <strong>und</strong> setze X0 ← X(A, B∪{e}) <strong>und</strong> X1 ← X(A∪{e}, B).<br />

9: for i = 1, 2 do<br />

10: Suche kostenminimalen 1-Baum E ′<br />

11: mit den für Xi vorgegebenen/verbotenen Kanten. ⊲ Prop. 1.5.18<br />

12: if solch ein 1-Baum existiert nicht then markiere Xi mit „inaktiv“<br />

13: else<br />

14: Sunten ← c(E ′ )<br />

15: if E ′ TSP-Tour then<br />

16: Xi ← {E ′ } ⊲ besser als E ′ geht es in Xi nicht<br />

17: if c(E ′ ) ≤ Soben then Soben ← c(T ) <strong>und</strong> T ∗ ← E ′<br />

18: end if<br />

19: end if<br />

20: end if<br />

21: if |Xi| > 1 <strong>und</strong> Sunten < Soben then<br />

22: B ← (V (B) ∪ {Xi}, E(B) ∪ {{X, Xi}}), markiere Xi mit „aktiv“.<br />

23: end if<br />

24: end for<br />

25: end while<br />

26: Gib T ∗ aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 8


Handouts zur VL vom 04.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Beispiel 1.5.22 (Fortsetzung von Beispiel 1.5.17).<br />

e<br />

1<br />

2<br />

1<br />

1<br />

e’<br />

1<br />

3<br />

Nebenrechnungen:<br />

X(∅, {e})<br />

X({e}, ∅)<br />

X({e}, {e ′ })<br />

X({e, e ′ }, ∅)<br />

T = X(∅, ∅)<br />

X(∅, {e}) X({e}, ∅)<br />

X({e}, {e ′ }) X({e, e}, ∅)<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 9


Handouts zur VL vom 06.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 2.2.3 (KMB-Algorithmus).<br />

Eingabe: G = (V, E), T ⊆ V , c : E → R≥0<br />

Ausgabe: Steinerbaum B = (V (B), E(B))<br />

1: Berechne GT <strong>und</strong> ℓT (Distanzgraph mit Längenfunktion für T ), merke Dir dabei<br />

die kürzesten Wege zwischen Knotenpaaren aus T .<br />

2: Bestimme einen minimal spannenden Baum BT in GT .<br />

3: Transformiere BT in einen Subgraphen GS von G durch Ersetzen der Kanten von<br />

BT durch einen entsprechenden kürzesten Weg in G.<br />

4: Bestimme einen minimal spannenden Baum BS für GS.<br />

5: Erzeuge aus BS einen Steinerbaum B für T , indem sukzessive Kanten gelöscht<br />

werden, die zu den Blättern gehören, die keine Terminale sind.<br />

6: Gib B aus.<br />

Satz 2.2.5 (Korrigierte Fassung). Sei (G, T, c) eine Steinerbaum-Instanz, BOPT ein<br />

optimaler Steinerbaum <strong>und</strong> b die Anzahl der Blätter von BOPT. Der KMB-Algorithmus<br />

2.2.3 terminiert auf (G, T, c) erfolgreich in O(|T |n 2 ) Schritten. Für den berechneten<br />

Steinerbaum BKMB gilt<br />

�<br />

c(BKMB) ≤ 2 · 1 − 1<br />

�<br />

b<br />

· c(BOPT) klar<br />

≤ 2 · c(BOPT).<br />

Dass der Algorithmus 2.2.3 erfolgreich <strong>und</strong> mit der geforderten Laufzeit terminiert,<br />

haben wir in der VL besprochen. Die Güteschranke folgt aus dem folgenden Lemma:<br />

Lemma 2.2.6. Sei (G, T, c) eine Steinerbaum-Instanz <strong>und</strong> seien BOPT <strong>und</strong> b wie in<br />

Satz 2.2.5. Weiter sei BT ein MST in GT (vgl. KMB-Algorithmus 2.2.3). Dann gilt<br />

Beweis (korrigierte Fassung):<br />

c(BKMB) o.k.<br />

≤ ℓT (BT ) z.z.!<br />

�<br />

≤ 2 ·<br />

1 − 1<br />

b<br />

�<br />

· c(BOPT).<br />

– Betrachte in G eine Tour (einen geschlossenen Weg) R, der BOPT einmal „umläuft“<br />

<strong>und</strong> in einem Blatt startet (siehe rote Tour im Bild; Terminale sind als Quadrate<br />

dargestellt).<br />

Offenbar gilt<br />

c(R) = 2 · c(BOPT). (∗)<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 10


Handouts zur VL vom 06.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

– Sei B = {w1, . . . , wb} die Menge der Blätter von BOPT. Die Numerierung sei gemäß<br />

der Besuchsreihenfolge durch R gewählt. Wir erhalten so b Tourstücke<br />

(w1, . . . , w2), (w2, . . . , w3), . . . , (wb−1, . . . , wb), (wb . . . , w1),<br />

die Terminale aus B verbinden. Ein teuerstes dieser Tourstücke kostet mindestens<br />

c(R)<br />

b .<br />

– Sei R ∗ aus R durch Löschen eines teuersten Tourstückes hervorgegangen. O.E. sei<br />

R ∗ weiterhin ein Weg (nimm z.B. o.E. an, dass das letzte Tourstück (wb, . . . , w1)<br />

das gelöschte Tourstück war).<br />

Es gilt also<br />

c(R) − c(R ∗ ) ≥ c(R)<br />

(∗∗)<br />

b<br />

– Sind die Knoten in T = {t1, . . . , t|T |} in der Reihenfolge numeriert, in der R∗ sie<br />

besucht, so definiert dies den Weg W = (t1, . . . , t|T |) in GT (der nicht unbedingt<br />

Pfad sein muss). Wir identifizieren W mit dem Subgraphen von GT , der alle Kanten<br />

enthält, die W durchläuft.<br />

Damit ist W „spannend“, d.h. W enthält alle GT -Knoten <strong>und</strong> ist zusammenhängend.<br />

Insbesondere ist W mindestens so schwer wie ein MST in GT . Zusammen:<br />

ℓT (BT ) ≤ ℓT (W ) ≤ c(R ∗ ), (∗∗∗)<br />

wobei die letzte Ungleichung folgt, weil der durch R ∗ definierte Pfad von ti nach ti+1<br />

nach Definition von ℓT mindestens so viel kostet wie ℓT ({ti, ti+1}) (i ∈ [|T | − 1]).<br />

– Insgesamt:<br />

ℓT (BT ) (∗∗∗)<br />

≤ c(R ∗ ) (∗∗)<br />

≤ c(R) − c(R)<br />

b =<br />

�<br />

1 − 1<br />

b<br />

�<br />

· c(R) (∗) �<br />

≤ 2 · 1 − 1<br />

�<br />

b<br />

· c(BOPT).<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 11


Handouts zur VL vom 11.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Definition 2.3.1 (korrigierte Fassung). Seien G = (V, E) ein Graph, T ⊆ V <strong>und</strong><br />

c : E → R≥0. Ein Steinerbaum B bezüglich (G, T ) heißt voll, falls jedes Terminal in<br />

T Blatt von B ist.<br />

Sei k ∈ N mit k ≥ 2. Eine Menge � = {B1, . . . , Bℓ} von Bäumen auf G heißt<br />

k-Steinerbaum, falls gilt:<br />

(1) Für alle i ∈ [ℓ] ist V (Bi) ∩ T ≤ k .<br />

(2) Für alle i ∈ [ℓ] ist Bi voller Steinerbaum auf dem von V (Bi) in G induzierten<br />

Graphen G[V (Bi)] mit induzierter Terminalmenge V (Bi) ∩ T .<br />

(3) T ⊆ �<br />

i∈[ℓ] V (Bi).<br />

(4) Die Menge �<br />

i∈[ℓ] E(Bi) ⊆ E induziert einen zusammenhängenden Graphen in G.<br />

(5) Die Bi sind Terminal-zusammenhängend, d.h. der Subgraph �<br />

i∈[ℓ] GT [V (Bi) ∩ T ]<br />

vom Distanzgraphen GT ist zusammenhängend. Anders gesagt: Für jedes Paar<br />

i, j ∈ [ℓ] gibt es eine Folge (i1, . . . , iℓ ′) von Indizes aus [ℓ] mit V (Bis) ∩ V (Bis+1) ∩<br />

T �= ∅ für alle s ∈ {0, 1, . . . , ℓ ′ }, wobei i0 := i <strong>und</strong> iℓ+1 := j.<br />

Das Gewicht von � ist definiert als<br />

c(�) := �<br />

c(Bi),<br />

i∈[ℓ]<br />

wobei hier tatsächlich Kanten mehrfach in die Summe eingehen können. Im Folgenden<br />

bezeichne � (k)<br />

OPT stets einen k-Steinerbaum minimalen Gewichtes.<br />

Noch einige Bemerkungen zur Definition <strong>und</strong> zu Forderung (5):<br />

– Die Bedingungen (3) <strong>und</strong> (4) implizieren, dass �<br />

i∈[ℓ] Bi einen Steinerbaum enthält.<br />

– Beobachtung von Jan K.: Ohne (5) wäre im Graphen<br />

v1<br />

v3<br />

v2<br />

v0<br />

v4<br />

ein optimaler 2-Steinerbaum durch die zwei Bäume B1, B2 definiert, die durch<br />

{v0, v1, v2} <strong>und</strong> {v0, v3, v4} induziert werden. Der entsprechende Subgraph in GT ist<br />

unzusammenhängend. Will man � = {B1, B2} zu einem 2-Steinerbaum mit (1)-(5)<br />

erweitern, so muss man noch (mindestens) einen der Bäume dazunehmen, die durch<br />

{v0, v1, v3} bzw. {v0, v2, v4} induziert werden.<br />

– In [KV08, Abschnitt 20.2] wird (bis auf Benennung) die Definition ohne (5) gegeben,<br />

allerdings folgen dann auch Aussagen, die ohne zusätzliche Annahmen nicht gelten<br />

(etwa, dass die Klasse der Sterne zeigt, dass r2 = 2 (gemäß unserer Definition 3.2.4)).<br />

Auch in anderen Skripten <strong>und</strong> Artikeln wird (5) nicht immer explizit gemacht.<br />

– Die Definition mit Bedingung (5) findet sich (mit anderer Bezeichnung <strong>und</strong> etwas<br />

verstreut) in [PS02, Kapitel 7].<br />

– Ohne (5) wird auch der Beweis von Lemma 2.3.15 falsch: Ganz am Ende nutzen wir,<br />

dass mst(GT /t1, . . . , ti, t ∗ 1, . . . , t ∗ ℓ) = 0. Dazu kann es (je nach Instanz) erforderlich<br />

sein, dass die Vereinigung der Graphen GT [t ∗ 1], . . . , G[t ∗ ℓ] in GT zusammenhängend<br />

ist.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 12


Handouts zur VL vom 11.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 2.3.10 (RelativerGreedyk).<br />

Eingabe: G = (V, E), T ⊆ V , c : E → R≥0<br />

Ausgabe: Steinerbaum B<br />

1: Berechne GT <strong>und</strong> ℓT (Distanzgraph mit Längenfunktion für T ).<br />

2: i ← 0, GS := (∅, ∅) ⊲ Initialisierung<br />

3: while mst(GT /t1, . . . , ti) �= 0 do<br />

4: wähle ti+1 ⊆ T mit |ti+1| ≤ k, welches den folgenden Ausdruck minimiert:<br />

fi(ti+1) :=<br />

cOPT(ti+1)<br />

mst(GT /t1, . . . , ti) − mst(GT /t1, . . . , ti+1)<br />

5: GS ← GS ∪ BOPT(ti+1), i ← i + 1<br />

6: end while<br />

7: Ergänze im Subgraphen GS alle Kanten in G mit Gewicht 0, damit wirklich alle<br />

Terminale von Kanten in GS erreicht werden <strong>und</strong> GS zusammenhängend ist.<br />

8: Bestimme einen minimal spannenden Baum BS für GS.<br />

9: Erzeuge aus BS einen Steinerbaum B für T , indem sukzessive Kanten gelöscht<br />

werden, die zu den Blättern gehören, die keine Terminale sind.<br />

10: Gib B aus.<br />

Das folgende Bild gab es in der VL nicht als Handout:<br />

4<br />

3.5<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

Ab wann lohnt sich der rel. Greedy im Vergleich zum KMB-Algorithmus? Hier für k= 2^r.<br />

5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100<br />

r<br />

1.694*(r+1)/r<br />

1.694<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 13


Handouts zur VL vom 20.05.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 3.2.10 (Multifluss-Multicut-Algorithmus für Bäume).<br />

Eingabe: T = (V, E), b : E → Q≥0, {P1, . . . , Pk}<br />

Ausgabe: Multifluss f = (f1, . . . , fk) T , Multicut M<br />

Phase 1: T wird rückwärts bearbeitet<br />

1: ℓmax ← max{dist(r, v) : v ∈ V }<br />

2: for ℓ = ℓmax downto 0 do<br />

3:<br />

4:<br />

for v Knoten � in Ebene ℓ do<br />

Iv ← i ∈ {1, . . . , k} : Pi<br />

�<br />

liegt ganz in Tv <strong>und</strong><br />

enthält keine saturierte Kante<br />

5: for i ∈ Iv (in beliebiger Reihenfolge) do<br />

6: fi ← maximal aktuell möglicher Fluss durch Pi<br />

7: end for<br />

8: Qv ← {e ∈ E : e wurde in for-Schleife 5 saturiert}<br />

9: LIM(v) ← {e ∈ Qv : e hat keine Vorgängerkante in Qv}<br />

10: end for<br />

11: end for<br />

Phase 2: T wird vorwärts bearbeitet<br />

12: M ← ∅<br />

13: for ℓ = 0 upto ℓmax do<br />

14: for v Knoten in Ebene ℓ do<br />

15: for e ∈ LIM(v) do<br />

16: if zwischen e <strong>und</strong> v ist noch keine Kante aus M then<br />

17: M ← M ∪ {e}<br />

18: end if<br />

19: end for<br />

20: end for<br />

21: end for<br />

22: Gib f <strong>und</strong> M aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 14


Handouts zur VL vom 03.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

3.5 Noch eine Variante: k-Matching<br />

Definition 3.5.1 (k-Matching, Maximum-(Weighted-)k-Matching). Seien H =<br />

(V, E ) ein Hypergraph, k ∈ N, c : E → R≥0. Eine Hyperkantenmenge M ⊆ E<br />

heißt k-Matching, falls jeder Knoten in höchstens k Hyperkanten aus M liegt. In<br />

Formeln:<br />

∀ v ∈ V : |{S ∈ M : v ∈ S}| ≤ k.<br />

Ein Maximum-Weighted-k-Matching ist ein k-Matching M mit maximalem c(M ) =<br />

�<br />

S∈M c(S).<br />

Ein Maximum-k-Matching ist ein k-Matching M mit maximaler Kardinalität |M |.<br />

Beispiel 3.5.2. �<br />

Problem 3.5.3.<br />

(a) Maximum-Weighted-k-Matching:<br />

Eingabe: Hypergraph H = (V, E ), k ∈ N, c : E → R≥0<br />

Gesucht: Maximum-Weighted-k-Matching<br />

(b) Maximum-k-Matching:<br />

Eingabe: Hypergraph H = (V, E ), k ∈ N<br />

Gesucht: Maximum-k-Matching<br />

Proposition 3.5.4. Die Entscheidungsversionen von Maximum-Weighted-k-Matching<br />

<strong>und</strong> Maximum-k-Matching sind N P-vollständig, selbst wenn k = 3 fixiert wird.<br />

(Ohne Beiweis.)<br />

Bemerkung 3.5.5. Anwendungen gibt es z.B. in der Logistik, St<strong>und</strong>enplanung, Medizin<br />

(hier z.B. in der Brachytherapie: Fohlin, Kliemann, Srivastav 2006).<br />

Ein einfaches Beispiel für St<strong>und</strong>enplanproblem: Knoten entsprechen Lehrer/innen.<br />

Kanten repräsentieren Kurse, die die Lehrer „enthalten“, die den jeweiligen Kurs<br />

unterrichten können. Die Zahl k ist eine Kostengrenze: Jede/r Lehre/in soll maximal<br />

k Kurse halten. Ziel ist es, ein möglichst reichhaltiges Kursangebot zu machen.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 15


Handouts zur VL vom 03.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 3.5.6 (Greedy-Algorithmus für Max-Weighted-k-Matching).<br />

Eingabe: k ∈ N, Hypergraph (V, E ), Gewichte c : E → R≥0<br />

Ausgabe: Ein k-Matching M von (V, E )<br />

1: M ← ∅<br />

2: Sortiere die Hyperkanten in E = {S1, . . . , Sm} so, dass<br />

c(S1) √<br />

|S1|<br />

c(S2)<br />

≥ √<br />

|S2|<br />

c(Sm)<br />

≥ . . . ≥ √ .<br />

|Sm|<br />

3: for i from 1 to m do<br />

4: if M ∪ {Si} ist k-Matching then M ← M ∪ {Si}<br />

5: end if<br />

6: end for<br />

7: Gib M aus.<br />

Beispiel 3.5.7. �<br />

Satz 3.5.8 (Krysta 2005, siehe [Kry05]). Algorithmus 3.5.6 terminiert erfolgreich mit<br />

höchstens O(n · m 2 ) Operationen (dabei gilt wie üblich die Setzung n := |V |, m := |E |).<br />

Wenn MOPT ein Maximum-Weighted-k-Matching <strong>und</strong> M vom Algorithmus ausgegeben<br />

ist, so gilt: c(MOPT) ≤ ( √ n + 1) · c(M ) oder anders geschrieben<br />

c(MOPT)<br />

√ n + 1 ≤ c(M ) ≤ c(MOPT).<br />

Bemerkung 3.5.9. Die Gütegarantie ist im Vergleich zu den Gütegarantien für<br />

andere Probleme aus der Vorlesung bisher in gewisser Weise die schlechteste. Aber<br />

ein Faktor besser als √ n ist beweisbar „unwahrscheinlich“ (ohne Details; sonst gilt<br />

„N P = ZPP“).<br />

Später in der Vorlesung werden wir sehen, dass es einen Algorithmus für Max-k-<br />

Matching gibt, der mit Hilfe des Zufalls arbeitet <strong>und</strong> eine wesentlich bessere erwartete<br />

<strong>Approximation</strong>sgüte hat (allerdings unter der Nebenbedingung, dass k genügend groß<br />

ist).<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 16


Handouts zur VL vom 03.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Beweis von Satz 3.5.8: Wir müssen zeigen:<br />

(1) Der Algorithmus terminiert erfolgreich,<br />

(2) er braucht O(n · m 2 ) Operationen <strong>und</strong><br />

(3) die Gütegarantie stimmt.<br />

(1) <strong>und</strong> (2) sind einfach <strong>und</strong> wurden in der VL thematisiert; dort wurde auch auf<br />

einen kleinen Fallstrick hingewiesen: Im Algorithmus werden Wurzeln gezogen, was<br />

ganz exaktes Rechnen ggf. nicht möglich macht.<br />

(3) wurde auch in der VL behandelt, allerdings hatte sich an einigen Stellen eine<br />

Vertauschung von m <strong>und</strong> n eingeschlichen (vgl. die Definition von yj weiter unten).<br />

Daher hier die vollständige, aktualisierte Version des Beweises:<br />

Zu (3): Wir argumentieren „Primal-Dual“ (über eine Variante des dual fitting aus der<br />

letzten Vorlesung). Sei E = {S1, . . . , Sm} wie im Algorithmus <strong>und</strong> sei V = {v1, . . . , vn}.<br />

Für die Ausgabe M des Algorithmus sei x∗ der Inzidenzvektor von MOPT, für i ∈ [m]<br />

ist also<br />

x ∗ ⎧<br />

⎨1<br />

Si ∈ MOPT<br />

i :=<br />

.<br />

⎩<br />

0 Si /∈ MOPT<br />

Wir betrachten die zueinander dualen linearen Programme<br />

<strong>und</strong><br />

<strong>und</strong> stellen fest:<br />

m�<br />

max c(Si)xi<br />

i=1<br />

m�<br />

xi ≤ k f.a. v ∈ V<br />

i=1<br />

v∈Si<br />

Jetzt setzen wir für i ∈ [m] <strong>und</strong> j ∈ [n]<br />

Wir zeigen<br />

⎛<br />

yj := 1 ⎜c(M<br />

)<br />

⎜<br />

2k<br />

⎝<br />

n<br />

(3.1) � n j=1 k · yj = c(M )<br />

0 ≤ xi ≤ 1 f.a. i ∈ [m]<br />

min � �n<br />

m� �<br />

k · yj + zi<br />

j=1<br />

i=1<br />

n�<br />

zi + yj ≥ c(Si) f.a. i ∈ [m]<br />

j=1<br />

vj∈Si<br />

yj, zi ≥ 0 f.a. i ∈ [m], j ∈ [n]<br />

+ �<br />

S∈M<br />

vj∈S<br />

(P)<br />

(D)<br />

x ∗ ist zulässig für (P). (∗1)<br />

c(S)<br />

|S|<br />

⎞<br />

⎧<br />

⎟<br />

⎨c(si)<br />

Si ∈ M<br />

⎟<br />

⎠ <strong>und</strong> zi :=<br />

⎩0<br />

Si /∈ M .<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 17


Handouts zur VL vom 03.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

(3.2) � m i=1 zi = c(M )<br />

(3.3) ( √ n · y, z) ist zulässig für (D), d.h. y ∈ R n ≥0, z ∈ R m ≥0 <strong>und</strong><br />

∀ i ∈ [m] : zi + √ n<br />

n�<br />

j=1<br />

vj∈Si<br />

yj ≥ c(Si) (∗2)<br />

Daraus folgt dann die Güteschranke, denn für eine Optimallösung (y ∗ , z ∗ ) von (D)<br />

gilt<br />

c(MOPT)<br />

Dualität <strong>und</strong> (∗1)<br />

≤<br />

(3.1), (3.2)<br />

=<br />

Es bleiben also noch (3.1), (3.2), (3.3) zu zeigen.<br />

Aussage (3.1) rechnen wir nach:<br />

n�<br />

k · yj =<br />

j=1<br />

n�<br />

j=1<br />

⎛<br />

k ⎜c(M<br />

)<br />

⎜<br />

2k<br />

⎝<br />

n<br />

n�<br />

k · y<br />

j=1<br />

∗ m�<br />

j + z<br />

i=1<br />

∗ (3.3)<br />

i ≤ √ n�<br />

m�<br />

n k · yj + zi<br />

j=1<br />

i=1<br />

√ √<br />

n · c(M ) + c(M ) = ( n + 1) c(M ).<br />

+ �<br />

= 1<br />

⎛<br />

⎝n<br />

c(M ) �<br />

+<br />

2 n S∈M<br />

Aussage (3.2) ist offensichtlich.<br />

S∈M<br />

vj∈S<br />

c(S)<br />

|S|<br />

|S| c(S)<br />

|S|<br />

⎞<br />

⎟<br />

⎠<br />

⎞<br />

⎛<br />

1 ⎜<br />

= ⎜<br />

2<br />

⎝<br />

n�<br />

j=1<br />

⎠ = c(M ).<br />

c(M )<br />

n +<br />

n�<br />

j=1<br />

�<br />

S∈M<br />

vj∈S<br />

c(S)<br />

|S|<br />

Für (3.3) stellen wir fest, dass offensichtlich y ∈ R n ≥0 <strong>und</strong> z ∈ R m ≥0. Um (∗2) zu zeigen<br />

sei i ′ ∈ [m]. Falls Si ′ ∈ M , so ist (∗2) klar, weil dann bereits zi ′ ≥ c(Si ′). Gelte nun<br />

also S ′ := Si ′ /∈ M . Da in diesem Fall zi ′ = 0 gilt, bleibt zu zeigen<br />

Dafür werden wir gleich zeigen, dass<br />

n�<br />

j=1<br />

vj∈S ′<br />

n�<br />

j=1<br />

vj∈S ′<br />

yj ≥ c(S′ )<br />

2<br />

⎞<br />

⎟<br />

⎠<br />

yj ≥ c(S′ )<br />

√ n . (∗3)<br />

� �<br />

s k<br />

+<br />

nk s<br />

mit noch zu definierendem s > 0. Eine einfache Kurvendiskussion zeigt, dass smin :=<br />

√ n · k das eindeutige globale Minimum der Funktion<br />

s ↦→ s k<br />

+<br />

nk s<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 18<br />

(∗4)


Handouts zur VL vom 03.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

ist. Einsetzen von smin liefert dann (3.3):<br />

n�<br />

j=1<br />

vj∈S ′<br />

yj ≥ c(S′ )<br />

2<br />

�√ n · k<br />

n · k<br />

Um (∗4) zu zeigen, setzen wir für j ∈ [n]<br />

y (1)<br />

j := 1<br />

2k<br />

c(M )<br />

, y(2) j :=<br />

n 1<br />

2k<br />

�<br />

k<br />

+ √ =<br />

n · k<br />

c(S′ )<br />

√ .<br />

n<br />

�<br />

S∈M<br />

vj∈S<br />

c(S)<br />

|S| .<br />

Dann ist yj = y (1)<br />

j + y (2)<br />

j . Die folgenden beiden Aussagen implizieren (∗4):<br />

(3.4)<br />

(3.5)<br />

n�<br />

j=1<br />

vj∈S ′<br />

n�<br />

j=1<br />

vj∈S ′<br />

y (1)<br />

j ≥ c(S′ )<br />

· s,<br />

2kn<br />

y (1)<br />

j ≥ c(S′ ) · k<br />

·<br />

2<br />

1<br />

s .<br />

Um diese beiden Aussagen herzuleiten, müssen wir endlich einmal die Funktionsweise<br />

des Algorithmus benutzen. Dafür, dass S ′ nicht in M aufgenommen wurde, gibt es<br />

einen Gr<strong>und</strong>: Es muss einen Knoten v ′ ∈ S ′ geben, der der Aufnahme von S ′ in M<br />

„widersprochen“ hat, weil bereits Mengen Si1, . . . , Sik in M aufgenommen wurden, die<br />

alle v ′ enthalten. Insbesondere gilt für ℓ ∈ [k]:<br />

Damit können wir (3.4) beweisen: Wegen<br />

gilt<br />

mit<br />

c(M ) = �<br />

n�<br />

j=1<br />

vj∈S ′<br />

S∈M<br />

c(S)<br />

Si ℓ ∈M<br />

≥<br />

y (1)<br />

j = |S′ |<br />

c(M ) =<br />

2kn<br />

c(Siℓ )<br />

�<br />

|Siℓ | ≥ c(S′ )<br />

�<br />

|S ′ . (∗5)<br />

|<br />

k�<br />

c(Siℓ ) =<br />

ℓ=1<br />

�<br />

|S ′ �<br />

| |S ′ |<br />

2kn<br />

s :=<br />

k�<br />

ℓ=1<br />

k�<br />

ℓ=1<br />

c(Siℓ )<br />

�<br />

|Siℓ |<br />

�<br />

(∗5)<br />

|Siℓ | =<br />

c(M ) ≥ c(S′ )<br />

2kn<br />

�<br />

|S ′ �<br />

| |Siℓ | > 0.<br />

k�<br />

ℓ=1<br />

k�<br />

ℓ=1<br />

c(S ′ )<br />

�<br />

|S ′ | ·<br />

�<br />

|Siℓ |<br />

�<br />

|S ′ �<br />

| |Siℓ | = c(S′ )<br />

· s<br />

2kn<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 19


Handouts zur VL vom 03.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Für (3.5) erinnern wir die folgende Beziehung zwischen harmonischem <strong>und</strong> arithmetischem<br />

Mittel: Für Zahlen a1, . . . , ak > 0 gilt<br />

k<br />

� ki=1 1<br />

ai<br />

≤<br />

� ki=1 ai<br />

k<br />

. (∗6)<br />

Dies benutzen wir in der folgenden <strong>und</strong> abschließenden Abschätzung, die (3.5) beweist:<br />

n�<br />

j=1<br />

vj∈S ′<br />

y (2)<br />

j<br />

=<br />

v ′ ∈Si ℓ ∈M<br />

≥<br />

=<br />

(∗6)<br />

≥<br />

1<br />

2k<br />

1<br />

2k<br />

n�<br />

�<br />

j=1<br />

vj∈S ′<br />

S∈M<br />

vj∈S<br />

k�<br />

�<br />

i=1<br />

c(S ′ )<br />

2<br />

c(S ′ )<br />

2<br />

·<br />

·<br />

c(S)<br />

|S|<br />

c(Siℓ )<br />

|Siℓ |�|Siℓ<br />

|<br />

1<br />

�<br />

|S ′ | ·<br />

1<br />

�<br />

|S ′ | ·<br />

v ′ ∈S ′<br />

≥ 1<br />

2k<br />

(∗5)<br />

≥ 1<br />

2k<br />

k� 1<br />

�<br />

i=1 |Siℓ |<br />

k<br />

k<br />

k� �<br />

|Siℓ |<br />

i=1<br />

�<br />

S∈M<br />

v ′ ∈S<br />

i=1<br />

c(S)<br />

|S|<br />

k� c(S ′ )<br />

�<br />

|S ′ | �<br />

|Siℓ |<br />

= c(S′ ) · k<br />

2<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 20<br />

· 1<br />

s .<br />


Handouts zur VL vom 08.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Lemma 4.0.7. Für β ≥ 0 <strong>und</strong> t := ln(1 + β) gilt � n i=1 E[exp(twiXi)] ≤ exp(βE[X ]).<br />

Lemma 4.0.8 (korrigierte Fassung). Für 0 ≤ β < 1 <strong>und</strong> t ′ := − ln(1 − β) gilt t ′ > 0<br />

<strong>und</strong><br />

n�<br />

i=1<br />

E[exp(−t ′ wiXi)] ≤ exp(−βE[X ]).<br />

Zum Beweis von Satz 4.0.4 (b): Gehe analog zu (a) vor <strong>und</strong> benutze Lemma 4.0.8.<br />

Die ersten Beweisschritte gehen mit t ′ := − ln(1 − β) so:<br />

P �<br />

X ≤ (1 − β)E[X ] �<br />

= P �<br />

t ′ X ≤ t ′ (1 − β)E[X ] �<br />

= P �<br />

−t ′ X ≥ −t ′ (1 − β)E[X ] �<br />

= P �<br />

exp �<br />

−t ′ X �<br />

≥ exp �<br />

−t ′ (1 − β)E[X ] ��<br />

Markov, 4.0.5<br />

≤<br />

E �<br />

exp(−t ′ X ) �<br />

exp �<br />

−t ′ (1 − β)E[X ] �<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 21


Handouts zur VL vom 08.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Die folgende Bilder illustrieren den Beweis der Abschätzungen aus Lemma 4.0.10:<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

-0.4<br />

-0.5<br />

-0.6<br />

-0.7<br />

-0.8<br />

-0.9<br />

Vergleich von x-ln(1+x)*(1+x) <strong>und</strong> (-x^2)/(?)<br />

x-(1+x)ln(1+x)<br />

Ableitung: -ln(1+x)<br />

-x^2<br />

(-x^2)/2<br />

(-x^2)/3<br />

Ableitung: -2x/3<br />

-1<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

-0.4<br />

-0.5<br />

-0.6<br />

-0.7<br />

-0.8<br />

-0.9<br />

Vergleich von -x-ln(1-x)*(1-x) <strong>und</strong> (-x^2)/(?)<br />

-x-(1-x)ln(1-x)<br />

Ableitung: ln(1-x)<br />

-x^2<br />

(-x^2)/2<br />

Ableitung: -2x/2 = -x<br />

-1<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 22


Handouts zur VL vom 10.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 5.2.3 (Randomisiertes R<strong>und</strong>en für k-Matching).<br />

Eingabe: H = (V, E ) Hypergraph, k ∈ N0, ε ∈ (0, 1)<br />

Ausgabe: Inzidenzvektor einer (Hyper-)Kantenmenge E0 ⊆ E<br />

1: A ← Knoten-Kanten-Inzidenzmatrix von H<br />

2: Löse das LP<br />

m�<br />

max xi u.d.N. Ax ≤ k ∧ 0 ≤ x ≤ 1<br />

i=1<br />

<strong>und</strong> erhalte Optimallösung x ∗ mit Wert � x ∗ i =: OPT ∗ .<br />

3: Erhalte Vektor x R aus x ∗ durch unabhängiges R<strong>und</strong>en: P[X R i = 1] = (1 − ε<br />

2 )x∗ i ,<br />

P[X R i = 0] = 1 − (1 − ε<br />

2 )x∗ i für alle i = 1, ..., m.<br />

4: Ausgabe: Vektor x R = (x R 1 , ..., x R m).<br />

Rechnungen aus dem Beweis von Satz 5.2.4:<br />

Zu (1): [...]<br />

Für i ∈ [n] gilt E[(AxR )i] ≤ (1 − ε)k.<br />

Mit<br />

2<br />

δ := (1 − ε<br />

2 )k − E[(AxR )i] <strong>und</strong> X := (Ax R )i + δ<br />

gilt also δ ≥ 0 <strong>und</strong> E[X ] = (1 − ε<br />

2 )k.<br />

[...]<br />

Es gilt mit β := ε<br />

2−ε<br />

Es folgt<br />

β 2 E[X ]<br />

3<br />

= 1 ε<br />

3<br />

2 ε 1 ε<br />

(1 − )k =<br />

(2 − ε) 2 2 6<br />

2<br />

1 ε<br />

(2 − ε)k =<br />

(2 − ε) 2 6<br />

2<br />

2 − ε k.<br />

exp − β2E[X ]<br />

≤<br />

3<br />

1<br />

4n<br />

⇔ − β2E[X ]<br />

≤ − ln(4n)<br />

3<br />

⇔<br />

β2E[X ]<br />

≥ ln(4n)<br />

3<br />

⇔<br />

1 ε<br />

6<br />

2<br />

k ≥ ln(4n)<br />

2 − ε<br />

⇔<br />

6(2 − ε) ln(4n)<br />

k ≥<br />

ε2 .<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 23


Handouts zur VL vom 10.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

[...]<br />

Zu (2): Mit X ′ := � m i=1 X R i gilt<br />

Mit β = ε<br />

2−ε<br />

gilt also<br />

E[X ′ ] = �<br />

1 − ε � �m<br />

x<br />

2<br />

∗ i = �<br />

1 − ε �<br />

OPT<br />

2<br />

∗ .<br />

(1 − β)E[X ′ ] =<br />

2 − 2ε<br />

2 − ε<br />

i=1<br />

· 2 − ε<br />

2<br />

· OPT ∗ = (1 − ε)OPT ∗ .<br />

Wir erhalten mit der Angluin-Valiant-Ungleichung (Kor. 4.0.11):<br />

P �<br />

X ′ ≤ (1 − ε)OPT ∗�<br />

= P �<br />

X ′ ≤ (1 − β)E[X ′ ] �<br />

≤<br />

�<br />

exp − β2E[X ′ ⎛<br />

�<br />

� �2� ε<br />

] ⎜ 1 − 2−ε<br />

= exp ⎝−<br />

2<br />

ε<br />

�<br />

OPT 2<br />

∗<br />

⎞<br />

⎟<br />

⎠<br />

2<br />

= exp<br />

�<br />

− ε2OPT ∗<br />

�<br />

4(2 − ε)<br />

� �� �<br />

falls hier „≤ − ln(4)“, dann fertig!<br />

.<br />

Weil H mindestens k Kanten hat, ist<br />

Also gilt<br />

OPT ∗ ≥ k ≥<br />

6(2 − ε) ln(4n)<br />

ε 2<br />

ε2OPT ∗<br />

4(2 − ε) ≥ ε26(2 − ε) ln(4)<br />

4(2 − ε)ε2 ≥<br />

6(2 − ε) ln(4)<br />

ε2 .<br />

= 3<br />

ln(4) ≥ ln(4).<br />

2<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 24


Handouts zur VL vom 15.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 5.3.7 (Rand. R<strong>und</strong>en bei MSVC (Feige, Lovász, Tetali 2004)).<br />

Eingabe: G = (V, E) Graph<br />

Ausgabe: Reihenfolge der Knoten in V<br />

Phase 0: Vorbereitungen<br />

1: Berechne einen Lösungsvektor (x T , y T ) T des LPs<br />

min � �nt=1 e∈E yet<br />

�ni=1 xit ≤ 1 f.a. t ∈ [n]<br />

y{i,j}t ≥ 1 − �<br />

t ′


Handouts zur VL vom 15.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Beispiel 5.3.8 (Ein sehr einfaches Beispiel).<br />

v2<br />

v1<br />

Phase 0<br />

v4 • eine opt. Reihenfolge : 1, 3, 2, 4<br />

v3<br />

�<br />

e<br />

�<br />

t yOPT et = 3<br />

• eine Algo-Reihenfolge : 1, 2, 3, 4 (siehe Tabellen)<br />

Summe der Überdeckungszeitpunkte = 4<br />

xit v1 v2 v3 v4<br />

t = 1<br />

t = 2<br />

t = 3<br />

1<br />

2<br />

0<br />

0<br />

1<br />

2<br />

0<br />

0<br />

0<br />

1<br />

2<br />

0<br />

0<br />

1<br />

2<br />

0<br />

t = 4 0 0 0 0<br />

Phase 1<br />

zit v1 v2 v3 v4<br />

t = 1 1 1 0 0<br />

t = 2 0 0 1 1<br />

t = 3 0 0 0 0<br />

t = 4 0 0 0 0<br />

Satz 5.3.9 ([FLT04]). Mit ¯x <strong>und</strong> der LP-Lösung y in Algorithmus 5.3.7 <strong>und</strong><br />

⎧<br />

⎨1<br />

Kante e ist vor Slot s im Zeitfenster t noch nicht überdeckt<br />

¯yets :=<br />

⎩0<br />

sonst<br />

für e ∈ E, t ∈ [n] <strong>und</strong> s ∈ [st] gilt<br />

⎡<br />

E ⎣ �<br />

⎤<br />

� �<br />

¯yets<br />

⎦<br />

e∈E t∈[n] s∈st<br />

!<br />

≤ 2 · � �<br />

yet<br />

e∈E t∈[n]<br />

o.k.<br />

≤ 2 · �<br />

�<br />

y<br />

e∈E t∈[n]<br />

OPT<br />

et ,<br />

wobei y OPT ein optimale Lösung des ILP aus Beobachtung 5.3.6 sei.<br />

Beweis: Wir brachen für den Beweis zuerst einige Definitionen <strong>und</strong> technische Einzelheiten,<br />

die wir am Ende zusammensetzen:<br />

Für e ∈ E, t ∈ [n] <strong>und</strong> s ∈ [st] definiere die Ereignisse<br />

Aet := Kante e ist vor Zeitfenster t nicht überdeckt<br />

Bets := Kante e ist vor Slot s in Zeitfenster t nicht überdeckt<br />

<strong>und</strong> für den Fall, dass Aet eingetreten ist, definiere die Zufallsvariablen<br />

Wet := # Slots in Zeitfenster t, vor denen e noch nicht überdeckt<br />

Ret := # Knoten k außer den Endknoten von e, deren<br />

zugehörige Variable ¯xkt in Zeitfenster t auf 1 ger<strong>und</strong>et wird<br />

Wir berechnen E[Wet]: Mit der 0-1-Zufallsvariable<br />

⎧<br />

⎨1<br />

Ereignis Bets tritt ein<br />

�Bets :=<br />

⎩0<br />

sonst<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 26


Handouts zur VL vom 15.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

gilt unter der Bedingung, dass Aet eingetreten ist, die Gleichheit Wet = �<br />

s∈[st] �Bets.<br />

Folglich ist<br />

E[Wet] = E � � �<br />

= �<br />

P[�Bets = 1|Aet] = �<br />

P[Bets|Aet].<br />

Nun gilt<br />

E � � � � �<br />

¯yets<br />

e∈E t∈[n] s∈st<br />

s∈[st]<br />

�Bets|Aet<br />

s∈[st]<br />

s∈[st]<br />

= � � �<br />

E[¯yets] =<br />

e∈E t∈[n] s∈st<br />

� � �<br />

P[¯yets = 1]<br />

=<br />

e∈E t∈[n] s∈st<br />

� � �<br />

P[Aet ∩ Bets] =<br />

e∈E t∈[n] s∈st<br />

� � �<br />

P[Aet]P[Bets|Aet]<br />

=<br />

e∈E t∈[n] s∈st<br />

� �<br />

P[Aet]<br />

e∈E t∈[n]<br />

�<br />

P[Bets|Aet] =<br />

s∈st<br />

� �<br />

P[Aet]<br />

e∈E t∈[n]<br />

�<br />

E[Wet]<br />

s∈st<br />

Wir zeigen die folgenden zwei Aussagen, die die dann Behauptung direkt implizieren:<br />

(1) P[Aet] ≤ yet<br />

(2) E[Wet] ≤ 2.<br />

→ Übungsaufgabe 9.3,<br />

Um E[Wet] abzuschätzen, werden wir E[Ret] benutzen. Berechnen wir also zuerst<br />

letzteres. Dazu sei e = {i, j} <strong>und</strong> x sei der Vektor aus der LP-Lösung, mit Hilfe derer<br />

die „Zeitfensterwahrscheinlichkeiten“ zkt berechnet wurden. Nun gilt<br />

E[Ret] = E � � �<br />

¯xkt =<br />

k∈[n], k�=i,j<br />

�<br />

E[¯xkt] =<br />

k∈[n], k�=i,j<br />

�<br />

P[¯xkt = 1]<br />

k∈[n], k�=i,j<br />

=<br />

�<br />

zkt<br />

Def. der zkt<br />

≤ 2 ·<br />

k∈[n], k�=i,j<br />

�<br />

xkt ≤ 2<br />

k∈[n], k�=i,j<br />

� ��<br />

≤1<br />

�<br />

Nun zu E[Wet]. Das Ereignis Aet sei eingetreten (die Kante e ist also vor Zeitfenster t<br />

noch nicht überdeckt). Wieder sei e = {i, j}.<br />

1. Fall: Die Kante e wird auch im Zeitfenster t nicht überdeckt, d.h. ¯xit = ¯xjt = 0. In<br />

diesem Fall gilt Ret = st = Wet. Insbesondere haben wir E[Wet] = E[Ret] ≤ 2.<br />

2. Fall: Die Kante e wird im Zeitfenster t überdeckt, weil genau einer der Endknoten<br />

i oder j im Zeitfenster t einen Slot zugewiesen bekommt, d.h. o.E. gelte ¯xit = 1<br />

<strong>und</strong> ¯xjt = 0. In diesem Fall ist Ret = st − 1. Also werden im Algorithmus im t-ten<br />

Zeitfenster st − 1 Slots auf Knoten verteilt, die mit e nichts zu tun haben, <strong>und</strong> ein<br />

Slot wird Knoten i zugewiesen (<strong>und</strong> damit e überdeckt). Die Anzahl der Knoten, die<br />

der Reihe nach auf die Slots verteilt werden, bevor i an die Reihe kommt, beträgt<br />

also im Erwartungswert E[st−1]<br />

(selber klarmachen, hier geht die Gleichverteilung der<br />

2<br />

Slots auf die Knoten mit gleichem Zeitfenster ein). Vor diesen erwartet E[Ret]<br />

Slots ist<br />

2<br />

e nicht überdeckt <strong>und</strong> vor dem Slot, dem i zugewiesen wird, ist e auch noch nicht<br />

+ 1 ≤ 2.<br />

überdeckt. Demnach gilt E[Wet] = E[Ret]<br />

2<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 27


Handouts zur VL vom 15.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

3. Fall: Die Kante e wird im Zeitfenster t überdeckt, weil sowohl i als auch j im<br />

Zeitfenster t einen Slot zugewiesen bekommt; m.a.W.: Es gilt ¯xit = 1 = ¯xjt. In diesem<br />

Fall gilt Ret = st − 2. Also werden im Algorithmus im t-ten Zeitfenster st − 2 Slots<br />

auf Knoten verteilt, die mit e nichts zu tun haben, <strong>und</strong> je ein Slot wird Knoten i bzw.<br />

j zugewiesen (<strong>und</strong> damit e überdeckt). Die Anzahl der Knoten, die der Reihe nach<br />

auf die Slots verteilt werden, bevor i oder j an die Reihe kommt, beträgt also im<br />

Erwartungswert E[st−2]<br />

(wieder selber klarmachen). Vor diesen erwartet E[Ret]<br />

Slots ist<br />

3<br />

e nicht überdeckt <strong>und</strong> vor dem ersten Slot, dem i oder j zugewiesen wird, ist e auch<br />

≤ 2. ✷<br />

noch nicht überdeckt. Demnach gilt E[Wet] = 1 + E[Ret]<br />

3<br />

Bemerkungen zur Definition von Wet:<br />

Nehmen wir an, in der Definition von Wet nicht „vor“, sondern „in“. Dann gilt:<br />

– Die Gleichheit E[Wet] = �<br />

s∈[st] P[Bets|Aet] nicht i.A. mehr gegeben. Insofern würde<br />

Wet nicht mehr helfen.<br />

– Der Beweis von E[Wet] wäre leichter, weil man in den Fällen 2 <strong>und</strong> 3 direkt<br />

Ret = st − 1 ≥ Wet bzw. Ret = st − 2 ≥ Wet hätte (das war Tims Vorschlag).<br />

Insofern ist es schade, dass Wet anders definiert werden muss.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 28<br />

3


Handouts zur VL vom 15.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Definition <strong>und</strong> Algorithmus 5.4.4. Wir definieren im Spezialfall 5.4.3 eine Wahrscheinlichkeitsverteilung<br />

auf {0, 1} n durch folgenden Zufallsprozess:<br />

1: x R ← x<br />

2: while x R /∈ {0, 1} n do<br />

3: ℓ ← Binärlänge von x R<br />

4: Zerlege x R in x R = x ′ + 2 −l+1 x ′′ so, dass x ′′ ∈ {0, 1<br />

2 }n <strong>und</strong> x ′ Binärlänge<br />

höchstens ℓ − 1 hat.<br />

5: for i ∈ [m] do<br />

6: Ei ← {j ∈ [n] : x ′′<br />

j = 1<br />

2 ∧ bij = 1}<br />

7: Teile Ei (etwa in der Reihefolge der Indizes) in Paare auf<br />

8: for (j1, j2) Paar in Ei do<br />

9: R<strong>und</strong>e (x ′′<br />

j1<br />

10: end for<br />

11: end for<br />

12: x R ← x ′ + 2 −l+1 x ′′<br />

13: end while<br />

14: Gib x R aus.<br />

, x′′<br />

j2<br />

) auf (1, 0) oder (0, 1) durch fairen Münzwurf<br />

Lemma 5.4.5. Das Verfahren in Algorithmus 5.4.4 terminiert, weil in jedem Schritt<br />

die Mengen Ei gerade Kardinalität haben. Dies folgt aus Bx = b ∈ Z n .<br />

Beweis: Wir zeigen, dass im ersten R<strong>und</strong>ungsschritt alle Zahlen |Ei| gerade sind. Wenn<br />

das stimmt, gilt nach der ersten R<strong>und</strong>ung weiterhin Bx R = b <strong>und</strong> das gleiche Argument<br />

kann sukzessive wiederholt werden.<br />

Sei also x = x ′ + 2−l+1x ′′ so, dass x ′′ ∈ {0, 1<br />

2 }n <strong>und</strong> x ′ Binärlänge höchstens ℓ − 1 hat.<br />

Für i ∈ [m] haben wir im ersten R<strong>und</strong>ungsschritt Ei = {j ∈ [n] : x ′′<br />

j = 1<br />

2 ∧ bij = 1}<br />

<strong>und</strong> setzen E ′ i := {j ∈ [n] : x ′′<br />

j = 0 ∧ bij = 1}.<br />

Nun gilt<br />

(Bx)i = �<br />

j∈Ei∪E ′ i<br />

xj = �<br />

j∈E ′ i<br />

x ′ j + �<br />

j∈Ei<br />

(x ′ j + 2 −l ) = �<br />

j∈Ei∪E ′ i<br />

x ′ j + |Ei|2 −l .<br />

Da der erste Summand �<br />

j∈Ei∪E ′ i x′ j eine Zahl mit Binärlänge höchstens ℓ − 1 ist, kann<br />

(Bx)i nur ganzzahlig sein kann, wenn auch |Ei|2 −l Binärlänge höchstens ℓ − 1 hat.<br />

Dies gilt genau dann, wenn |Ei| gerade ist.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 29


Handouts zur VL vom 22.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 5.5.5. R<strong>und</strong>e x durch folgenden deterministischen Prozess schrittweise<br />

zu einem 0-1-Vektor:<br />

1: xR ← x<br />

2: while xR /∈ {0, 1} n do<br />

3: J ← {j ∈ [n] : xR j /∈ {0, 1}}<br />

4: I ← {i ∈ [m] : �<br />

j∈J |bij| > �B�1}<br />

5: if I = ∅ then<br />

6: R<strong>und</strong>e die J-Einträge von xR beliebig auf 0 oder 1 (z.B. alle auf 1)<br />

7: else<br />

8: Finde Lsg. z �= 0 des LGS �<br />

B|I×Jz|J = 0 ∧ z|[n]\J = 0 �<br />

.<br />

9: Finde λ > 0, sodass xR + λz ∈ [0, 1] n <strong>und</strong><br />

10: mindestens ein Eintrag von (xR + λz)|J ganzzahlig ist<br />

11: xR ← xR + λz<br />

12: end if<br />

13: end while<br />

14: Gib xR aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 30


Handouts zur VL vom 24.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 6.1.7 (MaxCut-Algorithmus von Goemanns <strong>und</strong> Williamson (1994)).<br />

Eingabe: G = (V, E) Graph<br />

Ausgabe: Partition V1 ·∪V2 von V<br />

1: Löse die Vektorrelaxierung (VR) <strong>und</strong> erhalte eine Menge von Vektoren {v1, . . . , vn}.<br />

2: Wähle (gleichverteilt) einen zufälligen Vektor c ∈ Bn.<br />

3: V1 ← {i ∈ V : c T vi ≥ 0}, V2 ← {i ∈ V : c T vi < 0}<br />

4: Gib V1, V2 aus.<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

Das Minimum von 2/pi * x/(1-cos(x))<br />

2/pi * x/(1-cos(x))<br />

.8785<br />

Hilfe bei der Min.-Suche: Wo ist cos(x)+x*sin(x)=1 ?<br />

x=2.3311<br />

x=2.3312<br />

0<br />

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 31


Handouts zur VL vom 24.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

In (VR) aus Definition <strong>und</strong> Beobachtung 6.1.5 findet sich eine allgemeine Struktur,<br />

die sich zu sog. semidefiniten Programmen verallgemeinern lässt. Dazu folgen jetzt ein<br />

paar Details:<br />

Erinnerung 6.1.12 (... aus der linearen Algebra). Sei A ∈ R n×n symmetrisch (d.h.<br />

A T = A). Dann heißt A positiv semidefinit (symbolisch A � 0), falls x T Ax ≥ 0 für<br />

alle x ∈ R n .<br />

Die folgenden Aussagen sind äquivalent (ohne Beweis):<br />

(i) A positiv semidefinit (A � 0).<br />

(ii) Alle (auch komplexen) Eigenwerte von A sind reell <strong>und</strong> nichtnegativ.<br />

(iii) Es gibt B ∈ R n×n mit A = B T B (sog. Cholesky-Zerlegung).<br />

Was hat das mit uns zu tun?<br />

Beobachtung 6.1.13. Seien v1, . . . , vn ∈ Rn . Für B = �<br />

v1 v2 . . .<br />

�<br />

vn ∈ Rn×n gilt<br />

B T ⎡<br />

v<br />

⎢<br />

B = ⎢<br />

⎣<br />

T 1<br />

.<br />

vT ⎤<br />

⎥ �<br />

⎥<br />

⎦ v1 v2 . . .<br />

⎡<br />

v<br />

� ⎢<br />

vn = ⎢<br />

⎣<br />

n<br />

T 1 v1 . . . vT .<br />

. ..<br />

1 vn<br />

.<br />

vnT v1 . . . vT ⎤<br />

⎥<br />

⎦<br />

n vn<br />

ist positiv semidefinit mit Einträgen der Form v T i vj.<br />

Umgekehrt: Jede positiv semidefinite Matrix kann in dieser Form geschrieben werden,<br />

insbesondere haben die Einträge die Form v T i vj für passende v1, . . . , vn ∈ R n .<br />

Korollar 6.1.14. Das Programm (VR) aus 6.1.5 läßt sich äquivalent schreiben als<br />

Wegen<br />

max �<br />

{i,j}∈E<br />

1 − yij<br />

2<br />

max �<br />

{i,j}∈E<br />

1 − yij<br />

2<br />

Y = (yij)ij symmetrisch <strong>und</strong> Y � 0<br />

= max<br />

yii = 1 f.a. i ∈ [n].<br />

⎛<br />

⎝ |E|<br />

2<br />

− 1<br />

2<br />

�<br />

{i,j}∈E<br />

yij<br />

⎞<br />

⎠ = |E|<br />

2<br />

kann man also alternativ das folgende Programm lösen:<br />

min �<br />

{i,j}∈E<br />

1 �<br />

− min yij<br />

2 {i,j}∈E<br />

yij u.d.N. Y symm., Y � 0, yii = 1 f.a. i ∈ [n] . (∗)<br />

Beobachtung 6.1.15. Wenn man eine optimale Matrix Y ∗ für (∗) kennt, muss<br />

man noch eine Cholesky-Zerlegung Y ∗ = B T B berechnen, um an die in Algorithmus<br />

6.1.7 nötigen Vektoren v1, . . . , vn zu gelangen. Die klassischen Zerlegungsalgorithmen<br />

arbeiten mit Quadratwurzeln. Bei endlicher Codierung von Zahlen kann man sie so<br />

umsetzen, dass für jedes ε > 0 eine Zerlegung BT B mit |(BT B)ij − Y ∗<br />

ij| < ε für alle<br />

i, j ∈ [n] berechnet wird <strong>und</strong> die Laufzeit polynomiell in size(Y ∗ ) <strong>und</strong> (log2( 1)<br />

+ 1) ist.<br />

ε<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 32


Handouts zur VL vom 24.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Definition 6.1.16 (Semidefinites Programm (SDP)). Ein semidefinites Programm<br />

(SDP) ist eine <strong>Optimierung</strong>saufgabe der Form<br />

max / min �<br />

i,j∈[n]<br />

cijyij<br />

Y = (yij)ij symmetrisch <strong>und</strong> Y � 0<br />

�<br />

i,j∈[n]<br />

�<br />

i,j∈[n]<br />

a (1)<br />

ij yij ≤ b1<br />

.<br />

a (m)<br />

ij yij ≤ bm<br />

mit passenden symm. n×n-Matrizen C, A (1) , . . . , A (m) <strong>und</strong> b ∈ R m . Bis auf die Bedingung<br />

Y � 0 handelt es sich also um ein spezielles lineares Programm (denn Symmetrie<br />

von Y lässt sich durch lineare (Un-)Gleichungen ausdrücken).<br />

Bemerkung 6.1.17. Für symmetrische A, B gilt<br />

�<br />

i,j∈[n]<br />

aijbij = �<br />

i∈[n] j∈[n]<br />

�<br />

aijbji<br />

= �<br />

(AB)ii = Spur(AB) =: 〈A, B〉<br />

i∈[n]<br />

Damit kann man ein SDP wie in Definition 6.1.16 auch so schreiben:<br />

Das ist eine übliche SDP-Notation.<br />

max / min 〈C, Y 〉<br />

Y = (yij)ij symmetrisch <strong>und</strong> Y � 0<br />

〈A (1) , Y 〉 ≤ b1<br />

.<br />

〈A (m) , Y 〉 ≤ bm<br />

Bemerkung 6.1.18. Semidefinite Programme können in polynomieller Zeit beliebig<br />

genau approximiert werden. Genauer: Für jedes ε gibt es einen polynomiellen Algorithmus<br />

A , der ein semidefinites Programm P bis auf einen additiven Fehler von<br />

höchstens ε exakt löst <strong>und</strong> eine Laufzeit hat, die polynomiell in size(P ) <strong>und</strong> (log2( 1<br />

ε )+1)<br />

ist.<br />

In der Vorlesung werden wir dieses Resultat ohne Beweis benutzen. Genaueres dazu<br />

findet sich in der Literatur, z.B. im Buch von Corte&Vygen (siehe die Kapitel über<br />

MaxCut bzw. über die Ellipsoidmethode).<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 33


Handouts zur VL vom 29.06.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 6.2.9 (MaxBisect-Algorithmus (Frieze & Jerrum, 1997)).<br />

Eingabe: G = (V, E) Graph mit n gerade, ε ≤ 0.01<br />

Ausgabe: Bipartition W ·∪(V \ W ) von V<br />

1: Löse die (VR)B <strong>und</strong> erhalte {v1, . . . , vn} ⊆ Bn.<br />

2: W ← NIL, BestValueFo<strong>und</strong> ← ∞, K ← ⌈ε −1 ln(ε −1 )⌉<br />

3: for i ∈ [K] do<br />

4: Erzeuge Partition V1 ·∪V2 von V wie Algorithmus 6.1.7 (2-4)<br />

5: if V1 ·∪V2 ist Bipartition then Wi ← V1<br />

6: else<br />

7: W ′<br />

i ← größere der beiden Mengen V1, V2<br />

8: Sortiere die Knoten in W ′<br />

i absteigend nach ζW ′ i (·),<br />

9: also W ′<br />

i = {w1, . . . , wℓ} mit ζW ′ i (w1) ≥ . . . ≥ ζW ′ i (wℓ).<br />

10: Wi ← {w1, . . . , wn/2}<br />

11: end if<br />

12: if δ(Wi, V \ Wi) < BestValueFo<strong>und</strong> then<br />

13: BestValueFo<strong>und</strong> ← δ(Wi, V \ Wi), W ← Wi<br />

14: end if<br />

15: end for<br />

16: Gib (W, V \ W ) aus.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 34


Handouts zur VL vom 01.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

6.3 Graphenfärbungen für 3-färbbare Graphen<br />

Abmachung 6.3.1. Im Folgenden habe G mindestens eine Kante.<br />

Definition 6.3.2. Ein Graph G = (V, E) heißt k-färbbar, falls es f : V → [k] gibt<br />

mit<br />

f(v) �= f(w) f.a. {v, w} ∈ E.<br />

In diesem Fall heißt f auch k-Färbung.<br />

Die Zahl<br />

heißt chromatische Zahl von G<br />

χ(G) := min{k ∈ N : G ist k-färbbar}<br />

Beispiel 6.3.3. �<br />

(a)<br />

(b)<br />

(c)<br />

Bemerkung 6.3.4. Anwendungen gibt es z.B. bei St<strong>und</strong>enplanproblemen:<br />

Knoten ↔ Kurse<br />

Kanten ↔ Kurspaare, die nicht gleichzeitig stattfinden können<br />

Farbklasse ↔ Menge von Kursen, die gleichzeitig stattfinden können<br />

Problem 6.3.5 (ChromaticNumber).<br />

Gegeben: Graph G = (V, E), k ∈ N<br />

Frage: Gilt χ(G) ≤ k?<br />

Proposition 6.3.6. ChromaticNumber ∈ N PC. (Ohne Beweis.)<br />

Bemerkung <strong>und</strong> Plan 6.3.7.<br />

• Wir wollen jetzt Färbungen für 3-färbbare Graphen konstruieren.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 35


Handouts zur VL vom 01.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

• Es gibt dafür einen deterministischen Algorithmus von Wigderson, der mit<br />

O(n 1/2 ) Farben auskommt.<br />

• Wir lernen in diesem Abschnitt einen SDP-basierten, randomisierten Algorithmus<br />

kennen, der mit Wahrscheinlichkeit mindestens 1/2 erfolgreich färbt <strong>und</strong> mit<br />

O(n log 3−ε 2 ) Farben auskommt.<br />

• Man kann beide Algorithmen kombinieren, um einen Algorithmus zu bauen,<br />

der Wahrscheinlichkeit mindestens 1/2 erfolgreich färbt <strong>und</strong> mit O(n 0.4 ) Farben<br />

auskommt. → Übung (Blatt 11)<br />

f(x)<br />

1<br />

0.9<br />

0.8<br />

0.7<br />

f(x) = log_{3-x}(2) = log(2)/log(3-x)<br />

0.6<br />

0 0.25 0.5 0.75 1<br />

Definition 6.3.8 (a-Vektorfärbung). Seien G = (V, E) ein Graph <strong>und</strong> a > 1. Eine<br />

Abbildung F : V → Bn heißt a-Vektorfärbung, falls<br />

cos (∡ (F (v), F (w))) o.k.<br />

= F (v) T F (w) !<br />

≤ − 1<br />

a − 1 .<br />

für alle {v, w} ∈ E.<br />

x<br />

Beispiel 6.3.9. �<br />

(a)<br />

(b)<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 36


Handouts zur VL vom 01.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Satz 6.3.10. Wenn G ein k-färbbarer Graph ist, so gibt es auch eine k-Vektorfärbung<br />

für G.<br />

Beweisskizze: �<br />

Beobachtung 6.3.11. Die Suche nach einer a-Vektorfärbung für G = ([n], E) mit<br />

durch x substituiert wird:<br />

kleinstmöglichem a lässt sich als SDP schreiben, indem − 1<br />

a−1<br />

min x<br />

v T i vj ≤ x f.a. {i, j} ∈ E<br />

v1, . . . , vn ∈ Bn<br />

x ∈ R<br />

(V R)F<br />

Proposition 6.3.12. Sei G ein Graph, sei x∗ = − 1 der Optimalwert von (V R)F<br />

a−1<br />

<strong>und</strong> sei 0 < ε0 < 1. Dann kann eine (a+ε0)-Vektorfärbung von G in polynomieller Zeit<br />

1<br />

(polynomiell abhängig von n, m, k <strong>und</strong> log2 + 1) berechnet werden. (Ohne Beweis,<br />

ε0<br />

vgl. Bemerkung 6.1.18.)<br />

Bevor wir den angekündigten Algorithmus mit den zugehörigen <strong>Approximation</strong>sresultaten<br />

hinschreiben können, wählen wir noch ein paar Zahlen auf bestimmte<br />

Weise:<br />

Abmachung <strong>und</strong> Beobachtung 6.3.13.<br />

Wähle/Setze... Wozu?<br />

Wähle 0 < ε < 1 fest. Ziel: O(n log 3−ε 2 ) Farben<br />

α := 1 1 − 3−ε 3<br />

Wähle 1 > ε0 > 0 so, dass<br />

1 ∈ ]0, [ „Nur“ Hilfsgröße<br />

6<br />

1<br />

π arccos<br />

�<br />

− 1<br />

�<br />

≥<br />

2 + ε0<br />

2<br />

3 −α.<br />

Das geht, siehe Bild!<br />

∆ := Maximalgrad von G<br />

Algorithmus startet mit (3 + ε0)-Vektorfärbung;<br />

Analyse benötigt die Ungleichung<br />

r := ⌊1 + log 3−ε ∆⌋ Der Algorithmus soll maximal 2 r Farben benutzen<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 37


Handouts zur VL vom 01.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Beachte: Mit einer Nebenrechnung (N.R.) sieht man:<br />

2 r ≤ 2 1+log 3−ε ∆ = 2 · 2 log 3−ε ∆ N.R.<br />

= 2 · ∆ log 3−ε 2 = O(n log 3−ε 2 ).<br />

Nebenrechnung: Für alle x, y, z > 0 gilt<br />

x log z y = z log z (xlog z y ) = z (log z y) (log z x) = z log z (y log z x ) = y log z x .<br />

1<br />

0.75<br />

0.5<br />

0.25<br />

Algorithmus 6.3.14 (SDP-Teilfärbung).<br />

y<br />

arccos(x) / pi<br />

0<br />

-1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 1<br />

Eingabe: 3-färbbarer Graph G = (V, E)<br />

Ausgabe: Zulässige Teilfärbung (Färbung auf einer Teilmenge der Knoten).<br />

1: Berechne eine (3 + ε0)-Vektorfärbung v1, . . . , vn von G.<br />

2: Ziehe zufällig <strong>und</strong> unabhängig gleichverteilt Vektoren c1, . . . , cr ∈ Bn.<br />

3: Seien R1, . . . , R2 r die Bereiche, in die die Hyperebenen c⊥ 1 , . . . , c ⊥ r den Raum R n<br />

unterteilen. Färbe alle Knoten aus Rs mit einer noch nicht benutzten Farbe cs für<br />

s = 1, . . . , 2 r .<br />

4: Gehe die Knoten v aus V der Reihe nach durch <strong>und</strong> entferne die Farbe von v,<br />

falls v ungültig gefärbt ist (also ein Nachbar mit gleicher Farbe existiert).<br />

5: Gib die gef<strong>und</strong>ene Teilfärbung aus.<br />

Satz 6.3.15.<br />

(a) Algorithmus 6.3.14 kann in polynomieller Zeit ausgeführt werden <strong>und</strong> benötigt<br />

höchstens 2 · ∆ log 3−ε 2 = O(n log 3−ε 2 ) Farben.<br />

(b) Für einen 3-färbbaren Graphen G gilt: Mit Wahrscheinlichkeit mindestens 1/2<br />

findet der Algorithmus eine Teilfärbung auf mindestens n/2 Knoten.<br />

Den Beweis dafür geben wir erst später. Zuerst sehen wir uns an, wie man Algorithmus<br />

6.3.14 nutzen kann, um iterativ (mit hoher Wahrscheinlichkeit) eine Färbung<br />

aller Knoten zu berechnen:<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 38<br />

x


Handouts zur VL vom 01.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Algorithmus 6.3.16 (Iterative Färbung).<br />

Eingabe: 3-färbbarer Graph G = (V, E)<br />

Ausgabe: Zulässige Teilfärbung von G.<br />

1: farblos ← V<br />

2: for i = 1 upto ⌈log 2 n⌉ do<br />

3: Lasse Algorithmus 6.3.14 auf G[farblos] laufen,<br />

4: verwende dabei in vorherigen Durchläufen<br />

5: noch nicht benutzte Farben.<br />

6: farbig i ← im aktuellen Durchlauf gefärbte Knoten<br />

7: farblos ← farblos \ farbig i<br />

8: end for<br />

9: Gib die gef<strong>und</strong>ene Teilfärbung aus.<br />

Satz 6.3.17.<br />

(a) Unter der Bedingung, dass in jedem Durchlauf der for-Schleife mindestens die<br />

Hälfte der bis dahin ungefärbten Knoten gefärbt wird, verwendet Algorithmus 6.3.16<br />

ebenfalls höchstens O(n log 3−ε 2 ) viele Farben.<br />

Für einen 3-färbbaren Graphen G gilt:<br />

(b) Die Wahrscheinlichkeit, dass der Algorithmus auf G sogar eine Färbung aller<br />

Knoten findet, ist mindestens 1/n.<br />

(c) Es gibt eine Konstante r, sodass nach rn-maliger Anwendung von Algorithmus<br />

6.3.16 auf G mit Wahrscheinlichkeit mindestens 1/2 eine Färbung aller<br />

Knoten gef<strong>und</strong>en wurde, die höchstens 1/2 eine Färbung aller Knoten gef<strong>und</strong>en<br />

wurde, die höchstens O(n log 3−ε 2 ) viele Farben benutzt.<br />

Insbesondere hat man so einen Algorithmus, der in polynomieller Zeit (polynomiell<br />

1<br />

abhängig von n, m, k <strong>und</strong> log2 +1) terminiert <strong>und</strong> mit Wahrscheinlichkeit mindestens<br />

ε0<br />

1/2 eine Färbung aller Knoten mit maximal O(nlog3−ε 2 ) vielen Farben ausgibt.<br />

Beweis: Übung! (Blatt 11)<br />

Nun fehlt noch der Beweis von Satz 6.3.15. �<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 39


Handouts zur VL vom 06.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

7.1 Die Klasse P CP (r(n), q(n))<br />

Erinnerung 7.1.1. Ein Entscheidungsproblem Π liegt in N P, falls es eine „Maschine“<br />

der folgenden Bauweise gibt, die für jede Instanz I für Π folgendes leistet: Falls I ∈ Π,<br />

so gibt sie „Ja“ für mindestens ein Zertifikat aus, falls I /∈ Π, so gibt sie „Nein“ für<br />

jedes Zertifikat aus.<br />

Instanz I<br />

0100110100...<br />

size = n<br />

☞<br />

Algorithmus<br />

poly(n) Operationen<br />

Zertifikat Z<br />

10100000000...<br />

size : poly(n)<br />

Ausgabe<br />

� Ja<br />

� Nein<br />

Definition 7.1.2. Zum Entscheidungsproblem Π gibt es einen (r(n), q(n))-beschränkten<br />

Verifyer, falls es eine „Maschine“ der folgenden Bauweise gibt:<br />

☞<br />

Zertifikat Z<br />

10100000000...<br />

size : poly(n)<br />

Zufallsgenerator<br />

Instanz I<br />

0100110100...<br />

size = n<br />

Abfrage einzelner<br />

Z-Einträge<br />

Ausleser<br />

O(q(n)) Operationen<br />

Zufallsfolge<br />

0100111001...<br />

size : O(r(n))<br />

Algorithmus<br />

poly(n) Operationen<br />

Zufallsabh.<br />

Teilzertifikat<br />

0001001001...<br />

size : O(q(n))<br />

Ausgabe<br />

� Ja<br />

� Nein<br />

Der Ausleser berechnet eine nur eine<br />

Menge von Stellenindizes <strong>und</strong> darf<br />

dabei die Zufallsfolge verwenden (muss<br />

aber nicht). Diese Stellen werden dann<br />

aus dem Zertifikat ausgelesen.<br />

Die zu O(r(n)) <strong>und</strong> O(q(n)) gehörigen Konstanten sind dabei bekannter Teil der<br />

„Maschine“.<br />

Beispiel: Wie groß sollte r(n) sein, um eine zufällige Stelle aus dem Zertifikat auszulesen?<br />

— Man kann eine Zufallsfolge der Länge O(log n) als Binärdarstellung eines<br />

Stellenindexes auffassen <strong>und</strong> so sogar gleichverteilt eine Zufallsstelle aus Z auslesen.<br />

Vorsicht: Noch haben wir keine Aussage darüber getroffen, ob bzw. wie häufig die<br />

Maschine eine richtige Antwort liefert!<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 40


Handouts zur VL vom 13.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

7.3 Nicht-Approximierbarkeit von Max-3-SAT<br />

Definition 7.3.1.<br />

(a) Für eine Boolsche Variable x (d.h. x kann genau die Werte „wahr“ <strong>und</strong> „falsch“<br />

annehmen) heißen x <strong>und</strong> x Literale; hierbei ist x die Verneinung von x.<br />

(b) Eine Klausel C ist ein Ausdruck der Form C = �<br />

i∈I zi, wobei I eine endliche<br />

Menge ist <strong>und</strong> zi ein Literal für alle i ∈ I.<br />

Beispiel: Der Ausdruck (x1 ∨ x2 ∨ x3 ∨ x4 ∨ x5) ist eine Klausel.<br />

(c) Eine SAT-Formel in CNF (conjunctive normal form) ist ein Ausdruck der Form<br />

�<br />

j∈J Cj, wobei J eine endliche Menge ist <strong>und</strong> Cj eine Klausel für alle j ∈ J.<br />

Beispiel: Der Ausdruck (x1 ∨ x2 ∨ x3 ∨ x4 ∨ x5) ∧ (x1 ∨ x2) ∧ (x2 ∨ x4 ∨ x5) ist eine<br />

SAT-Formel in CNF.<br />

(d) Eine SAT-Formel F in CNF heißt erfüllbar, falls es eine Belegung der Variablen,<br />

die in den Literalen von F benutzt werden, mit wahr-falsch-Werten gibt, sodass<br />

Einsetzen in F den Wert „wahr“ ergibt; eine solche Belegung heißt auch erfüllende<br />

Belegung.<br />

Definition 7.3.2. Eine 3-SAT-Formel F ist eine SAT-Formel in CNF, in der jede<br />

Klausel genau drei Literale hat.<br />

Beispiel: Der Ausdruck (x1∨x2∨x3)∧(x1∨x2∨x4)∧(x2∨x4∨x5) ist eine 3-SAT-Formel.<br />

Jede Klausel mit mehr als drei Literalen kann zu einer „äquivalenten“ 3-SAT-Formel<br />

gemacht werden:<br />

Lemma 7.3.3 (korrigierte Version). Seien k ≥ 4, x1, . . . , xk Boolsche Variablen <strong>und</strong><br />

zi ∈ {xi, xi} für i ∈ [k]. Betrachte die Klausel C = (z1 ∨ . . . ∨ zk) <strong>und</strong> wähle neue<br />

Boolsche Variablen u1, . . . , uk−3. Setze C ′ := (z1 ∨ z2 ∨ u1) ∧ (z3 ∨ u1 ∨ u2) ∧ (z4 ∨ u2 ∨<br />

u3) ∧ . . . ∧ (zk−2 ∨ uk−4 ∨ uk−3) ∧ (zk−1 ∨ zk ∨ uk−3).<br />

Für eine Belegung X der Variablen x1, . . . , xk mit wahr-falsch-Werten sind nun äquivalent:<br />

(i) Einsetzen von X in C ergibt „wahr“.<br />

(ii) Es gibt eine Belegung U der Variablen u1, . . . , uk−3 mit wahr-falsch-Werten,<br />

sodass Einsetzen von X <strong>und</strong> U in C ′ den Wert „wahr“ ergibt.<br />

Beweis: �<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 41


Handouts zur VL vom 13.07.2009 Stand dieser Sammlung: 17. Juli 2009<br />

Proposition 7.3.4. Eine SAT-Formel F in CNF kann in polynomieller Zeit in eine<br />

3-SAT-Formel F ′ mit<br />

übersetzt werden.<br />

F erfüllbar ⇔ F ′ erfüllbar<br />

Beweis: �<br />

Problem 7.3.5.<br />

(a) SAT:<br />

Eingabe: SAT-Formel F in CNF<br />

Frage: Ist F erfüllbar?<br />

(b) 3-SAT:<br />

Eingabe: 3-SAT-Formel F<br />

Frage: Ist F erfüllbar?<br />

(c) Max-SAT:<br />

Eingabe: SAT-Formel F in CNF, k ∈ N<br />

Frage: Sind mindestens k Klauseln in F gleichzeitig erfüllbar?<br />

(d) Max-3-SAT:<br />

Eingabe: 3-SAT-Formel F in CNF, k ∈ N<br />

Frage: Sind mindestens k Klauseln in F gleichzeitig erfüllbar?<br />

Proposition 7.3.6. SAT, 3-SAT, Max-SAT, Max-3-SAT ∈ N PC. (Ohne Beweis.)<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 42


Literatur Stand dieser Sammlung: 17. Juli 2009<br />

Literatur<br />

[ALM + 98] Arora, Sanjeev, Carsten L<strong>und</strong>, Rajeev Motwani, Madhu Sudan<br />

<strong>und</strong> Mario Szegedy: Proof verification and the hardness of approximation<br />

problems. J. ACM, 45(3):501–555, 1998.<br />

[BD97] Borchers, Al <strong>und</strong> Ding-Zhu Du: The k-Steiner ratio in graphs. SIAM<br />

J. Comput., 26(3):857–869, 1997.<br />

[BF81] Beck, Jozsef <strong>und</strong> Tibor Fiala: “Integer-making” theorems. Discrete<br />

Appl. Math., 3:1–8, 1981.<br />

[Com] The Complexity Zoo. http://www.complexityzoo.com.<br />

[Doe07] Doerr, Benjamin: Ro<strong>und</strong>ings respecting hard constraints. Theory Comput.<br />

Syst., 40(4):467–483, 2007.<br />

[FJ97] Frieze, A. <strong>und</strong> M. Jerrum: Improved approximation algorithms for<br />

MAX k-cut and MAX BISECTION. Algorithmica, 18(1):67–81, 1997.<br />

[FLT04] Feige, Uriel, László Lovász <strong>und</strong> Prasad Tetali: Approximating<br />

min sum set cover. Algorithmica, 40(4):219–234, 2004.<br />

[GJ79] Garey, Michael R. <strong>und</strong> David S. Johnson: Computers and Intractability.<br />

A guide to the theory of NP-completeness. W. H. Freeman and<br />

Co., San Francisco, Calif., 1979. A Series of Books in the Mathematical<br />

Sciences.<br />

[Grö04] Grötschel, Martin: Skriptum Lineare <strong>Optimierung</strong>. ZIB, Wintersemester<br />

2003/2004. http://www.zib.de/groetschel/teaching/<br />

skriptADMII.pdf.<br />

[GW95] Goemans, Michel X. <strong>und</strong> David P. Williamson: Improved approximation<br />

algorithms for maximum cut and satisfiability problems using<br />

semidefinite programming. J. Assoc. Comput. Mach., 42(6):1115–1145,<br />

1995.<br />

[Hoc97] Hochbaum, Dorit S. (Herausgeber): <strong>Approximation</strong> Algorithms for<br />

NP-Hard Problems. PWS Publishing Company, Boston, MA., 1997.<br />

[Hro04] Hromkovic, Juraj: Algorithmics for hard problems. 2nd ed., corr. 2nd<br />

printing. Texts in Theoretical Computer Science. An EATCS Series. Berlin:<br />

Springer, 2004.<br />

[KMS98] Karger, David, Rajeev Motwani <strong>und</strong> Madhu Sudan: Approximate<br />

graph coloring by semidefinite programming. J. ACM, 45(2):246–265, 1998.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 43


Literatur Stand dieser Sammlung: 17. Juli 2009<br />

[Kry05] Krysta, Piotr: Greedy approximation via duality for packing, combinatorial<br />

auctions and routing. In: Jedrzejowicz, Joanna (Hrsg.) et al.,<br />

Mathematical fo<strong>und</strong>ations of computer science 2005. 30th international<br />

symposium, MFCS 2005, Gdansk, Polen, 29.08. – 02.09.2005. Proceedings.<br />

Berlin: Springer. Lecture Notes in Computer Science 3618, 615-627, 2005.<br />

[KS08] Kliemann, Lasse <strong>und</strong> Anand Srivastav: Parallel Algorithms via the<br />

Probabilistic Method. In: Sanguthevar Rajasekaran and John H. Reif<br />

(Hrsg.), Parallel Computing: Models, Algorithms, and Applications, Chapman<br />

& Hall/CRC, 2008. Preprint unter http://www.numerik.uni-kiel.<br />

de/~lki/parallel_prob.pdf.<br />

[KV08] Korte, Bernhard <strong>und</strong> Jens Vygen: <strong>Kombinatorische</strong> <strong>Optimierung</strong>.<br />

Theorie <strong>und</strong> Algorithmen. Berlin: Springer, 2008.<br />

[MR95] Motwani, Rajeev <strong>und</strong> Prabhakar Raghavan: Randomized algorithms.<br />

Cambridge: Cambridge Univ. Press, 1995.<br />

[NPC] A compendium of NP optimization problems. http://www.nada.kth.se/<br />

~viggo/problemlist/compendium.html.<br />

[PS97] Panconesi, Alessandro <strong>und</strong> Aravind Srinivasan: Randomized distributed<br />

edge coloring via an extension of the Chernoff-Hoeffding bo<strong>und</strong>s.<br />

SIAM J. Comput., 26(2):350–368, 1997.<br />

[PS98] Papadimitriou, Christos H. <strong>und</strong> Kenneth Steiglitz: Combinatorial<br />

optimization: Algorithms and complexity. Dover Publications, Inc.,<br />

Mineola, NY, Corrected reprint of the 1982 original Auflage, 1998.<br />

[PS02] Prömel, Hans-Jürgen <strong>und</strong> Angelika Steger: The Steiner tree problem.<br />

A tour through graphs, algorithms, and complexity. Advanced<br />

Lectures in Mathematics. Braunschweig: Vieweg, 2002.<br />

[SS95] Srivastav, Anand <strong>und</strong> Peter Stangier: Weighted Fractional and<br />

Integral k-matching in Hypergraphs. Discrete Applied Mathematics, 57(2-<br />

3):255–269, 1995.<br />

[SS96] Srivastav, Anand <strong>und</strong> Peter Stangier: Algorithmic Chernoff-<br />

Hoeffding inequalities in integer programming. Random Structures and<br />

Algorithms, 1(8):27–58, 1996.<br />

B. Langfeld, A. Srivstav: <strong>Kombinatorische</strong> <strong>Optimierung</strong> (CAU, SoSe 2009) 44

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!