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.
152 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
<br />
<br />
v0 <br />
<br />
v1 <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
vi+1 <br />
<br />
<br />
<br />
<br />
<br />
vi <br />
<br />
<br />
<br />
•<br />
p<br />
•<br />
• •<br />
•<br />
• •<br />
a<br />
Wir suchen also i0 = 0, . . .,n−1, so dass r im Sektor (vi0, p, vi0+1) liegt (hier<br />
wird i0 + 1 modulo n berechnet, d.h., (n − 1) + 1 = 0). Wir wenden b<strong>in</strong>äres<br />
Suchen an: falls wir, für jedes i = 0, . . . , n − 1, <strong>in</strong> konstanter Schrittzahl O(1)<br />
entscheiden, ob i0 kle<strong>in</strong>er, gleich oder größer als i ist, berechnen wir i0 <strong>in</strong><br />
O(log n) Schritten. Falls r rechts von p liegt (rx ≥ px) brauchen wir nur die<br />
Ecken rechts von p betrachten. Sei also vi e<strong>in</strong>e solche Ecke:<br />
<br />
<br />
<br />
<br />
<br />
vi0 <br />
<br />
•<br />
r<br />
•<br />
<br />
<br />
<br />
•<br />
<br />
<br />
•<br />
vi0+1<br />
<br />
<br />
<br />
<br />
•<br />
<br />
vi <br />
<br />
<br />
<br />
Falls r über L(p, vi) liegt, gilt i0 > i. Falls r unter L(p, vi), aber über L(p, vi+1)<br />
liegt, gilt i0 = i . Und falls r unter L(p, vi+1) liegt, gilt i0 < i. Diese Entscheidung<br />
benötigt e<strong>in</strong>e konstante Zahl von Schritten. Analoges gilt für a l<strong>in</strong>ks von<br />
p (rx ≤ px).<br />
3. Falls der Sektor (vi, p, vi+1), <strong>in</strong> dem r liegt, berechnet worden ist, gilt: r liegt<br />
genau dann im Inneren des Polygons P, wenn es im Inneren des Dreiecks<br />
(vi, p, vi+1) liegt. Dies bestimmen wir <strong>in</strong> konstanter Zahl O(1) von Schritten.<br />
(Sei αx + βy + γ = 0 die Gleichung der L<strong>in</strong>ie L(vi, vi+1). Dann liegt r genau<br />
dann im Inneren des Dreiecks, wenn αx + βy + γ dieselben Zeichen für die<br />
Koord<strong>in</strong>aten von r und p hat.)<br />
Zeitkomplexität Der Algorithmus wird <strong>in</strong><br />
Schritten durchgeführt.<br />
O(1) + O(log n) + O(1) = O(log n)<br />
Beispiel 4 (KONVEXE HÜLLE). E<strong>in</strong>gabe: Punkte v1, . . . , vn <strong>in</strong> der Ebene mit<br />
paarweise verschiedenen x-Koord<strong>in</strong>aten.<br />
Ausgabe: Konvexe Hülle, d.h., das kle<strong>in</strong>ste Polygon, das alle Punkte enthält.<br />
Bemerkung 2. Jede Ecke der konvexen Hülle ist e<strong>in</strong>er der gegebenen Punkte.<br />
Das kann man sich leicht am Gummiband-Modell klarmachen: stellen wir uns e<strong>in</strong><br />
elastisches Gummiband vor, das so gestreckt wird, dass es alle gegebenen Punkte<br />
enthält, und anschließend losgelassen wird. Es formt dann die konvexe Hülle.