Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

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

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

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

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

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

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

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

Punkt-in-Polygon-Suche Übersicht

Lineare Programmierung

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

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

Bereichsabfragen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

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

Geradenarrangements und Dualität von Punkten und Geraden

Geradenarrangements und Dualität von Punkten und Geraden

Geradenarrangements und Dualität von Punkten und Geraden

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Quadtrees und Meshing

Einführung & Konvexe Hülle

Algorithmische Geometrie 7. Punktsuche (Teil 2)

Quadtrees und Meshing

Lineares Programmieren

Einführung & Konvexe Hülle

Polygontriangulierung

Polygontriangulierung

7. Triangulation von einfachen Polygonen

Quadtrees und Meshing

Konvexe Hülle im R 3 + WSPD

Einführung & Konvexe Hülle

Übung Algorithmen und Datenstrukturen

Proportional Symbol Maps

Sichtbarkeitsgraphen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen II Vorlesung am

Randomisiert inkrementelle Konstruktion der Trapezzerlegung. Strecken in der Ebene

Sichtbarkeitsgraph. Andreas Gemsa Übung Algorithmische Geometrie

Übungsblatt 7 - Voronoi Diagramme

Kap. 3: Sortieren (3)

Grundlagen: Algorithmen und Datenstrukturen

Voronoi-Diagramme und Delaunay-Triangulierungen

Einführung & Konvexe Hülle

Zunächst ein paar einfache "Rechen"-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt:

Übung zur Vorlesung Berechenbarkeit und Komplexität

Maximale s t-flüsse in Planaren Graphen

Algorithmen & Komplexität

Grundlagen: Algorithmen und Datenstrukturen

Dualität + Quad-trees

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

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Einführung & Konvexe Hülle

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

Komplexität von Algorithmen:

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

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

Polygontriangulierung

Grundlagen: Algorithmen und Datenstrukturen

Algorithmische Geometrie: Schnittpunkte von Strecken

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Quad-trees. Benjamin Niedermann Übung Algorithmische Geometrie

Copyright, Page 1 of 8 AVL-Baum

Sortieren & Co. KIT Institut für Theoretische Informatik

Kap. 4.7 Skiplisten. 15./16. VO DAP2 SS /10. Juni 2008

Fortgeschrittene Netzwerk- und Graph-Algorithmen

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

Liniensegmentschnitt. Doppelt verkettete Kantenliste. Überlagerung von 2 ebenen Graphen. Boolsche Operatoren für einfache Polygone (LEDA)

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

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Seminar. Algorithmische Geometrie

Wiederholung. Divide & Conquer Strategie

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

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Algorithmische Geometrie: Lineare Optimierung (I)

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

Übung Algorithmen und Datenstrukturen

Erweiterter Euklidischer Algorithmus

Punkt-in-Polygon-Suche Übersicht

Algorithmen und Datenstrukturen

Algorithmische Methoden zur Netzwerkanalyse

Algorithmen II Vorlesung am

Motivation Binäre Suchbäume

Informatik II: Algorithmen und Datenstrukturen SS 2015

Algorithmische Geometrie: Delaunay Triangulierung (Teil 1)

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

Transkript:

Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.05.2011

Motivation Gegeben eine Position p = (p x, p y ) in einer Landkarte, bestimme in welchem Land p liegt.

Motivation Gegeben eine Position p = (p x, p y ) in einer Landkarte, bestimme in welchem Land p liegt.

Motivation Gegeben eine Position p = (p x, p y ) in einer Landkarte, bestimme in welchem Land p liegt. Genauer: Finde eine Datenstruktur, die solche Lokalisierungsanfragen effizient beantworten kann.

Motivation Gegeben eine Position p = (p x, p y ) in einer Landkarte, bestimme in welchem Land p liegt. Genauer: Finde eine Datenstruktur, die solche Lokalisierungsanfragen effizient beantworten kann. Dabei ist die Landkarte eine Unterteilung der Ebene in disjunkte Polygone.

Problemstellung

Problemstellung Ziel: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle.

Problemstellung Ziel: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle.

Problemstellung Ziel: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle.

Problemstellung Ziel: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle.

Problemstellung Ziel: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle.

