Algorithmische Geometrie 7. Punktsuche (Teil 2)

Ähnliche Dokumente
Algorithmische Geometrie 3. Schnitte von Liniensegmenten

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Geometrische Algorithmen Punkt-in-Polygon-Suche. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Punkt-in-Polygon-Suche Übersicht

Punktlokalisation 1. Trapez-Zerlegungen. 2. Eine Suchstruktur. 3. Randomisierter, inkrementeller Algorithmus zur Konstruktion der Trapez-Zerlegung

Algorithmische Geometrie 5. Triangulierung von Polygonen

Algorithmische Geometrie 7. Punktsuche

2.4. Triangulierung von Polygonen

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Algorithmische Geometrie 4. Schnitte planarer Unterteilungen

Geradenarrangements und Dualität von Punkten und Geraden

Geradenarrangements und Dualität von Punkten und Geraden

Algorithmische Geometrie 1. Einführung

Algorithmische Geometrie: Schnittpunkte von Strecken

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"):

Punkt-in-Polygon-Suche Übersicht

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Triangulierung von einfachen Polygonen

Algorithmische Geometrie 8. Voronoidiagramme und Delaunaytriangulierung

Polygontriangulierung

Geometrische Algorithmen Voronoi-Diagramme. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Voronoi-Diagramme

Geometrische Algorithmen

Dualität + Quad-trees

Voronoi-Diagramme und Delaunay-Triangulierungen

Aufgabensammlung zur algorithmischen Geometrie

Die Geometrie der Tischlerei

Übung zur Vorlesung Algorithmische Geometrie

Maximale s t-flüsse in Planaren Graphen

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Triangulierung von einfachen Polygonen

Polygontriangulierung

Parallele Algorithmen in der Bildverarbeitung

14. Rot-Schwarz-Bäume

Die Berechnung der Triangulation eines Polygons in fast-linearer Zeit.

2.7.1 Inside-Test Konvexe Hülle Nachbarschaften Schnittprobleme

Voronoi Diagrams. Christian Wellenbrock. December 1, 2009

Algorithmische Geometrie

Datenstrukturen und Algorithmen D-INFK

Das Voronoi Diagramm. 1. Definition. 2. Eigenschaften. 3. Größe und Speicherung. 4. Konstruktion. 5. Verwendung

7. Triangulation von einfachen Polygonen

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

Algorithmische Geometrie

Kanonische Ordnungen und die Mondshein-Sequenz

KD-Bäume. ein Vortrag von Jan Schaefer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Geometrische Algorithmen Segmentschnitt

Geometrische Algorithmen Einige einfache Definitionen: Ist ein Punkt in einem Polygon? Punkt-in-Polygon-Problem. Das Punkt-in-Polygon-Problem

Hallo Welt für Fortgeschrittene

Polygon Triangulation. robot.scr. "Art Gallery Problem" Sichtbarkeitspolygon. Algorithmische Geometrie - SS 99 - Th. Ottmann

Das Falten-und-Schneiden Problem

Lineares Programmieren

7. Sortieren Lernziele. 7. Sortieren

Grundlagen: Algorithmen und Datenstrukturen

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

5. Bäume und Minimalgerüste

Algorithmen II Vorlesung am

Quadtrees und Meshing

Geometrische Algorithmen

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Quadtrees und Meshing

Algorithmen und Datenstrukturen I AVL-Bäume

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Informatik II Prüfungsvorbereitungskurs

Quadtrees und Meshing

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

KARL-FRANZENS-UNIVERSITÄT GRAZ. Seminar aus Reiner Mathematik. Die Museumswächter. Krupic Mustafa Wintersemester 2013/14

Delaunay-Triangulierungen

Algorithmische Geometrie. Prof. Dr. Thomas Ottmann. Mitarbeit: PD Dr. Sven Schuierer Dr. Stefan Edelkamp

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Uberblick 1. Problemstellung 2. Kongurationsraum 3. Bewegungsplanung fur einen Punktroboter 4. Minkowski Summen 5. Pseudo-Scheiben 6. Bewegungsplanung

Abschnitt 18: Effizientes Suchen in Mengen

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

Relationen und DAGs, starker Zusammenhang

durch Einfügen von Knoten konstruiert werden kann.

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Triangulierung von Polygonen und das Museumsproblem

