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