Problemstellung Ziel: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. 2 Min. nachdenken!

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen.

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen.

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. Anfrage:

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. Anfrage: finde richtigen Streifen

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. Anfrage: finde richtigen Streifen

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. Anfrage: finde richtigen Streifen durchsuche diesen Streifen

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. Anfrage: finde richtigen Streifen durchsuche diesen Streifen

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. Anfrage: finde richtigen Streifen durchsuche diesen Streifen } 2 binäre Suchen

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. } Anfrage: finde richtigen Streifen durchsuche diesen Streifen O(log n) Zeit 2 binäre Suchen

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. } Anfrage: finde richtigen Streifen durchsuche diesen Streifen O(log n) Zeit 2 binäre Suchen Aber:

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. } Anfrage: finde richtigen Streifen durchsuche diesen Streifen O(log n) Zeit 2 binäre Suchen Aber: Platz?

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. } Anfrage: finde richtigen Streifen durchsuche diesen Streifen O(log n) Zeit 2 binäre Suchen Aber: Platz? Θ(n 2 )

Problemstellung Ziel: Lösung: Geg. eine Unterteilung S der Ebene mit n Strecken, erstelle Datenstruktur für schnelle. Zerteile S an Punkten in vertikale Streifen. } Anfrage: finde richtigen Streifen durchsuche diesen Streifen O(log n) Zeit 2 binäre Suchen Aber: Platz? Θ(n 2 ) Frage: Bsp. für untere Schranke?

Verringern der Komplexität Beob.: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze.

Verringern der Komplexität Beob.: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Ziel: Finde geeignete Verfeinerung von S mit geringerer Komplexität!

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S)

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S)

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Kante von jedem Endpunkt vertikal nach oben und unten bis zum Nachbarsegment R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Kante von jedem Endpunkt vertikal nach oben und unten bis zum Nachbarsegment R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Kante von jedem Endpunkt vertikal nach oben und unten bis zum Nachbarsegment R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Kante von jedem Endpunkt vertikal nach oben und unten bis zum Nachbarsegment R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Kante von jedem Endpunkt vertikal nach oben und unten bis zum Nachbarsegment R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Kante von jedem Endpunkt vertikal nach oben und unten bis zum Nachbarsegment R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Vergleich mit Streifenzerlegung R

Verringern der Komplexität Beob.: Ziel: Die Streifenzerlegung ist eine Verfeinerung S von S in (evtl. degenerierte) Trapeze. Finde geeignete Verfeinerung von S mit geringerer Komplexität! Lösung: Trapezzerlegung T (S) Annahme: S ist in allgemeiner Lage, d.h. keine zwei Knoten haben gleiche x-koordinaten. R

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze.

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze.

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze.

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze.

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. Beob.: S in allg. Lage jede Facette von T (S) hat:

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. Beob.: S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite:

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite:

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite:

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite:

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite: R

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite: leftp( ) R

Notation Definition: Eine Seite einer Facette von T (S) ist eine maximal lange Teilstrecke der Facettengrenze. top( ) Beob.: bot( ) S in allg. Lage jede Facette von T (S) hat: ein oder zwei vertikale Seiten zwei nicht-vertikale Seiten Linke Seite: leftp( ) analog: rightp( ) R

Komplexität der Trapezzerlegung Beob.: Ein Trapez wird eindeutig durch bot( ), top( ), leftp( ) und rightp( ) definiert. top( ) leftp( ) bot( ) rightp( )

Komplexität der Trapezzerlegung Beob.: Ein Trapez wird eindeutig durch bot( ), top( ), leftp( ) und rightp( ) definiert. top( ) leftp( ) bot( ) rightp( )

Komplexität der Trapezzerlegung Beob.: Ein Trapez wird eindeutig durch bot( ), top( ), leftp( ) und rightp( ) definiert. top( ) leftp( ) bot( ) rightp( ) Lemma: Die Trapezzerlegung T (S) einer Menge S von n Strecken in allgemeiner Lage enthält höchstens 6n + 4 Knoten und höchstens 3n + 1 Trapeze.

Komplexität der Trapezzerlegung Beob.: Ein Trapez wird eindeutig durch bot( ), top( ), leftp( ) und rightp( ) definiert. top( ) leftp( ) bot( ) rightp( ) Lemma: Die Trapezzerlegung T (S) einer Menge S von n Strecken in allgemeiner Lage enthält höchstens 6n + 4 Knoten und höchstens 3n + 1 Trapeze.

Suchstruktur Ziel: Berechne die Trapezzerlegung T (S) und gleichzeitig eine Datenstruktur D(S) zur Lokalisierung in T (S). p 1 B s 1 q 1 A D E p 2 s 2 C F T (S) A G q 2 D(S) ist ein DAG mit: B C p 1 D(S) q 1 s 1 p 2 q 2 s 2 E s 2 D F p x-knoten für Punkt p testet auf links/rechts von p s y-knoten für Strecke s testet auf oberhalb/unterhalb von s G Blattknoten für Trapez

