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

Ähnliche Dokumente
Geometrische Algorithmen

Geometrische Algorithmen Segmentschnitt

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

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

Konvexe Hülle. Konvexe Hülle. Mathematik. Konvexe Hülle: Definition. Mathematik. Konvexe Hülle: Eigenschaften. AK der Algorithmik 5, SS 2005 Hu Bin

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

1 Rotating Calipers. 2 Antipodal und Copodal. 3 Distanzen Rechtecke Eigenschaften

Punkt-in-Polygon-Suche Übersicht

Algorithmische Geometrie

Ebene Elementargeometrie

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

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

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

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

Bereichsabfragen II. 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

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

Hallo Welt für Fortgeschrittene. Geometrie I. Lukas Batz. Informatik 2 Programmiersysteme Martensstraße Erlangen

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

Kollisionserkennung

Punkt-in-Polygon-Suche Übersicht

Geometrie I. Laura Lawniczak Hallo Welt -Seminar - LS 2

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

Hallo Welt für Fortgeschrittene

Triangulierung von einfachen Polygonen

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

Dualität + Quad-trees

Parallele Algorithmen in der Bildverarbeitung

1 Rund um die Kugel. a) Mathematische Beschreibung

Algorithmische Geometrie: Lineare Optimierung (I)

Featurebasierte 3D Modellierung

m2l 60.odt Klausur 12/I B 1. Gegeben seien zwei Geraden. Wie gehen Sie vor, um über deren Lagebeziehung eine Aussage zu treffen.

3.6 Einführung in die Vektorrechnung

Gundlagen Klasse 5/6 Geometrie. nach oben. Inhaltsverzeichnis

Theoretische Informatik 1

1.1. Geradengleichung aus Steigung und y-achsenabschnitt

Achsen- und punktsymmetrische Figuren

} Symmetrieachse von A und B.

Übung Computergrafik 3

21. Die Formel von Pick

Vektorgeometrie. 1. Vektoren eingeben, Norm, Skalarprodukt. 2 In einem kartesischen Koordinatensystem sind die Vektoren. , v. und. gegeben.

Distanzprobleme in der Ebene

A] 40 % + 25 % + 12,5 % B] 30 % + 50 % + 16,6 %

July 04, Geometrie I. Hallo Welt! für Fortgeschrittene. Daniel Uebler

Übung zur Vorlesung Algorithmische Geometrie

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

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

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

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

Klassenstufen 7, 8. Fachbereich Mathematik Tag der Mathematik 9. November 2013

3 Klassifikation wichtiger Optimierungsprobleme

Algorithmische Geometrie: Schnittpunkte von Strecken

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

6. Triangulation von Polygonen

Aufgaben Geometrie Lager

Geometrie, Einführung

Kreistangente. Tangente an Graph. Winkel(markierung)

Arbeitsblatt Mathematik 2 (Vektoren)

MATHEMATIK-WETTBEWERB 2010/2011 DES LANDES HESSEN

Konstruktionen mit Zirkel und Lineal

Institut für Mathematik Geometrie und Lineare Algebra J. Schönenberger-Deuel

GEOMETRIE (4a) Kurzskript

7. Sortieren Lernziele. 7. Sortieren

2.5. Aufgaben zu Dreieckskonstruktionen

2.4. Triangulierung von Polygonen

D C. Man unterscheidet in der Geometrie zwischen Körpern, Flächen, Linien und Punkten.

12. Flächenrekonstruktion aus 3D-Punktwolken und generalisierte Voronoi-Diagramme

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

1. Runde Aufgaben und Lösungen. Bundeswettbewerb Mathematik

Klausur zur Akademischen Teilprüfung, Modul 2,

FACHHOCHSCHULE ZÜRICH Musterprüfung Geometrie * Klasse ZS K2 18. März 2011

Zweidimensionale Vektorrechnung:

Distributed Algorithms. Image and Video Processing

