Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ... Skript in PDF - Theoretische Informatik - Technische Universität ...
182 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN 4: Tm := Sopt(i)=m ti 5: end for 6: for i = r + 1 to n do 7: m := ein Index mit Tm = min{T1, . . . , Tk} 8: S(i) := m 9: Tm := Tm + ti 10: end for Korrektheit: klar Zeitkomplexität: Für jede Konstante r hat dieser Algorithmus dieselbe Zeitkomplexität O(n · log n) wie oben in Beispiel 3. Genauer: der Algorithmus braucht die Zeit O(n log n + k r+1 ). Für jede Konstante r ist dies einfach O(n log n). Wenn aber ε in (1) gegen Null geht, wächst r und die Zeitkomplexität steigt exponentiell. In der Tat kann die optimale Zuordnung in Zeile 2 wie folgt gefunden werden: wir durchsuchen alle k r möglichen Zurodnungen: für jede Zuordnung S berechnen wir in der Zeit O(k) die gesamte Bearbeitungszeit T(S), die die m Arbeiten unter der Planung S dauern, und dann finden wir in der Zeit O(k r ) das Minimum aller T(S). Schritt 2 dauert also O(k · k r ) Zeiteinheiten. O(k k/ε ) Zeiteinheiten und der Algorithmus hat also die Zeitkomplexität O(n·log n+k M+1 ). Approximierung: Wir beweisen, dass unser Algorithmus ε-approximierbar ist, falls (1) gilt: (2) aus r ≥ k ε folgt T − Topt Topt Beweis. T sei der Zeitbedarf der Zuordnung, die unser Algorithmus findet. Es muß mindestens eine Aufgabe Wi geben, die genau zur Zeit T beendet wird. Falls i ≤ r, ist Wi eine der optimal zugeordneten Aufgaben W1, . . . , Wr – also stimmt der Zeitbedarf T (zufällig) mit dem (optimalen) Zeitbedarf für die ersten r Aufgaben überein und ist folglich selber optimal, T = Topt, was (2) beweist. Wir können also (3) i > r annehmen. Also erfolgt die Zuordnung der Aufgabe Wi durch den obigen Algorithmus A. Die Aufgabe Wi beginnt zur Zeit T −ti. Daraus folgt, dass alle k Maschinen im Zeitraum [0, T −ti) durchgängig beschäftigt sind. Falls es nämlich eine Maschine geben sollte, deren Tätigkeit zur Zeit T0 < T − ti aufhört, würde der Algorithmus A die Aufgabe Wi auf dieser Maschine zum Zeitpunkt T0 beginnen lassen (denn A bevorzugt die weniger beschäftigten Maschinen) und somit würde Wi nicht zur Zeit T enden. Die Gesamtarbeitszeit aller k Maschinen im Zeitraum [0, T −ti), also einem Intervall der Länge T − ti, beträgt also k(T − ti). Aber der Algorithmus A verplant nur Aufgaben Wj mit j < i in diesem Zeitraum (da Wi selbst erst zur Zeit T − ti anfängt). Im Intervall [0, T − ti) werden also nur die Aufgaben W1, . . . , Wi−1 bearbeitet. Die Gesamtarbeitszeit k(T − ti) ist also höchstens so groß wie die Zeit t1 + · · · + ti−1, die die Bearbeitung der Aufgaben W1, . . . , Wi−1 verlangt: (4) k(T − ti) ≤ t1 + · · · + ti−1. Es gilt also (5) T ≤ t1 + · · · + ti−1 k + ti. ≤ ε
6.11. APPROXIMATION VON OPTIMIERUNGSPROBLEMEN 183 Anderseits dauern alle n Aufgaben insgesamt t1 + · · · + tn Zeiteinheiten. Die optimale Zuordnung ergibt einen Zeitbedarf von Topt Zeiteinheiten, dabei sind die k Maschinen maximal kTopt Zeiteinheiten aktiv (falls alle die ganze Zeit beschäftigt sind). Daraus folgt (6) kTopt ≥ t1 + · · · + tn. Dann gilt (7) Topt ≥ t1 + · · · + tn k Die Kombination von (5) und (7) ergibt T − Topt ≤ t1 + · · · + ti−1 k Aus (2) wissen wir, dass ti ≤ tr (denn i > r), also (8) T − Topt ≤ tr. ≥ t1 + · · · + ti−1 . k + ti − t1 + · · · + ti−1 k Jetzt benutzen wir (6) nochmals: da t1 ≥ t2 · · · ≥ tn, gilt Topt ≥ t1 + · · · + tn k und kombiniert mit (8), bekommen wir (9) Da r ≥ k ε T − Topt Topt ≥ t1 + · · · + tr k ≤ tr r·tr k = k r . ≥ r · tr k = ti k ist, folgt r ≤ ε, also ist (9) die gewünschte Ungleichung. Satz 1. Für kein ε > 0 gibt es einen ε-approximierenden Algorithmus für TSP, falls P = N P. Beweis. Wir wissen, dass HAMILTONSCHER KREIS ein N P-vollständiges Problem ist. Wir beweisen, dass wir einen Algorithmus A der Klasse P für HAMIL- TONSCHER KREIS finden können, falls ein ε-approximierender Algorithmus Aε für TSP gegeben ist – es folgt, dass P = N P. Ein ungerichteter Graph G als Eingabe wird von A wie folgt bearbeitet: Der Algorithmus Aε wird auf das TSP angewendet mit n Städten und 1 falls (i, j) eine Kante von G ist di,j = 2 + ⌈εn⌉ falls nicht, wobei ⌈εn⌉ die kleinste ganze Zahl ≥ εn ist. Bezeichnen wir mit c die Kosten der Tour, die Aε findet. Der Algorithmus A liefert die Antwort JA genau dann, wenn c ≤ (1 + ε)n. Korrektheit des Algorithmus A: wir beweisen In der Tat: G hat einen Hamiltonschen Kreis ⇐⇒ c ≤ (1 + ε)n.
- Seite 66 und 67: 132 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 68 und 69: 134 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 70 und 71: 136 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 72 und 73: 138 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 74 und 75: 140 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 76 und 77: 142 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 78 und 79: 144 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 80 und 81: 146 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 82 und 83: 148 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 84 und 85: 150 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 86 und 87: 152 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 88 und 89: 154 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 90 und 91: 156 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 92 und 93: 158 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 94 und 95: 160 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 96 und 97: 162 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 98 und 99: 164 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 100 und 101: 166 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 102 und 103: 168 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 104 und 105: 170 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 106 und 107: 172 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 108 und 109: 174 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 110 und 111: 176 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 112 und 113: 178 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 114 und 115: 180 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 118 und 119: 184 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 120 und 121: 186 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 122 und 123: 188 KAPITEL 6. KOMPLEXITÄT VON ALG
182 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
4: Tm := <br />
Sopt(i)=m ti<br />
5: end for<br />
6: for i = r + 1 to n do<br />
7: m := e<strong>in</strong> Index mit Tm = m<strong>in</strong>{T1, . . . , Tk}<br />
8: S(i) := m<br />
9: Tm := Tm + ti<br />
10: end for<br />
Korrektheit: klar<br />
Zeitkomplexität: Für jede Konstante r hat dieser Algorithmus dieselbe Zeitkomplexität<br />
O(n · log n) wie oben <strong>in</strong> Beispiel 3. Genauer: der Algorithmus braucht die<br />
Zeit<br />
O(n log n + k r+1 ).<br />
Für jede Konstante r ist dies e<strong>in</strong>fach O(n log n). Wenn aber ε <strong>in</strong> (1) gegen Null<br />
geht, wächst r und die Zeitkomplexität steigt exponentiell.<br />
In der Tat kann die optimale Zuordnung <strong>in</strong> Zeile 2 wie folgt gefunden werden: wir<br />
durchsuchen alle k r möglichen Zurodnungen: für jede Zuordnung S berechnen wir<br />
<strong>in</strong> der Zeit O(k) die gesamte Bearbeitungszeit T(S), die die m Arbeiten unter der<br />
Planung S dauern, und dann f<strong>in</strong>den wir <strong>in</strong> der Zeit O(k r ) das M<strong>in</strong>imum aller T(S).<br />
Schritt 2 dauert also O(k · k r ) Zeite<strong>in</strong>heiten.<br />
O(k k/ε )<br />
Zeite<strong>in</strong>heiten und der Algorithmus hat also die Zeitkomplexität O(n·log n+k M+1 ).<br />
Approximierung: Wir beweisen, dass unser Algorithmus ε-approximierbar ist, falls<br />
(1) gilt:<br />
(2) aus r ≥ k<br />
ε<br />
folgt T − Topt<br />
Topt<br />
Beweis. T sei der Zeitbedarf der Zuordnung, die unser Algorithmus f<strong>in</strong>det. Es<br />
muß m<strong>in</strong>destens e<strong>in</strong>e Aufgabe Wi geben, die genau zur Zeit T beendet wird. Falls<br />
i ≤ r, ist Wi e<strong>in</strong>e der optimal zugeordneten Aufgaben W1, . . . , Wr – also stimmt der<br />
Zeitbedarf T (zufällig) mit dem (optimalen) Zeitbedarf für die ersten r Aufgaben<br />
übere<strong>in</strong> und ist folglich selber optimal, T = Topt, was (2) beweist. Wir können also<br />
(3) i > r<br />
annehmen. Also erfolgt die Zuordnung der Aufgabe Wi durch den obigen Algorithmus<br />
A. Die Aufgabe Wi beg<strong>in</strong>nt zur Zeit T −ti. Daraus folgt, dass alle k Masch<strong>in</strong>en<br />
im Zeitraum [0, T −ti) durchgängig beschäftigt s<strong>in</strong>d. Falls es nämlich e<strong>in</strong>e Masch<strong>in</strong>e<br />
geben sollte, deren Tätigkeit zur Zeit T0 < T − ti aufhört, würde der Algorithmus<br />
A die Aufgabe Wi auf dieser Masch<strong>in</strong>e zum Zeitpunkt T0 beg<strong>in</strong>nen lassen (denn<br />
A bevorzugt die weniger beschäftigten Masch<strong>in</strong>en) und somit würde Wi nicht zur<br />
Zeit T enden. Die Gesamtarbeitszeit aller k Masch<strong>in</strong>en im Zeitraum [0, T −ti), also<br />
e<strong>in</strong>em Intervall der Länge T − ti, beträgt also k(T − ti). Aber der Algorithmus A<br />
verplant nur Aufgaben Wj mit j < i <strong>in</strong> diesem Zeitraum (da Wi selbst erst zur Zeit<br />
T − ti anfängt). Im Intervall [0, T − ti) werden also nur die Aufgaben W1, . . . , Wi−1<br />
bearbeitet. Die Gesamtarbeitszeit k(T − ti) ist also höchstens so groß wie die Zeit<br />
t1 + · · · + ti−1, die die Bearbeitung der Aufgaben W1, . . . , Wi−1 verlangt:<br />
(4) k(T − ti) ≤ t1 + · · · + ti−1.<br />
Es gilt also<br />
(5) T ≤ t1 + · · · + ti−1<br />
k<br />
+ ti.<br />
≤ ε