Inkrementeller Algorithmus Trapezzerlegung(S) Input: Menge S = {s 1,..., s n } von kreuzungsfreien Strecken Output: Trapezzerlegung T (S) und Suchstruktur D(S) Initialisiere T und D für R = BBox(S) S RandomPermutation(S) for i 1 to n do H { T s i } T T \ H T T neue durch s i erzeugte Trapeze D ersetze Blätter für H durch Blätter für neue Trapeze return (T, D)

Inkrementeller Algorithmus Trapezzerlegung(S) Input: Menge S = {s 1,..., s n } von kreuzungsfreien Strecken Output: Trapezzerlegung T (S) und Suchstruktur D(S) Initialisiere T und D für R = BBox(S) S RandomPermutation(S) for i 1 to n do H { T s i } T T \ H T T neue durch s i erzeugte Trapeze D ersetze Blätter für H durch Blätter für neue Trapeze return (T, D) Problem: Größe von D und Anfragezeit sind abhängig von Einfügereihenfolge

Inkrementeller Algorithmus Trapezzerlegung(S) Input: Menge S = {s 1,..., s n } von kreuzungsfreien Strecken Output: Trapezzerlegung T (S) und Suchstruktur D(S) Initialisiere T und D für R = BBox(S) S RandomPermutation(S) for i 1 to n do H { T s i } T T \ H T T neue durch s i erzeugte Trapeze D ersetze Blätter für H durch Blätter für neue Trapeze return (T, D) Problem: Größe von D und Anfragezeit sind abhängig von Einfügereihenfolge Lösung: Randomisierung!

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur Initialisierung: T = T ( ) = R und D = (R, )

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur Initialisierung: T = T ( ) = R und D = (R, ) Schritt 1: H { T s i }

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur Initialisierung: T = T ( ) = R und D = (R, ) Schritt 1: H { T s i }

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur Initialisierung: T = T ( ) = R und D = (R, ) Schritt 1: H { T s i }

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur Initialisierung: T = T ( ) = R und D = (R, ) Schritt 1: H { T s i } Aufgabe: Wie findet man die Trapezmenge H von links nach rechts?

Randomisierter Inkrementeller Algorithmus Invariante: T ist Trapezzerlegung für S i = {s 1,..., s i } und D passende Suchstruktur Initialisierung: T = T ( ) = R und D = (R, ) Schritt 1: H { T s i } Aufgabe: Wie findet man die Trapezmenge H von links nach rechts? 0 FindeTrapez(p i, D); j 0 while rechter Endpunkt q i rechts von rightp( j ) do if rightp( j ) über s i then j+1 unterer rechter Nachbar von j else j+1 oberer rechter Nachbar von j j j + 1 return 0,..., j

Update von T (S) und D(S) Schritt 2: Aktualisiere T und D Fall 1: s i 0 p i s i q i B 0 A C D T (S i 1 ) T (S i )

Update von T (S) und D(S) Schritt 2: Aktualisiere T und D Fall 1: s i 0 p i s i q i B 0 A C D T (S i 1 ) T (S i ) D(S i 1 ) D(S i ) 0 A p i q i B s i C D

Update von T (S) und D(S) Schritt 2: Aktualisiere T und D Fall 1: s i 0 Fall 2: T s i 2 s i 3 p A i 0 2 q i 1 B D E F C T (S i 1 ) T (S i )

Update von T (S) und D(S) Schritt 2: Aktualisiere T und D Fall 1: s i 0 Fall 2: T s i 2 s i 3 p A i 0 2 q i 1 B D E F C T (S i 1 ) T (S i ) D(S i 1 ) D(S i ) 0 1 2 3?

Update von T (S) und D(S) Schritt 2: Aktualisiere T und D Fall 1: s i 0 Fall 2: T s i 2 s i 3 p A i 0 2 q i 1 B D E F C T (S i 1 ) T (S i ) D(S i 1 ) D(S i ) s i s i s i q i 0 1 2 3 A B C D s i E F

Analyse Satz: Der Algorithmus berechnet die Trapezzerlegung T (S) und die Suchstruktur D für eine Menge S von n Strecken in erwartet O(n log n) Zeit. Die erwartete Größe von D ist O(n) und die erwartete Anfragezeit O(log n).

