Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
180 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
6: E := E − {v : v e<strong>in</strong>e Kante mit Endknoten x oder y}<br />
7: od<br />
Korrektheit: Wir konstruieren hier e<strong>in</strong>e Menge D von Knoten mit der Eigenschaft,<br />
dass jede im Schritt 6 entfernte Kante e<strong>in</strong>en Endknoten <strong>in</strong> D hat. Da am Ende alle<br />
Kanten entfernt worden s<strong>in</strong>d, ist D e<strong>in</strong>e Knotenüberdeckung.<br />
Zeitkomplexität ist l<strong>in</strong>ear, denn jede Kante des Graphen wird von dem Algorithmus<br />
nur e<strong>in</strong>mal besucht.<br />
Beziehung zum Optimum: Bezeichnen wir für jeden Graphen G mit opt(G) die m<strong>in</strong>imale<br />
Größe e<strong>in</strong>er Knoten-Überdeckung und mit c(G) die Größe der Überdeckung,<br />
die unser Algorithmus konstruiert. Es gilt<br />
c(G) ≤ 2opt(G).<br />
In der Tat hat der Algorithmus die folgende Eigenschaft: D wird mittels paarweise<br />
disjunkter Kanten des Graphen G konstruiert. Jede Überdeckung D0 muß wenigsten<br />
e<strong>in</strong>en Endknoten von jeder dieser Kanten enthalten, also muß D0 m<strong>in</strong>destens<br />
halbsoviele Elemente wie D haben.<br />
Def<strong>in</strong>ition. Sei (Σ, E, A, L, c) e<strong>in</strong> Optimierungsproblem. E<strong>in</strong> ε-approximierender<br />
Algorithmus (ε ≥ 0 e<strong>in</strong>e reelle Zahl) ist e<strong>in</strong> Algorithmus der Klasse P, der für jede<br />
E<strong>in</strong>gabe w ∈ E e<strong>in</strong>e Ausgabe v ∈ A mit vLw berechnet, so dass der relative Fehler<br />
von c(w, v) im Vergleich zum optimalen Wert opt(w) kle<strong>in</strong>er gleich ε ist; d.h., es gilt<br />
c(w, v) − opt(w)<br />
opt(w)<br />
Beispiel 2. Für MINIMALE KNOTEN-ÜBERDECKUNG haben wir e<strong>in</strong>en 1approximierenden<br />
Algorithmus gefunden: es gilt c(w, v) ≤ 2opt(v), also<br />
c(w, v) − opt(w)<br />
opt(w)<br />
≤ ε.<br />
≤ 1.<br />
Dieser Algorithmus ist nicht ε-approximierend für ε < 1, denn schon für den Graphen<br />
mit zwei Knoten und e<strong>in</strong>er Kante gilt opt = 1, c(w, v) = 2.<br />
Beispiel 3 (SIT (Schedul<strong>in</strong>g Independent Tasks)). Es sollen Aufgaben W1, . . . , Wn<br />
mit gegebener zeitlicher Dauer t1, . . .,tn durch k Masch<strong>in</strong>en bewältigt werden. Wir<br />
nehmen an, dass jede Masch<strong>in</strong>e unabhängig von den anderen jede Aufgabe bearbeiten<br />
kann. Unsere Ziel ist es, e<strong>in</strong>en Plan (schedule) zu erstellen, d.h. jeder Arbeit Wi<br />
(i = 1, . . .,n) e<strong>in</strong>e Masch<strong>in</strong>e S(i) = 1, . . .,k zuzuordnen, so dass der Zeitbedarf T<br />
zur Erledigung aller Aufgaben m<strong>in</strong>imal ist. Die Laufzeit der Masch<strong>in</strong>e m(= 1, . . .,k)<br />
beträgt ti, wobei über alle i mit S(i) = m summiert wird. Der Zeitbedarf ist somit<br />
T = max{ <br />
S(i)=1<br />
ti, . . . , <br />
S(i)=k<br />
Da die Zahl k der Masch<strong>in</strong>en konstant ist, bezeichnen wir das Problem als SIT(k).<br />
Wir haben also:<br />
E<strong>in</strong>gabe von SIT(k): Zahlen t1, . . . , tn.<br />
Ausgabe von SIT(k): e<strong>in</strong>e Funktion<br />
S : {1, . . .,n} → {1, . . .,k},<br />
ti}.