Die Determinante eines Friesmuster

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Vorlesung Datenstrukturen

M. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)

Transkript:

Algorithmische Geometrie 7. Punktsuche (Teil 2) JProf. Dr. Heike Leitte Computergraphik und Visualisierung

Inhaltsverzeichnis 1. Einführung 2. Konvexe Hülle 3. Schnitte von Liniensegmenten 4. Schnitte planarer Unterteilungen 5. Triangulierung von Polygonen 6. Lineare Programme 7. Punktsuche 8. Voronoidiagramme und Delaunay-Triangulierung 9. Allgemeine Suchstrukturen Algorithmische Geometrie 7. Punktsuche 2

Punktsuche in planarer Unterteilung Algorithmische Geometrie 7. Punktsuche 3

Punktsuche in planarer Unterteilung Erste Idee Wir haben bisher nur Punkte in unserer Datenstruktur abgelegt und dann Exact Match Query und Range Query durchgeführt. Eine typische Aufgabe ist jedoch insbesondere, eine Point Query auf einer planaren Unterteilung durchzuführen. Dazu dienen unter anderem Trapezkarten (engl. trapezoidal maps). Um auf den richtigen Weg zu gelangen, führen wir senkrechte Linien durch jeden Eckpunkt der planaren Unterteilung ein. Es entstehen Scheiben aus Stücken, die alle trapezförmig sind, da keine Schnittpunkte oder Eckpunkte zwischen den senkrechten Linien liegen. Man kann nun die Trapeze zwischen zwei Linien von oben nach unten ordnen und in O(log n) das richtige Stück zu einem Punkt ermitteln. Die gesamte Suche erfordert O(log 2n) Schritte für die Suche der richtigen beiden Linien und O(log n) für das richtige Stück, falls n die Anzahl der Karten in der Unterteilung ist. Algorithmische Geometrie 7. Punktsuche 4

Streifenansatz Algorithmische Geometrie 7. Punktsuche 5

Streifenansatz Komplexität Algorithmische Geometrie 7. Punktsuche 6

Speicherbedarf Leider benötigt man ein nach den x-koordinaten sortiertes Array der Punkte mit O(n) Speicher und n Arrays für die Scheiben (Bereich zwischen zwei Linien), die jeweils auch O(n) Speicher benötigen können. Ein Beispiel mit n/4 Streifen mit jeweils n/4 Elementen pro Streifen ist unten skizziert. Also ist O(n 2 ) Speicher nötig und unsere Idee benötigt deutliche Verbesserungen. Algorithmische Geometrie 7. Punktsuche 7

Trapezkarte Wir formulieren nun trapezkarten als Lösung. Dazu definieren wir ein alle Eckpunkte enthaltendes Rechteck R, so dass wir nur diesen Bereich untersuchen müssen und keine unbeschränkten Stücke behandeln. Ferner nehmen wir zunächst an, dass zwei Eckpunkte verschiedene x-koordinaten haben. Dies korrigieren wir später. Eine solche planare Unterteilung heißt planare Unterteilung in allgemeiner Lage. Definition 3.9 (vertikale Verlängerung): Sei S eine planare Unterteilung in allgemeiner Lage. Die Trapezkarte T(S) von S entsteht, indem man zwei vertikale Verlängerungen jedes Endpunktes P durch die benachbarten Facetten zeichnet. Die Verlängerung in positiver y-richtung heißt obere vertikale Verlängerung, die andere (in negativer y-richtung) untere vertikale Verlängerung. Algorithmische Geometrie 7. Punktsuche 8