Grundwissen Abitur Geometrie 15. Juli 2012

Durch Eliminieren der Wurzel erhalten wir die bekannte Kreisgleichung:

5. Bäume und Minimalgerüste

Einführung in die Algebra

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Algorithmische Graphentheorie

Füllen von Primitiven

Algorithmen und Datenstrukturen

Vorkurs Mathematik Intensiv. Geraden, Ebenen und lineare Gleichungssysteme - Musterlösung

Kryptographie mit elliptischen Kurven

Euklid ( v. Chr.) Markus Wurster

Übungen zu Geometrie (LGy) Universität Regensburg, Sommersemester 2014 Dr. Raphael Zentner, Dr. Olaf Müller

7. Triangulation von einfachen Polygonen

Quadtrees und Meshing

Analytische Geometrie I

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Übungsblatt 2 - Lösung

Unterrichtsreihe zur Parabel

6. Vektor- und Koordinaten-Geometrie.

Elementare Geometrie Vorlesung 19

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Kreis - Tangente. 2. Vorbemerkung: Satz des Thales Eine Möglichkeit zur Bestimmung der Tangente benutzt den Satz des Thales.

3 Vektoren. 3.1 Kartesische Koordinaten in Ebene und Raum. Höhere Mathematik 60

Zum Einstieg. Mittelsenkrechte

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Vektorrechnung Raumgeometrie

Transkript:

