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.

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.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!