Seiten von Facetten Lemma 3.10: Eine Facette von T(S) hat eine oder zwei vertikale Seiten und genau zwei nicht-vertikale Seiten. Beweis: Sei f eine Facette von T(S). Wir zeigen zunächst, dass f konvex ist. Da sich die Liniensegmente von S nicht schneiden, sind die Ecken von f entweder Eckpunkte von S oder R oder sie sind Schnitte vertikaler Verlängerungen mit Kanten von S oder R. Wegen der vertikalen Verlängerungen können an den Vertices keine Innenwinkel größer 180 o auftreten. Die Ecken von R sind rechtwinklig (=90 ). Winkel zwischen Liniensegment und vertikaler Verlängerung sind ebenfalls kleiner 180. Alle Innenwinkel sind kleiner 180. Also ist f konvex. Nun zeigen wir die Aussagen des Lemmas. (i) Aufgrund der Konvexität kann f nicht mehr als zwei vertikale Seiten haben. (ii) Für einen Widerspruchsbeweis nehmen wir an, f hat mehr als zwei nicht-vertikale Seiten. Zwei davon müssen benachbart sein und f von oben oder unten begrenzen. Die Seiten ergeben sich aus den Liniensegmenten von S und R, welche sich nach Definition nicht schneiden. Somit treffen sich die beiden nicht-vertikalen Seiten in einem Vertex von S oder R. Hier starten aber vert. Verlängerungen, wodurch die beiden Seiten nicht mehr benachbart sind. Widerspruch zur Annahme. Es gibt maximal zwei nicht-vertikale Seiten. (iii) Schließlich, da f beschränkt ist, muss f mind. eine vertikale und zwei nicht-vertikale Seiten haben (mind. drei Seiten). QED Algorithmische Geometrie 7. Punktsuche 9

Seiten der Trapeze Alle Facetten in der Trapezkarte sind also auch wirklich Trapeze (Dreiecke sind degenerierte Trapeze). Wir bezeichnen die obere Seite des Trapez mit top( ) und die untere mit bottom( ). Die vertikalen Seiten stammen entweder von einer Verlängerung oder von R. Es gibt 5 Fälle für die linke Seite: (a) Die Seite besteht aus einem Punkt, dem Eckpunkt zwischen top( ) und bottom( ). (b) Die Seite ist die untere Verlängerung des linken Eckpunktes von top( ), die bottom( ) schneidet und im Schnittpunkt endet. (c) Die Seite ist die obere Verlängerung des linken Eckpunktes von bottom ( ), die top( ) schneidet und im Schnittpunkt endet. (d) Die Seite besteht aus der oberen und unteren Verlängerung des rechten Eckpunktes eines weiteren Segmentes s. (e) Die Seite ist der linke Rand von R. Dieser Fall tritt genau einmal auf. Algorithmische Geometrie 7. Punktsuche 10

Komplexität der Trapezkarte Da die linke Seite außer in (e) stets durch einen Endpunkt definiert wird, nennen wir diesen leftp( ). Analog gibt es ein rightp( ). ist dann durch top( ), bottom( ), leftp( ) und rightp( ) definiert. Lemma 3.11: Die Trapezkarte T(S) einer planaren Unterteilung S in allgemeiner Lage enthält maximal 6n + 4 Eckpunkte und 3n +1 Trapeze. Beweis: Ein Eckpunkt von T(S) ist entweder ein Eckpunkt von S bzw. R oder ein Schnitt einer vertikalen Verlängerung mit einer Kante von S bzw. R. Zu jedem Eckpunkt von S gibt es zwei Verlängerungen, also insgesamt maximal 4 + 2n + 2(2n) = 6n + 4 Eckpunkte in T(S). Neben der Eulerformel lassen sich die Trapeze auch direkt zählen: Jedes Trapez hat einen Punkt leftp( ). Die untere linke Ecke von R ergibt ein leftp( ). Ein rechter Endpunkt eines Segmentes tritt als maximal ein leftp( ) auf. Ein linker Endpunkt kann leftp( ) für maximal zwei Trapeze sein. (Dabei zählen wir die Segmente bottom( ), top( ) und nicht die Eckpunkte in S, da diese leftp( ) für viele sein können, wenn mehrere Segmente dort zusammentreffen.) Es gibt n Segmente, also max. 3n + 1 Trapeze. QED Algorithmische Geometrie 7. Punktsuche 11

Benachbarte Trapeze Wir nennen Trapeze benachbart (inzident), falls sie sich entlang einer vertikalen Kante treffen. Wenn S in allgemeiner Lage ist (links), gibt es maximal 4 benachbarte Trapeze für ein ausgewähltes Trapez. Wenn benachbarte Trapeze das gleiche Segment von S als top( ) haben, sprechen wir von upper left neighbor, falls das andere Trapez links liegt. Analog gibt es lower left neighbor, upper right neighbor und lower right neighbor. Algorithmische Geometrie 7. Punktsuche 12

