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

Erfolgreiche ePaper selbst erstellen

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

6.5. GEOMETRISCHE ALGORITHMEN UND REELLE RAM 155<br />

Da die Gleichung t(n) = 2t( n<br />

2 ) + K · n die Lösung t(n) = K · n · log n hat, ist damit<br />

bewiesen, dass Schritt 2 die Zeitkomplexität O(n log n) hat.<br />

Wie wird die obere Tangente berechnet? Wir zeigen zuerst, wie man für jeden<br />

Punkt pi (i = 1, . . .,s) <strong>in</strong> der Zeit O(log t) die obere Tangente von pi zu den Punkten<br />

q1, . . . , qt berechnet, also wie man den Index j(i) f<strong>in</strong>det, so dass alle Punkte q1, . . . , qs<br />

unter der L<strong>in</strong>ie L(pi, q j(i)) liegen.<br />

•<br />

<br />

<br />

<br />

<br />

<br />

•<br />

<br />

<br />

<br />

•<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

<br />

<br />

<br />

pi •<br />

<br />

<br />

<br />

<br />

<br />

•<br />

• <br />

•<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

<br />

<br />

q<br />

<br />

j(i)<br />

<br />

<br />

•<br />

<br />

•<br />

qj+1<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

<br />

qj<br />

<br />

• qj−1<br />

• <br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Das können wir <strong>in</strong> der Zeit O(log t) durch b<strong>in</strong>äres Suchen zwischen j = 1, . . .,t<br />

berechnen, falls wir für jedes j <strong>in</strong> konstanter Zeit O(1) bestimmen, ob j(i) größer,<br />

gleich oder kle<strong>in</strong>er als j ist. In der Tat:<br />

• falls qj−1 und qj+1 unter L(pi, qj) liegen gilt j = j(i),<br />

• falls qj−1 über L(pi, qj) liegt gilt j > j(i),<br />

• falls qj+1 über L(pi, qj) liegt gilt j < j(i).<br />

Analog kann man zeigen, dass <strong>in</strong> der Zeit O(log n) die globale obere Tangente<br />

L(pi0, qj0) berechnet werden kann. Hier müssen wir für jedes Paar (i, j) entscheiden,<br />

welcher der 9 Fälle (i = i0, j = j0 oder i = i0, j < j0 usw.) zutrifft. Jetzt bestimmen<br />

wir i0 durch b<strong>in</strong>äres Suchen zwischen i = 1, . . .,s: für jedes i benötigen wir die Zeit<br />

O(log t), um j(i) zu berechnen, und dann nur konstante Zeit, um zu entscheiden,<br />

ob i0 größer, gleich oder kle<strong>in</strong>er als i ist:<br />

pi0<br />

•<br />

<br />

•<br />

•<br />

pi+1<br />

<br />

<br />

pi<br />

•<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

<br />

pi−1<br />

<br />

<br />

•<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

• <br />

<br />

<br />

<br />

<br />

<br />

• <br />

qj0<br />

•<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

<br />

<br />

<br />

•<br />

<br />

<br />

q <br />

j(i)<br />

<br />

<br />

•<br />

<br />

•<br />

<br />

<br />

<br />

•<br />

<br />

<br />

<br />

<br />

•<br />

• <br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

• falls pi−1 und pi+1 unter L(pi, q j(i)) liegen, gilt i = i0,<br />

• falls pi−1 über L(pi, q j(i)) liegt, gilt i < i0,<br />

• falls pi+1 über L(pi, q j(i)) liegt, gilt i > i0.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!