28.10.2014 Aufrufe

Umwege in Polygonen - Universität Bonn

Umwege in Polygonen - Universität Bonn

Umwege in Polygonen - Universität Bonn

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.

8 E<strong>in</strong> schneller Approximationsalgorithmus<br />

Durch die umfangreichen Vorarbeiten der vorangehenden Abschnitte können wir jetzt e<strong>in</strong>en<br />

Approximationsalgorithmus angeben, der im wesentlichen dem Approximationsalgorithmus<br />

des Kettenfalles aus Abschnitt 4 von [EBKLL01] entspricht. Wir geben aus Vollständigkeitsgründen<br />

die gesamte Argumentation wieder und heben die nötigen Änderungen hervor.<br />

Für den Anfang beschränken wir uns auf Eckpunkt-Randpunkt-Paare, die <strong>in</strong> e<strong>in</strong>em bestimmten<br />

W<strong>in</strong>kel zue<strong>in</strong>ander liegen. Im folgenden sei bei dem Eckpunkt-Randpunkt-Paar<br />

(p, q) immer p e<strong>in</strong> Eckpunkt. Weiter nennen wir (p, q) e<strong>in</strong> Punktpaar <strong>in</strong> Richtung ρ, wenn<br />

q − p = |q − p| (cos ρ, s<strong>in</strong> ρ) gilt. Über solche Paare können wir folgende Aussage treffen:<br />

Lemma 8.1 Zu e<strong>in</strong>em gegebenen W<strong>in</strong>kel ρ kann man <strong>in</strong> Zeit O(n log n) e<strong>in</strong> <strong>in</strong> P oder<br />

P C gegenseitig sichtbares Eckpunkt-Randpunkt-Paar <strong>in</strong> Richtung ρ f<strong>in</strong>den, welches e<strong>in</strong>en<br />

maximalen Umweg unter allen solchen Eckpunkt-Randpunkt-Paaren realisiert.<br />

Sweep-L<strong>in</strong>e<br />

ρ<br />

P<br />

q<br />

p<br />

Abbildung 38: Sweep-Algorithmus zum F<strong>in</strong>den von Punktpaaren <strong>in</strong> Richtung ρ<br />

Beweis. Mit e<strong>in</strong>em e<strong>in</strong>fachen Sweep-Algorithmus lassen sich, wie <strong>in</strong> Abbildung 38 gezeigt, <strong>in</strong><br />

O(n log n) alle <strong>in</strong> P oder P C gegenseitig sichtbaren Eckpunkt-Randpunkt-Paare <strong>in</strong> Richtung<br />

ρ f<strong>in</strong>den. Drehe dazu das Polygon so, dass ρ zu π/2 wird und lasse dann e<strong>in</strong>e vertikale<br />

Sweep-L<strong>in</strong>e von l<strong>in</strong>ks nach rechts laufen. Die Polygoneckpunkte werden dazu <strong>in</strong> O(n log n)<br />

nach x-Koord<strong>in</strong>ate sortiert.<br />

Erreicht die Sweep-L<strong>in</strong>e e<strong>in</strong>en Polygoneckpunkt p, so tritt e<strong>in</strong> Sweep-Event auf. Falls es<br />

e<strong>in</strong> solches gibt, wird das zugehörige Eckpunkt-Randpunkt-Paar (p, q) <strong>in</strong> Richtung ρ zur<br />

Ergebnisliste h<strong>in</strong>zugefügt. Die Ermittlung von q erfolgt <strong>in</strong> konstanter Zeit, da der Algorithmus<br />

die gerade von der Sweep-L<strong>in</strong>e berührten Polygonrandkanten nach ihrer Höhe sortiert<br />

speichert. Während e<strong>in</strong>es Events werden also die durch die gefundenen Polygoneckpunkte<br />

beendeten Kanten aus dem Speicher gelöscht und die neu begonnenen werden neu aufgenommen.<br />

Benutzt man zur Speicherung der aktuellen Kanten e<strong>in</strong>en balancierten Baum, so<br />

funktioniert dies <strong>in</strong> e<strong>in</strong>er Laufzeit von O(log n) pro Zugriff. Insgesamt benötigt der Sweep-<br />

Algorithmus also e<strong>in</strong>e Laufzeit von O(n log n) und f<strong>in</strong>det natürlich höchstens O(n) viele<br />

Eckpunkt-Randpunkt-Paare <strong>in</strong> Richtung ρ.<br />

Etwas mehr Gedanken als im Streckenzugfall muss man sich über die Laufzeit der an-<br />

59

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!