18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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 />

≤ ε

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!