Geometrische Algorithmen Einige einfache Definitionen: Punkt: im n-dimensionalen Raum ist ein n-tupel (n Koordinaten) Gerade: definiert durch zwei beliebige Punkte auf ihr Strecke: definiert durch ihre beiden Endpunkte Streckenzug: Folge von Strecken (Kanten), wobei der Endpunkt (Knoten) einer Strecke der Anfangspunkt der nächsten ist Polygon: (oder geschlossener Streckenzug) wenn der Anfangspunkt der ersten Strecke gleich dem Endpunkt der letzten ist konvex: Polygon ist konvex wenn jede Strecke zwischen zwei Punkten in seinem Inneren komplett im Inneren liegt innen: Ein Polygon, dessen Kanten sich nicht schneiden, umrahmt eine Region, deren Punkte innen sind Schreibweise: Punkt (x,y), Strecke (u,v)-(x,y) Ist ein Punkt in einem Polygon? Motivation: gegeben Schaltplan, die Leitungen bilden ein Polygon: Frage: Kann man auf der Platine noch eine Leiterbahn von nach unterbringen? Antwort: Ja, wenn beide Punkte innerhalb oder beide außerhalb des Polygons sind Folie 10.1 Folie 10.2 Punkt-in-Polygon-Problem Das Punkt-in-Polygon-Problem Beachte: Was ist, wenn die Halbgerade einen Eckpunkt des Polygons schneidet? Ein erster Algorithmus: wähle Punkt unendlich weit außen und verbinde mit gehe auf der Verbindung in Richtung wenn eine Polygonkante gekreuzt wird und wir außen sind, gehen wir nach innen wenn eine Polygonkante gekreuzt wird und wir innen sind, gehen wir nach außen Folie 10.3 b a beide angrenzenden Kanten auf der selben Seite: innen/außen bleibt gleich a b verschiedene Seiten: innen/außen wechselt Folie 10.4 Das Punkt-in-Polygon-Problem Ein Algorithmus für ist (u,v) innerhalb von P = x, y ),...,( x n, y ) ( 1 1 n Definiere eine Halbgerade H ausgehend von (u,v) setze Ort=0 {0= innen, 1= außen } für alle Kanten k = ( xi, yi ) ( xi+1, yi+ 1) fall H und k sich schneiden aber nicht in ( x i, yi ) dann setze Ort=1-Ort falls H durch ( x i, yi ) geht falls ( xi 1, yi 1) ( xi, yi ) und k auf gleicher Seite von H dann setze Ort=1-Ort {repariere Fehler bei x, y ) ( x, y )} Aufwandsabschätzung: ( i 1 i 1 i i je Kante ein konstanter Aufwand also bei n Kanten: O(n) Eine Punktmenge, die die Eckpunkte eines Polygons darstellen soll, kann für viele Polygone stehen: aber auch möglich: z.b: oder: Frage: Wie bekommt man garantiert ein Polygon mit überschneidungsfreien Kanten? Folie 10.5 Folie 10.6

Erster Gedanke: Ein Greedy Algorithmus fange mit beliebiger Kante an solange Polygon nicht fertig füge beliebige Kante hinzu, die keine vorhandene Kante schneidet geht das? Zweiter Gedanke: Wir erinnern uns an den Handlungsreisenden. Beliebig verbinden, dann Kreuzungen auflösen. =>... Oh! geht das? Folie 10.7 Folie 10.8 Auflösen von Kreuzungen kann neue Kreuzungen erzeugen: => Konstruktion durch Beseitigung von Kreuzung funktioniert. Beweis: In jedem Schritt wird die Gesamtlänge aller Kanten um mindestens einen positiven Wert d verringert (s.u.). Würde man beliebig oft Kreuzungen entfernen können, würde die Gesamtlänge negativ werden. Also terminiert der Algorithmus und es gibt irgendwann keine Kreuzungen mehr. klappt es trotzdem? Dreiecksungleichung: > Folie 10.9 Folie 10.10 Beseitigung von Kreuzungen ist aufwendig. Geht es auch einfacher? Dritter Gedanke: Radius einer Kreisscheibe über alle Punkte rotieren. Beweisidee für rotierenden Radius: Jede neu hinzugenommene Kante liegt komplett außerhalb des bis zur vorherigen Kante überstrichenen Bereiches. Also sind Überschneidungen ausgeschlossen. Füge immer Kante zum neu überstrichenen Punkt hinzu. Ist dieser Beweis korrekt? Schließlich: Geht das? Folie 10.11 Folie 10.12

Das Verfahren des rotierenden Radius funktioniert nicht immer. Gegenbeispiel: Rotierender Radius funktioniert mit leichter Modifikation: z.b. Wähle Kreismittelpunkt innerhalb dreier Punkte: Dreiecksinnenwinkel ist immer < 180 oder: Wähle einen Randpunkt (äußerst rechts, ggf. obersten der rechten) als Mittelpunkt des rotierenden Kreises: Wenn der Radius 180 zurückgelegt hat, ohne einen Punkt zu überstreichen, kann eine Kreuzung entstehen. Der gesamte zu überstreichende Winkel ist nun unter 180 Folie 10.13 Folie 10.14 Definition: Die einer Punktmenge ist das kleinste konvexe Polygon, das alle Punkte in seinem Innern hat. Erste Idee: Wir probieren es induktiv (Ausdehnungsalgorithmus): => Anfang: Beginne mit Polygon aus beliebigen drei Punkten. Motivation: leichtere 2-dimensionale Projektion Konstruktion eines Zauns um alle Punkte herum Folie 10.15 Schritt: Wähle beliebigen noch nicht bearbeiteten Punkt. Liegt er außerhalb des bisher erzeugten Polygons, dann modifiziere die bisher gefundene Hülle, so daß sie den neuen Punkt enthält. Folie 10.16 Der Ausdehnungsalgorithmus (stretching algorithm) im Detail: größter Winkel neuer Punkt kleinster Winkel x-achse bisherige Hülle stützende Kanten beginne mit beliebigem Dreieck für alle Punkte P wenn P nicht in der bisherigen Hülle, dann füge Kante zum bisherigen Hüllenpunkt mit dem kleinsten Winkel zu P und zum Punkt mit dem größten Winkel zu P ein; entferne alle alten Kanten im Inneren der neuen Hülle neue Hülle Aufwand: für alle Punkte alle Winkel, also O( n 2 ) Folie 10.17 Folie 10.18

Ein Einpackalgorithmus (Gift Wrapping) Beginne mit einem äußersten Punkt (z.b. äußerst links) Verbinde immer zu dem Punkt, den die Einwickelschnur als nächstes erreicht (stützende Kante). Aufwandsabschätzung: wie beim Ausdehnungsalgorithmus O( n 2 ) Winkelberechnungen zum Finden der stützenden Kanten Folie 10.19 Graham s Scan (ein schnellerer Hüllenalgorithmus) beginne mit einem äußersten Punkt P 1 (z.b. äußerst rechts unten) berechne die Winkel der Verbindungen aller Punkte zu P 1 mit der x-achse sortiere alle Punkte entsprechend dieser Winkel in eine Liste für alle Punkte P i in der Liste füge neue Kante von P i 1 zu P i hinzu falls der Innenwinkel < 180 sonst entferne P und alle aus der Hülle für die der Innenwinkel > 180 P i P i 1 >180 i 1 <180 P 1 Pi k von Pi nach P i 1entstünde ein Innenwinkel >180 genauso von nach aber nicht zu. Pi Pi 2 P i 3 Folie 10.20 Aufwand für Graham s Scan: Bemerkung: Sortieren ist nötig, damit ein zu entfernender Punkt nicht später doch noch Teil der Hülle sein kann: Ballung Ballung (engl. Clustering) ist das Finden von Klassen in einer Punktmenge. P i P1 - P i 1 kann keine stützende Kante sein P i 1 In wie viele Klassen würden Sie diese Punkte einteilen? Aufwand für Graham s Scan: Jeder Punkt wird höchstens einmal zur Hülle hinzugefügt und höchstens einmal wieder entfernt => O(n) Das Sortieren der Winkel kostet O( n log n) gesamt also O( n log n) P 1 Warum? Folie 10.21 Folie 10.22 besser so Ballung oder so Ballung Verschiedene Arten: agglomerativ und divisiv agglomerativ: Füge in jedem Schritt die zwei am wenigsten entfernten Klassen zusammen. Ziel der Ballung könnte z.b. sein, Klassen so zu definieren, daß der durchschnittliche Abstand von Punkten einer Klasse möglichst klein wird (für eine gegebene Anzahl von Klassen). divisiv: Beginne mit einer Klasse. Teile in jedem Schritt eine Klasse in zwei Unterklassen. Folie 10.23 Folie 10.24

Wozu Ballung? Klassifikation Unüberwachtes (d.h. ohne a-priori-wissen) Bestimmen, was zusammen gehört, bzw. ähnlich ist. Klassifikation (ein bisher nicht gesehener Punkt wird einer Klasse zugeordnet, d.h. klassifiziert) z.b. durch Zuordnen zur Klasse zu der auch der ihm am nächsten liegende bekannte Punkt gehört (nearest neighbor) oder durch Zuordnen zur Klasse zu der die meisten der k ihm am nächsten liegenden Punkte gehören (k-nearest neighbor) k-nearest neighbor Folie 10.25 nearest neighbor Problem: Ein erster Algorithmus: Wie findet man, z.b. für agglomerative Ballung die beiden Punkte mit kleinstem Abstand zueinander? Berechne alle Distanzen wähle das Paar mit der kleinsten Distanz Dieser Algorithmus ist recht einfach, aber aufwendig: n( n 1) Aufwand für Berechnen aller Distanzen ist 2 O( n 2 ). Geht es auch schneller? Folie 10.26 Ein teile-und-herrsche-algorithmus In Frage kommende grenzüberschreitende Paare: Die Idee: teile den Raum in zwei Teile ein, berechne für jede Hälfte das nächste Paar überprüfe alle in Frage kommenden grenzüberschreitenden Paare wähle von allen das mit der kleinsten Distanz Nur solche, deren Abstand zur Grenze kleiner ist, als der kleinste bisher gefundene Abstand der nicht grenzüberschreitenden Paare d 1 d 2 Frage: Welche grenzüberschreitenden Paare kommen den in Frage? Folie 10.27 d 1 d 1 Folie 10.28 Wir machen es uns einfach: Jede Trennebene wird immer senkrecht zur x-achse gewählt. => leichtes Feststellen, auf welcher Seite ein Punkt liegt. Und einmaliges Sortieren aller x-koordinaten genügt, um immer eine Trennebene wählen zu können, so daß auf beiden Seiten gleich viele (±1) Punkte liegen. Folie 10.29 Ist die Berechnung der Grenzüberschreitenden Paare nicht aufwendig? Muß man im Worst-Case vielleicht fast jeden Punkt aus der einen Hälfte mit fast jedem Punkt aus der anderen Hälfte paaren? Nein! Maximal 6 Punkte (d.h. konstante Zahl) aus der anderen Hälfte, denn auch wenn der Abstand in Trenngerade y-richtung größer als d ist, kommt d d das Paar nicht in Frage, und innerhalb des Raumes der 6 Punkte kann kein weiterer sein d (weil d minimal). d Folie 10.30

Aufwandsabschätzung für teile-und-herrsche-algorithmus: Aufwand für jede Hälfte n T ( n) = 2 T ( ) + O( n log n) 2 Sortieren aller Punkte, so daß die Trennung auch wirklich zwei gleich große Hälften machen kann. (muß nur einmalig gemacht werden, wenn alle Trennebenen jeweils parallel sind, z.b. achsenparallel) Etwas Mathematik liefert: T ( n) = O( nlog 2 n) T ( 2) = 1 Nur 2 Punkte, dann trivial. Folie 10.31 Schnitte von beliebigen Strecken: z.b. Strecke a-b mit Strecke c-d Berechne a+u(b-a) = c+v(d-c) Das ist ein Gleichungssystem und hat als Lösung für u,v keine Lösung => die Strecken sind parallel unendl. viele Lösungen => die Strecken liegen übereinander 0 u 1, 0 v 1 => die Strecken schneiden sich sonst => sie schneiden sich nicht a c d b Folie 10.32 Einfacher, wenn die Strecken horizontal oder vertikal sind: x 4 Beide horizontal: 3 x x1 x2 prüfe x1 x3 x2 oder x3 x1 x4 Beide vertikal: verschieden ausgerichtet: x, y 4 x 1, y entsprechend mit y statt x x 2, y prüfe oder x x 1 x 2 y y 3 y 4 Schnitte vieler horizontaler und vertikaler Strecken Motivation: Berechnen einer Skyline Berechnen der Form überlagerter Rechtecke VLSI-Design x, y 3 Folie 10.33 Folie 10.34 Aufwandsabschätzung: Seien n horizontale und m vertikale Strecken gegeben. Es können maximal m n Schnittpunkte vorhanden sein. (Vereinfachende Annahme: keine Überschneidung von Strecken gleicher Ausrichtung) Im schlimmsten Fall müssen alle Schnittpunkte ausgegeben werden. => Es gibt keinen Algorithmus der für alle Fälle garantiert weniger Aufwand hat O(mn). Wenn der Aufwand O(mn) nicht unterschritten werden kann, warum dann nicht einfach jede vertikale Strecke mit jeder horizontalen auf Schnittpunkt prüfen? Aufwand ist aber auch höchstens O(mn), weil je Streckenpaar nur eine konstante Zeit für die Schnittpunktprüfung benötigt wird. hier okay, aber geht es hier vielleicht einfacher? Folie 10.35 Folie 10.36

Überlegung: Können wir das Problem induktiv lösen? z.b. senkrechte Gerade ( ) von links nach rechts über alle Strecken führen und alles, was komplett links liegt als erledigt betrachten Folie 10.37