Analyse Satz: Der Algorithmus berechnet die Trapezzerlegung T (S) und die Suchstruktur D für eine Menge S von n Strecken in erwartet O(n log n) Zeit. Die erwartete Größe von D ist O(n) und die erwartete Anfragezeit O(log n). Beobachtungen: im schlimmsten Fall kann D quadratisch groß werden und eine Anfrage lineare Zeit benötigen Hoffnung: das passiert nur selten! betrachte erwartete Laufzeit und Größe über alle n! möglichen Permutationen von S der Satz gilt unabhängig von der Eingabemenge S

Degenerierte Eingaben Zwei Annahmen bislang: keine zwei Streckenendpunkte habe gleiche x-koordinate immer eindeutige Antworten im Suchpfad

Degenerierte Eingaben Zwei Annahmen bislang: keine zwei Streckenendpunkte habe gleiche x-koordinate immer eindeutige Antworten im Suchpfad Ausweg: symbolische Scherung ϕ : (x, y) (x + εy, y) y y ϕ x x

Degenerierte Eingaben Zwei Annahmen bislang: keine zwei Streckenendpunkte habe gleiche x-koordinate immer eindeutige Antworten im Suchpfad Ausweg: symbolische Scherung ϕ : (x, y) (x + εy, y) y y ϕ x x Dabei ist ε > 0 so gewählt, dass sich die x-ordnung der Punkte nicht ändert.

Degenerierte Eingaben Führe Algorithmus für ϕs = {ϕs s S} und ϕp aus.

Degenerierte Eingaben Führe Algorithmus für ϕs = {ϕs s S} und ϕp aus. Zwei elementare Operationen beim Aufbau von T und D: 1. liegt q links oder rechts der Vertikalen durch p? 2. liegt q oberhalb oder unterhalb der Strecke s?

Degenerierte Eingaben Führe Algorithmus für ϕs = {ϕs s S} und ϕp aus. Zwei elementare Operationen beim Aufbau von T und D: 1. liegt q links oder rechts der Vertikalen durch p? 2. liegt q oberhalb oder unterhalb der Strecke s? Auch Lokalisierung eines Punktes q in T (S) geht durch Lokalisierung von ϕq in T (ϕs).

Worst-Case Abschätzung Bislang: erwartete Anfragezeit für bel. Punkt ist O(log n) Aber: jede Permutation könnte sehr schlechte Anfragepunkte haben

Worst-Case Abschätzung Bislang: erwartete Anfragezeit für bel. Punkt ist O(log n) Aber: jede Permutation könnte sehr schlechte Anfragepunkte haben Lemma: Sei S Menge von n kreuzungsfreien Strecken, q Anfragepunkt und λ > 0. Dann gilt Pr[Suchpfad für q länger als 3λ ln(n + 1)] 1/(n + 1) λ ln 1.25 1.

Worst-Case Abschätzung Bislang: erwartete Anfragezeit für bel. Punkt ist O(log n) Aber: jede Permutation könnte sehr schlechte Anfragepunkte haben Lemma: Sei S Menge von n kreuzungsfreien Strecken, q Anfragepunkt und λ > 0. Dann gilt Pr[Suchpfad für q länger als 3λ ln(n + 1)] 1/(n + 1) λ ln 1.25 1. Lemma: Sei S Menge von n kreuzungsfreien Strecken und λ > 0. Dann gilt Pr[max. Suchpfad in D länger als 3λ ln(n + 1)] 2/(n + 1) λ ln 1.25 3.

Worst-Case Abschätzung Bislang: erwartete Anfragezeit für bel. Punkt ist O(log n) Aber: jede Permutation könnte sehr schlechte Anfragepunkte haben Lemma: Sei S Menge von n kreuzungsfreien Strecken, q Anfragepunkt und λ > 0. Dann gilt Pr[Suchpfad für q länger als 3λ ln(n + 1)] 1/(n + 1) λ ln 1.25 1. Lemma: Sei S Menge von n kreuzungsfreien Strecken und λ > 0. Dann gilt Pr[max. Suchpfad in D länger als 3λ ln(n + 1)] 2/(n + 1) λ ln 1.25 3. Satz: Sei S Unterteilung der Ebene mit n Kanten. Es gibt eine Suchstruktur zur in S mit Platzbedarf O(n) und Anfragezeit O(log n).

Diskussion Gibt es ähnliche Methoden auch für höhere Dimensionen?

Diskussion Gibt es ähnliche Methoden auch für höhere Dimensionen? Die derzeit beste Datenstruktur in drei Dimensionen benötigt O(n log n) Platz und O(log 2 n) Anfragezeit [Snoeyink 04]. Ob es mit linearem Platz und O(log n) Anfragezeit geht ist eine offene Frage. In höheren Dimensionen sind effiziente Verfahren nur für spezielle Unterteilungen durch Hyperebenen bekannt.