Überlegungen Datenstruktur Als Datenstruktur verwenden wir nicht die doppelt verknüpfte Kantenliste aus 2.3. Stattdessen legen wir Felder der Eckpunkte und der Segmente von S an und ein Feld der Trapeze, wobei ein Trapez leftp( ), rightp( ), bottom( ), top( ) und Zeiger auf die vier Nachbarn enthält. Der Aufbau der Datenstruktur erfolgt auch nicht durch einen Plane Sweep, damit wir eine gute Suchstruktur für Point Queries erhalten. Diese Suchstruktur ist ein gerichteter azyklischer Graph mit genau einem Blatt für jedes Trapez. Die inneren Knoten haben stets zwei wegführende Kanten. Es gibt zwei Typen innerer Knoten: x-knoten, die auf einen Eckpunkt in S verweisen, y-knoten, die auf ein Segment in S verweisen. Algorithmische Geometrie 7. Punktsuche 13

Suchstruktur für Trapezkarten Die Point Query nach einem Punkt q beginnt an der Wurzel und läuft zu einem Blatt. Dieses Blatt gehört zu dem Trapez, das q enthält. Bei x-knoten wird gefragt, ob q links oder rechts der vertikalen Linie durch diesen Punkt liegt. Bei y-knoten wird gefragt, ob q oberhalb oder unterhalb des Segmentes liegt. Dabei stellen wir sicher, dass bei einem y- Knoten die vertikale Linie durch q das Segment schneidet. Falls q direkt auf der vertikalen Linie oder dem Segment liegt, haben wir ein kleines Problem, das wir später lösen werden. Algorithmische Geometrie 7. Punktsuche 14

Algorithmus I Aufbau Trapezkarte Der Aufbau von D und (über die Blätter) T(S) erfolgt inkrementell, indem wir ein Segment nach dem anderen einfügen. Ferner sortieren wir die Segmente zufällig, um zu einer effektiven Suchstruktur zu gelangen. (Die Effektivität zeigen wir anschließend.) Algorithmische Geometrie 7. Punktsuche 15

Algorithmus II Einfügen neues Segment Es sei S i :={ s 1,, s i } die Menge der ersten i Segmente. Die Invariante am Ende der Schleife ist, dass T die Trapezkarte zu S i und D eine zulässige Suchstruktur für T ist. Am Anfang ist S 0 leer und R bildet das einzige Trapez. Für die Aktualisierung müssen wir wissen, welche Veränderung es durch s i gibt. Dies sind die Trapeze, die von s i geschnitten werden. Seien 0,, k diese Trapeze von links nach rechts. Dann ist j+1 rechter Nachbar von j und zwar upper right neighbor, falls rightp( j ) unterhalb s i liegt und lower right neighbor, falls rightp( j ) oberhalb s i liegt. Also können wir ausgehend von 0 1,..., k finden. Um 0 zu finden, führen wir eine Point Query nach dem linken Startpunkt p von S i in T(S i-1 ) durch. Wenn p noch nicht in S i-1 liegt, erhalten wir 0. Andernfalls kann p auf der vertikalen Linie in einem x-knoten liegen. Dann laufen wir stets rechts weiter (alle interessierenden Segmente s und s i haben p als linken Endpunkt), vergleichen die Steigung von s und die Steigung von s i. Wenn die Steigung von s i größer ist, liegt p oberhalb von s, sonst darunter. Algorithmische Geometrie 7. Punktsuche 16

Algorithmus III Suche geschnittene Trapeze Algorithmische Geometrie 7. Punktsuche 17

Algorithmus IV Aktualisierung Datenstruktur Nun ist die Aktualisierung von T und D zu bestimmen. Im einfachen Fall mit s i in = 0 ergibt sich folgendes Bild Algorithmische Geometrie 7. Punktsuche 18

