Ma#hias Frey • Einführung • Grundlegende algorithmische Strategien Inkrementelles Vorgehen Teile‐und‐Herrsche‐Verfahren Sweep‐Verfahren • Punkt‐in‐Polygon • Ausblick • Einsatz in vielen Bereichen – RoboHk, GUIs, GIS, … • Wesentliche OperaHonen in GIS – Lage‐, Verteilungsberechnungen, … • Klassischerweise typische geometrische Daten – Punkte, Strecken/Liniensegmente, Polygone • Verarbeitung großer Datenmengen Effizienz • Beschreibung über Algorithmen – Pseudo‐Code – Beschränkung auf das Wesentliche • Effizienzauswertung über Anzahl der auWretenden Anweisungen (Laufzeit) – Angabe über FunkHon der Eingabegröße AsymptoHsche NotaHon » Obere Schranke » Untere Schranke » Genaue Schranke • Einführung • Grundlegende algorithmische Strategien Inkrementelles Vorgehen Teile‐und‐Herrsche‐Verfahren Sweep‐Verfahren • Punkt‐in‐Polygon • Ausblick • • • • Geeignete Teilmenge der Eingabe wählen Schri#weise Element hinzufügen Lösung aktualisieren Solange, bis gesamte Eingabe verarbeitet wurde Beispiel: Konvexe Hüllberechnung • Was ist eine konvexe Hülle einer Menge S? – Kleinste konvexe Polygon P, bei dem jeder Punkt von S auf dem Rand oder innerhalb von P liegt • Erste 3 Punkte als iniHale konvexe Hülle • Schri#weise weiteren Punkt hinzufügen – Punkt liegt innerhalb: Punkt bereits erfasst – Punkt außerhalb: Neue konvexe Hülle • Zwei Tangenten von pi zu Hi‐1 bilden • Tangentenpunkte pt1 und pt2 besHmmen • pi zwischen pt1 und pt2 einfügen und aus Punktliste neue konvexe Hülle bilden • Tangentenpunkte besHmmen: – Durchlaufe Punkte pt der konvexe Hülle Hi im Uhrzeigersinn (mit t = 1, …, n) – pt TangenHalpunkt, wenn neuer Punkt pi rechts von pt‐1pt und links von ptpt+1 – Analog verfährt man mit anderem TangenHalpunkt (Seiten drehen sich um) • Beispiel: C H A E B G F D • Laufzeit: – Prüfung, ob Punkt innerhalb: O(n) – Auffinden von TangenHalpunkten: O(n) – Jeder inkrementelle Schri# erfordert einen Durchlauf der aktuellen konvexen Hülle • Verbesserung durch VorsorHeren der Punkte nach Abszissen – Punkt liegt immer rechts (außerhalb) der konvexen Hülle – TangenHalpunkte leichter idenHfizierbar aufgrund monotoner EigenschaWen konvexer Polygone – Dadurch erreicht man eine Laufzeit von • Einführung • Grundlegende algorithmische Strategien Inkrementelles Vorgehen Teile‐und‐Herrsche‐Verfahren Sweep‐Verfahren • Punkt‐in‐Polygon • Ausblick • Besteht aus 2 Schri#en: – Top‐Down: Eingabe wird rekursiv aufgeteilt, bis Teilprobleme einfach zu lösen sind – BoFom‐Up: Zusammenfügen der Teilergebnisse Beispiel: SchniF zwischen Menge an Halbebenen • Zur Vereinfachung ein paar Annahmen: – Resultat ist konvexes Polygon – Suchraum R ist ein Rechteck und ist bekannt – ResulHerende Polygon ist vollständig in R enthalten • Menge an Halbebenen rekursiv halbieren bis n seperate Halbebenen vorhanden sind • Jede Halbebene mit R schneiden • Ergebnispolygone nach oben zusammenführen Wurzel: Schni#polygon aller Halbebenen • Laufzeit – Bei jedem DnC‐Algorithmus ähnliches Vorgehen – T(n) sei die Laufzeit des Algorithmus – Zwei Phasen: • Top‐Down: Rekursive Zerlegung = • Bo#om‐Up: Zusammenführen = cn • Durch rekursives Einsetzen erhält man • Allgemein: • Ist k = log n die Anzahl der Halbierungen gilt: Gesamtlaufzeit: O(nlog n) • Einführung • Grundlegende algorithmische Strategien Inkrementelles Vorgehen Teile‐und‐Herrsche‐Verfahren Sweep‐Verfahren • Punkt‐in‐Polygon • Ausblick Einteilung der Eingabe (geom. Objekte) in Streifen Relevante InformaHonen auf verHkalen Linien VerHkale Linie (Sweep‐Line) durchläuW die Streifen Nutzung zweier Datenstrukturen • • • • – Sweep‐Status‐Struktur: Speichert aktuellen Zustand (akHve Liste) – Ereignis‐Liste: Ereignisse, die Auswirkung auf Sweep‐ Status‐Struktur haben Beispiel: SchniFberechnung von Strecken • Gegeben: Menge S von Strecken • Gesucht: Schni#punkte • AkLve Liste: Strecken, die von der Sweep‐Line geschni#en werden (geordnet nach Y‐Werten) • Ereignis‐Liste: X‐Koordinaten der Anfangs‐ und Endpunkte der jeweiligen Strecken • Beispiel: s2 Sweep‐Line AkLve Liste l1 s2, s1 l2 s2, s3, s1 l3 s2, s1 l4 s1, s2 s3 s1 l1 l2 l3 l4 • Schni#punktberechnung nur für direkte Nachbarn in AkHve Liste nöHg • Prüfungen, wenn – s eingefügt wird: …, sj, sk, … …, sj, s, sk, … – s enlernt wird: …, sj, s, sk, … …, sj, sk, … – Schni#punkt passiert wird: …, si, sj, sk, sl, … …, si, sk, sj, sl, … • Laufzeit – Einfüge‐, Lösch‐ und SuchoperaHonen nöHg Baumstruktur, z.B. AVL‐Baum: O(log n) – Schleifendurchlauf für Abarbeiten der Ereignis‐Liste: 2n+k – Gesamt: O((n+k)log n) • Einführung • Grundlegende algorithmische Strategien Inkrementelles Vorgehen Teile‐und‐Herrsche‐Verfahren Sweep‐Verfahren • Punkt‐in‐Polygon • Ausblick • Häufig genutzte OperaHon im GIS • Vorgestellte Methode: Strahl‐Methode • Vorgehensweise: – Zeichne Halbgerade (Strahl) s von Prüfpunkt P in bel. Richtung ein – Zähle Schni#punkte, die s mit dem Polygon hat, d.h. gehe alle Kanten durch und prüfe mit s auf Schni#punkt • Anzahl gerade: P liegt außerhalb des Polygons • Anzahl ungerade: P liegt innerhalb des Polygons • Spezialfall am Beispiel: P1 Punkt #SchniFe Innerhalb? A 5 T B 9 T C 2 F B A P2 P10 P12 P11 P8 P7 P9 P3 P5 P4 C P6 • Lösung des Problems durch 2 Regeln: 1. Es werden keine Kanten gezählt, die kollinear zu dem Strahl des Testpunkts liegen 2. Kante wird nur dann gezählt, wenn einer ihrer Eckpunkte oberhalb des Strahls liegt • Rand des Polygons kann entweder als Innen oder Außen interpreHert werden – Falls Innen: Gesonderte Behandlung notwendig • Laufzeit: – Prüfung, ob Punkt auf Polygonrand: O(n) – Prüfung, ob Punkt innerhalb oder außerhalb: O(n) • Jede Kante des Polygons muss einmal überprüW werden Gesamtlaufzeit: O(n) • Einführung • Grundlegende algorithmische Strategien Inkrementelles Vorgehen Teile‐und‐Herrsche‐Verfahren Sweep‐Verfahren • Punkt‐in‐Polygon • Ausblick • Weitere interessante Algorithmen: – Polygon‐Triangulierung • Z.B. Wie groß ist die Fläche eines Polygons? Triangulierung! Bilde Summe über Fläche der Dreiecke – Schni# zwischen konvexen Polygonen – Schni# zwischen Rechtecken • Ähnliches Vorgehen, wie bei Schni# von Strecken • AkLve Liste: Rechtecke, die von Sweep‐Line geschni#en werden • Ereignis‐Liste: Linke/Rechte Kanten der Rechtecke – Closesed‐Pair‐Problem • BesHmme dichteste Punktepaar in einer Menge • Lösungsansatz: Teile‐und‐Herrsche • h#p://video.tu‐clausthal.de/videos/ifi/vorlesung/inf2‐ ss2010/20100607/inf2‐20100607.html – Schni# zwischen nicht‐konvexen Polygonen – Voronoi‐Diagramme – …