Motivation Planar Point Location René Weiskircher Mobiltelefone haben Möglichkeit momentane Position zu bestimmen Telefonfirmen können ortsbezogene Dienste anbieten Beispiel: Bestimme nächstgelegenen Geldautomaten Motivation Problem • Anfangs bekannt: Menge P von Punkten in 2D • Anfrage: Finde für Punkt x in 2D nächsten Punkt in P • Anfragen müssen schnell beantwortet werden • Verwendete Datenstrukturen klein Lösung Voronoidiagramm P ist bekannt und ändert sich selten Verlagere Arbeit von einzelner Anfrage zu Vorberechnung vor Bearbeitung der Anfragen Erstelle erst Datenstruktur D für P, die Anfragen für jedes x schnell beantworten kann Gegeben: Voronoiregion von pi: 1. Voronoidiagramm 2. Suchen in planaren Unterteilungen D 1 Voronoidiagramm Knoten des Voronoidiagramms: Punkte die gleichen Abstand zu mindestens 3 Punkten aus P haben. Kanten des Voronoidiagramms: Mengen von Punkten die zu 2 Punkten aus P gleichen Abstand haben Lösung des Lokalisierungsproblems Voronoidiagramm für P vorberechnet Bestimme für Anfragepunkt x die Voronoiregion Vr, die x enthält Gib den Punkt r aus P aus Wie bestimmt man effizient die Voronoiregion, die Punkt x enthält? Voronoidiagramm • Voronoidiagramm ist Vereinigung der Kanten und Knoten aller Voronoiregionen • Hat für n Punkte maximal 2n-4 Knoten und 3n-6 Kanten • Kann in Zeit O(n log n) berechnet werden (z.B. Divide & Conquer) Suche in Planaren Unterteilungen • Gegeben: – Geradlinige Einbettung E eines Graphen in die Ebene – Anfragepunkt x • Gesucht: – Region R von E die x enthält Voronoidiagramm Anwendung auf unser Problem Voronoidiagramme sind keine Einbettungen weil äußere Kanten unendlich lang Umwandlung in Graphen durch Einführung von Begrenzung, die alle möglichen Anfragepunkte enthält Voronoidiagramm Einbettung eines Graphen mit Geradensegmenten als Kanten 2 Unterteilung einer Region in Dreiecke Triangulierung Datenstruktur ist einfacher wenn alle Regionen der Einbettung Dreiecke sind Benutze Dreieck als Begrenzung für Voronoidiagramm Füge in jede Region die nicht dreieckig ist neue Kanten ein, bis sie dreieckig ist Erstellung der Datenstruktur Lösche unabhängige Knoten mit Maximalgrad 9 • Durchlaufe Knoten in beliebiger Reihenfolge • Gib Knoten Farbe mit niedrigster Nummer, die noch nicht von Nachbarn besetzt ist • Wähle Farbe mit den meisten Knoten Trianguliere Nein Finden Unabhängiger Menge Ja Graph klein genug? Fertig 3 Finden Unabhängiger Menge Lösche Knoten x,y und z Graphen Datenstruktur Knoten löschen Blätter aufsplitten Triangulieren Blätter zusammenfassen Trianguliere neue Regionen ∞ A1 A2 A3 B1 B2 B3 C1 C2 C3 Habe schon Datenstruktur für Suchen in Fasse Blätter die zur gleichen Region von gehören zusammen 4 ∞ A B C Füge Programme ein, die Region von bestimmen, in der Anfragepunkt liegt Aufstellen der Datenstruktur ∞ x y z abcd i l k j f ehg Lemma zur Schrumpfen der Einbettung • Triangulierung bewirkt dass Graph in jeder Runde um mindestens konstanten Faktor schrumpft • Maximaler Grad der zu löschenden Knoten bewirkt konstante Laufzeit für Aufteilungsprogramme • Zu löschende Knoten sind unabhängig also sind neue Regionen konvex Satz zur Laufzeit 5