Algorithmus V Aktualisierung Datenstruktur Wenn s i mehrere Trapeze unterteilt, ist die Suchstrukturänderung etwas komplizierter, aber noch immer gut durchführbar. (i) Wir erzeugen vertikale Verlängerungen der Endpunkte von s i in 0 und k, sofern die Endpunkte nicht bereits in s i-1 liegen, wodurch je 3 Trapeze erzeugt werden (oberes Bild). (ii) Außerdem kürzen wir die bereits existierenden Verlängerungen. Hierdurch verschmelzen einige der Trapeze (unteres Bild). Aktualisierung von D: Wenn 0 den linken Endpunkt von s i im Inneren hat, wird das Blatt zu 0 durch einen x-knoten mit dem Endpunkt ersetzt. Wenn nicht, dann durch einen y- Konten für s i. Analog wird das Blatt zu k, sofern der rechte Endpunkt von s i im Inneren von k liegt, durch einen x- Knoten für 1 bis k-1 werden dann durch y-knoten für s i ersetzt. Algorithmische Geometrie 7. Punktsuche 19

Trapezkarte Komplexität Analyse Die Analyse des randomisierten, inkrementellen Algorithmus erfolgt über eine mit Auftrittswahrscheinlichkeit gewichtete Summe des jeweiligen Zeit- und Platzbedarfs. Wir studieren also hier den erwarteten Aufwand des Algorithmus. Eine Analyse des erwarteten worst case Aufwands der Suche findet sich in [de Berg, van Kreveld, Overmars, Schwarzkopf, Computational Geometry, Springer, Berlin, 2000, S. 140 143]. Theorem 3.12: Der Algorithmus TRAPEZOIDALMAP berechnet die Trapezkarte T(S) einer planaren Unterteilung S in allgemeiner Lage und eine Suchstruktur für T(S) in O(n log n) erwarteter Zeit. Die erwartete Größe der Suchstruktur ist O(n) und für jeden Suchpunkt q liegt die erwartete Suchzeit bei O(log n). Algorithmische Geometrie 7. Punktsuche 20

Erwartete Laufzeit Beweis: Die Korrektheit folgt aus der Invariante. Wir beginnen mit der Suchzeit. Da der Baum um bis zu 3 Stufen tiefer wird, ergibt sich 3n als worst case Aufwand. Für die erwartete durchschnittliche Zeit sei X i,1 i n, die Anzahl der Knoten aus Schritt i des Algorithmus entlang des Suchpfades für einen Punkt q. Für den Erwartungswert gilt E i=1 Da maximal drei Knoten eingefügt werden, gilt dass der Pfad in der i-ten Interation länger wird, so gilt n X i n = i=1 E X i X i 3. Ist P i die Wahrscheinlichkeit, E X i 3 P i. Nun verändert der i-te Schritt den Pfad für q genau dann, wenn das Trapez D q (S i ) dasjenige ist, das q in T(S i ) enthält: P i =P [ q S i q S i 1 ] Die neuen Trapeze in S i gegenüber S i-1 sind alle zu s i, dem neuen Segment, inzident, also top(d), bottom(d) gleich s i oder leftp(d), rightp(d) ein Endpunkt von s i. Algorithmische Geometrie 7. Punktsuche 21

Erwartete Laufzeit Sei nun ein festes S i S gegeben. Dann ist D q (S i ) ein bestimmtes Trapez unabhängig von der Reihenfolge s 1,..., s i. Wir nutzen eine Rückwärts-betrachtung, um zu ermitteln, wie wahrscheinlich D q nicht in S i-1 ist. D q (S i ) verschwindet falls top(d q (s i )), bottom(d q (s i )), leftp(d q (s i )) oder rightp(d q (s i )) mit s i verschwindet. Mit welcher Wahrscheinlichkeit verschwindet top(d q (s i ))? Da alle i Segmente s 1,..., s i gleich wahrscheinlich das letzte sind, ist dies 1/i. Analog bottom(d q (s i )). Ferner ergibt sich für leftp( q (s i )) ebenfalls maximal 1/i, da der Punkt nur verschwindet, wenn s i das einzige Segment mit diesem Eckpunkt ist. Analog, 1/i für rightp(d q (s i )). P i =P [ q S i q S i ]=P [ q S i T S i 1 ] 4 i Algorithmische Geometrie 7. Punktsuche 22

Erwartete Laufzeit Insgesamt folgt n E i=1 X i n i=1 n 3 P i i=1 n 12 i =12 i=1 1 i =12 H n Da In n < H n < In n + 1 gilt, folgt O(log n). [Diese Schranke ergibt sich an dem Integral mit dem Integral der Treppenfunktion t : 1, R, t x 1 ]. n 1 1 x dx=l n n x durch Vergleich Algorithmische Geometrie 7. Punktsuche 23

