Thema6_Folien_Frey

Werbung
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 –  … 
Herunterladen