Erwartete Laufzeit Um die Größe von D zu bestimmen, müssen wir die Knoten zählen. Die Blätter sind die Trapeze in T, also maximal 3n +1. Es gilt n Anzahl der Knoten in D =3 n 1 Anzahl innere Knoten erzeugt in Iteration i=1 Sei k i die Anzahl neuer Trapeze im Interationsschritt i. Die Anzahl der neuen inneren Knoten ist k i -1. Als worst case ergibt sich n O n i=1 O i =O n 2 Für den erwarteten Aufwand gilt jedoch n O n E i=1 n k i 1 O n i=1 E k i Algorithmische Geometrie 7. Punktsuche 24

Erwartete Laufzeit Die Analyse ähnelt der Frage nach der Anzahl der Suchschritte. Für T(S i ), s S i, sei, s :={ 1 falls aus T S i verschwindet, wenn s entfernt wird } 0 sonst Es gibt maximal 4 Segmente, die D verschwinden lassen, also s S i, s 4 S i =O i T S i Da k i die Anzahl der Segmente ist, die durch s i entstehen, ist es auch die Anzahl die verschwindet, wenn s i entfernt wird. Da s i zufällig ist, kann es auch jedes andere s sein. Also E k i = 1 i s S i T S i, s O i =O 1. i Es folgt O(n) als erwarteter Speicherbedarf. Algorithmische Geometrie 7. Punktsuche 25

Erwartete Laufzeit Die Laufzeit des Algorithmus ergibt sich nun schnell. Das Einfügen von s i dauert O(k i ) Schritte und die Zeit zum Finden des linken Endpunktes in T(S i-1 ), also O(log (i 1)) = O(log i). Es ergibt sich QED. n O 1 i=1 [O logi O E k i ]=O n log n Es ist wichtig zu sehen, dass die Analyse nur die Zufälligkeit im Algorithmus selbst betrachtet, nicht jedoch bei der Eingabe der Suchpunkte. Algorithmische Geometrie 7. Punktsuche 26

Trapezkarten für planare Unterteilungen Um das Ausgangsproblem, nämlich Point Query in einer planaren Unterteilung zu lösen, nutzen wir D um das Trapez D zu finden und geben die unterhalb von top(d) liegende Facette aus. Korollar 3.13: Sei S eine planare Unterteilung mit n Kanten. In O(n log n) erwarteter Zeit, kann man eine Datenstruktur mit O(n) Speicher konstruieren, so dass für jeden Punkt q die erwartete Suchzeit O(log n) ist. Algorithmische Geometrie 7. Punktsuche 27

Degenerierte Fälle Wir haben bislang vorausgesetzt, dass die Segmente in allgemeiner Lage sind, also zwei verschiedene Endpunkte verschiedene x-koordinaten haben. Ferner durfte ein gesuchter Punkt kein Endpunkt sein und nicht auf einem Segment liegen. Die eigentliche Idee zu den Eckpunkten mit verschiedener x-koordinate ist eine geringfügige Rotation aller Punkte. Da dies numerische Probleme verursacht, werden wir sie nur symbolisch durchführen und geometrisch interpretieren. Statt einer Rotation kann man auch eine Scherung verwenden, ϕ : ( x y ) ( x+ε y y ) wobei ein ausreichend kleines ε die Reihenfolge der Punkte nicht ändert. Algorithmische Geometrie 7. Punktsuche 28

Degenerierte Fälle Die Berechnung von ϕ(x) wird nie ausgeführt. Bei Berechnungen wird lediglich geprüft, ob sich Veränderungen durch ε ergeben. Da unser Algorithmus keine geometrischen Berechnungen durchführt, sondern nur relative Lagen bestimmt, lässt sich dies einfach bewerkstelligen. Es gibt zwei Operationen (a) Liegt q rechts oder links von p? (b) Liegt q oberhalb oder unterhalb von S (wobei die x-koordinate von q im Intervall der x-koordinaten der beiden Endpunkte liegt)? Zu (a): Die beiden Punkte haben Koordinaten x p y p, y p und x q y q, y q. Für x p x q entscheidet dies den Test wegen des ausreichend klein gewählten Wertes von ε (Die Ordnung der Punkte wird durch ε nicht verändert). Bei gleichem x entscheidet der y- Wert, was genau den Anforderungen enspricht. Algorithmische Geometrie 7. Punktsuche 29

Degenerierte Fälle Zu (b): Wir haben das Segment ϕ(s) mit Endpunkten (x 1 + ε y 1, y 1 ), (x 2 + ε y 2, y 2 ), und wollen von ϕ(q) = (x + ε y, y) wissen, ob er oberhalb oder unterhalb von s liegt. Dabei gilt durch den Algorithmus (vert. Verlängerung von p schneidt s) stets und somit x 1 x x 2. Ferner gilt x = x 1 => y >= y 1 und x = x 2 => y <= y 2. Für x 1 = x 2 haben wir ein vertikales Segment und der Algorithmus liefert x 1 = x = x 2, y 1 <= y <= y 2, also q S x 1 y 1 x y x 2 y 2 und wegen der Scherung ϕ(q) ϕ( s). Für x 1 < x 2 nutzen wir, dass die Scherung die Relation zwischen Punkten und Linien erhält, also für einen Punkt oberhalb s (bzw. der Geraden durch s) das Bild auch oberhalb von ϕ(s) liegt. Wir brauchen also die Punkte lediglich lexikographisch ordnen, um unsere symbolische Behandlung des Problems zu erreichen. Dabei lösen wir auch das Problem mit den Punkten auf einem Segment oder Eckpunkt beim Suchen. Bei x-knoten kann der Punkt symbolisch auf der Linie liegen, falls es der Endpunkt ist, wodurch die Point Query schnell zu beantworten ist. Bei y-knoten ergibt sich wieder, dass der Punkt auf dem Segment liegt. Auch dies kann man als Resultat zurückgeben. Algorithmische Geometrie 7. Punktsuche 30

Trapezkarten für planare Unterteilungen Theorem 3.14: Der Algorithmus TRAPEZOIDALMAP berechnet die Trapezkarte T(S) einer planaren Überlagerung S und eine Suchstruktur D für T(S) in O(n log n) erwarteter Zeit. Die erwartete Größe der Suchstruktur ist O(n) und für jeden Suchpunkt ist die erwartete Suchzeit O(log n). Algorithmische Geometrie 7. Punktsuche 31

Literatur Zur Punktsuche findet man eine ordentliche Übersicht bei Preparta und Shamos [F. P. Preparta and M. I. Shamos. Computational Geometry: An Introduction. Springer-Verlag. 1985] und für out-of-core Methoden mit weiteren Suchen bei Gaede und Günther [Gaede und Günther. Multidimensional Access, Methods, TU-Berlin]. Es gibt vier verschiedene Lösungsansätze mit O(log n) Suchzeit und O(n) Speicher: Die chain method von Edelsbrunner et al [H. Edelbrunner. L. J. Guibas, and J. Stolfi. Optimal point location in a monotone subdivision. SIAM J. Comput. 15:317-340,1986], die triangulation refinement method von Kirkpatrick [D. G. Kirkpatrick, Optimal search in planar subdivisions. SIAM J. Comput. 12:28-35,1983], die persistency method von Sarnack und Tarjan [N. Sarnak, and R. E. Tarjan. Planar point location using persistent search trees. Commun. ACM, 29:669-679, 1986] und die randomisierte, inkrementelle Methode von Mulmuley [K. Mulmuley. A fast planar partition algorithm, I. Journal of Symbolic Computation, 10.253-280, 1990]. Letztere diente mit Analyse von Seidel [R. Seidel. A simple and fast incremental randomized algorithm for computing trapezoidal decompositions and for triangulating polygons. Comput. Geom. Theory Appl., 1:51-64, 1991] als Grundlage dieses Abschnittes. Algorithmische Geometrie 7. Punktsuche 32

Literatur Das dynamische Problem mit Einfügen und Löschen von Segmenten stellt eine zusätzliche Herausforderung dar. Chiang und Tamassia [Y.-J. Chiang and R. Tamassia. Dynamic algoirthms in computational geometry. Proc. IEEE, 80:1412-1434, September 1992] geben einen Überblick. Algorithmische Geometrie 7. Punktsuche 33