Konvexe Hüllen (Convex Hulls)

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Algorithmen für das Erfüllbarkeitsproblem SAT
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Marco Barz Seminar über Algorithmen SoSe2007
Im dreidimensionalen Raum
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Geometrisches Divide and Conquer
Seminar parallele Programmierung SS 2003
Planarisierung von Cluster Graphen
Algorithmen und Komplexität
Christian Schindelhauer
Minimum Spanning Tree: MST
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
BSP Binary Space Partitioning
Tetraederzerlegung Ina Ehmann Tetraederzerlegung.
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Effiziente Algorithmen
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Konstruktion der Voronoi-Diagramme I
Institut für Theoretische Informatik
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Routenplanung querfeldein - Geometric Route Planning
Korrektheit von Programmen – Testen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Optimierungs- Algorithmen
Delauny Triangulierung
Gliederung der Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Binärbäume.
 Präsentation transkript:

Konvexe Hüllen (Convex Hulls) Seminar Computational Geometry - SS09 Sandro Janusch

Themenübersicht Was ist eine Konvexe Hülle? Formale Definition Berechnung der Konvexen Hülle in 2D-Räumen Algorithmen für 2D Laufzeitanalyse Komplexität Konvexer Hüllen in 3D-Räumen Berechnung der Konvexen Hülle in 3D-Räumen ConvexHull3D

Was ist eine Konvexe Hülle? Seien n Punkte im 2-dimensionalen Raum gegeben. Dann heißt eine Menge konvex, wenn mit je zwei Punkten der Menge auch die Verbindungsstrecke ganz in der Menge liegt. Eine konvexe Menge enthält also weder „Inseln" noch „Halbinseln“. konvexe Menge keine konvexe Menge {Abbildung 1 konvexe Mengen}

{Abbildung 2: Konvexe Hülle in der Ebene} In der Ebene kann man sich das Problem der konvexen Hülle wie folgt vorstellen: Gegeben sei eine Menge von Wasserstellen. Und man zäunt alle Wasserstellen mit einem möglichst kurzen Zaun ein.  Es entsteht eine Konvexe Hülle, in diesem Fall ein konvexes Vieleck. (Ähnlichkeit mit Gummiring) {Abbildung 2: Konvexe Hülle in der Ebene}

Formale Definition Konvexität: Sei S c R² , dann heißt S konvex, falls für beliebige Punkte p, q є S das Segment pq vollständig in S enthalten ist. Konvexe Hülle: Die konvexe Hülle einer Menge S ist der Durchschnitt aller konvexen Mengen, die S enthalten. Oder intuitiv gesagt, die kleinste konvexe Menge, die S enthält.

Berechnung der Konvexen Hülle in 2D-Räumen SlowConvexHull Algorithmus: Eingabe: Ein Set P von Punkten in der Ebene. Ausgabe: Eine Liste L, welche die Knoten der CH(P) in Uhrzeigersinn geordneter Reihenfolge enthält. CH(P) = Konvexe Hülle des Punkte-Sets P. Set P = Ein Set von Knoten der Konvexe Hülle , P = {p1, …, pn} oder Pr = {p1...pr}. Set E = Ein Set mit allen Kanten der Konvexe Hülle.

Prinzip: von Zeile 2-7 bestimmt der Algorithmus das Set E, was dann alle Kanten der Konvexen Hülle enthält  die Kanten in E sind gerichtet, jede Kante hat einen Ursprung und ein Ziel nimm beliebige eine Kante e1 aus E und füge den Ursprungsknoten von e1 in L ein, danach füge den Zielknoten L hinzu  danach lösche e1 aus E suche aus E die nächste Kante e2, deren Ursprungsknoten der Zielknoten von e1 war und füge den Zielknoten von e2 in L ein …. das wird solange durchgeführt bis nur noch eine Kante in E vorhanden ist (Zielknoten dieser Kante ist der Ursprung von e1)

Laufzeit SlowConvexHull: Annahme: Der Test in Zeile 5 kann/wird in konstanter Zeit durchgeführt.  O(1) es werden n² - n [(n(n-1)] Punktepaare gebildet für jedes dieser Paare werden n-2 Punkte überprüft, ob sie rechts des Paares liegen  (n² - n)*(n - 2)= n³ - 3n² + 2n  O(n³) Konstruktion der Punkte von E in L benötigt O(n²)  Gesamtlaufzeit: O(1) + O(n³) + O(n²) = O(n³)

ConvexHull2D (Inkrementeller Algorithmus): Eingabe: Ein Set P von Punkten in der Ebene. Ausgabe: Eine Liste L, welche die Knoten der CH(P) in Uhrzeigersinn geordneter Reihenfolge enthält. Lupper = Liste mit Knoten der UH (von links nach rechts) Llower = LH analog UH, nur rechts nach links

Prinzip: zu Beginn Konstruktion der Upper ~ and Lower Hull UH =(p1 bis pn) ; LH = (pn bis p1) fundamentale Schritt: bestimmen der neuen UH nach hinzufügen von einem Punkt pi {UH(p1..pi-1)  UH (p1..pi)} füge pi in Lupper ein dann prüfe die letzten drei Punkte {pi-2, pi-1, pi} auf rechte Kurve

Fall 1 Punkte machen alle einen rechte Kurve, tue nichts  weiter mit nächsten Punkt pi+1 Fall 2 die drei Punkte machen eine linke Kurve  löschen des mittleren Punktes neu entstandenen letzten drei Punkte werden wieder auf Kurve geprüft… solange die aktuellen letzten drei Punkte keine rechte Kurve beschreiben bzw. bis nur noch 2 Punkte übrig sind  Lupper bestimmt. (LH analog zu UH) Fall 3 letzten drei Punkte beschreiben gar keine Kurve (Punkte liegen auf einer Geraden)  behandeln wie linke Kurve

{Zeile 1}: Sortierung der Punkte nach x-Koordinate Laufzeitanalyse: {Zeile 1}: Sortierung der Punkte nach x-Koordinate  O(n log n) {Zeile 3 – 6}/{8-11}: bei jedem Durchlauf der for-Schleife wird die while-Schleife im Normalfall mindestens einmal ausgeführt (best-case: keinmal) für jede Ausführung der while-Schleife wird ein Punkt gelöscht die Ausführung ist also beschränkt durch die for-Schleife  O(n)  Gesamtlaufzeit: O(n) + O(n log n) = O(n log n)

Komplexität Konvexer Hüllen in 3D-Räumen planarer Fall: Die Komplexität der Konvexen Hülle ergibt sich aus der Anzahl der Knoten  lineare Komplexität [O(n)]. 3D Fall: Die Anzahl der Kanten kann auf jeden Fall größer sein, als die Anzahl der Knoten, aber die Differenz ist nicht sehr groß. Knoten Kante Fläche {Abbildung 3 Polyeder}

Satz:. Sei P ein konvexes Polyeder mit n Knoten, dann ist Satz: Sei P ein konvexes Polyeder mit n Knoten, dann ist die Anzahl der Kanten von P ne ≤ (3n - 6) und die Anzahl der Flächen nf ≤ (2n - 4).  ne ≤ (3n - 6) (Beweis folgt!)  nf ≤ (2n - 4) (Beweis folgt!)

Beweis: Euler Formel für zusammenhängende planare Graphen mit n Knoten, ne Kanten und nf Flächen.  n – ne + nf = 2 Wie anwenden auf Konvexen Hülle, so dass die Relationen erhalten bleiben?

Polyeder  planarer Graph {Abbildung 4 Konstruktion}

jede Fläche des Graphen G hat eine korrespondierende Fläche in P jede korrespondierende Fläche berührt mindestens 3 Kanten jede Kante ist von 2 Flächen umschlossen  2ne ≥ 3nf

die Komplexität von Konvexen Hüllen im 3D-Raum ist O(n) im Beispiel: Knoten n = 8 Kanten 12 ≤ 18 = 24 – 6 = 3 * 8 – 6 Flächen 6 ≤ 12 = 16 – 4 = 2 * 8 – 4 Man sieht also das die Konvexe Hülle eines Set P von Punkten im 3D-Raum ein Polyeder ist, dessen Knoten Punkte aus P sind. die Komplexität von Konvexen Hüllen im 3D-Raum ist O(n)

Berechnung von Convex Hulls in 3D-Räumen ConvexHull3D (Inkrementeller Algorithmus): wählt Punkte p1 und p2 aus P dann durchlaufe P bis ein Punkt p3 gefunden wird der nicht auf der Geraden von p1p2 liegt durchlaufe P wieder, bis ein Punkt p4 gefunden wird der nicht in der Ebene (p1p2 p3) liegt (findet man keinen 4. Punkt  dann ConvexHull2D)  Grundform aus Punkten (p1p2 p3 p4)  Tetraeder restlichen Punkte in eine unsortierte Permutation {p5, …, pn}  Vorrausetzung für Algorithmus

allgemeiner Schritt: füge Punkt pr der Konvexen Hülle hinzu  Transformation CH(Pr-1) zu CH(Pr) Fall 1 pr liegt in CH(Pr-1) oder auf dessen Grenzen, dann CH(Pr-1) = CH(Pr), tue nichts Fall 2 pr liegt nicht in CH(Pr-1) oder auf dessen Grenzen durch Standpunkt pr unterteilt sich CH in sichtbare und unsichtbare Bereiche  entstehende Grenze nennt sich Horizont alle sichtbaren Flächen werden durch die neuen entstanden Flächen zu pr ersetzt

Horizont {Abbildung 5 Horizont}

Conflict Graph: eine Liste mit allen noch nicht eingefügten Punkten eine Liste mit allen Flächen Verbindungslinien, die die Sichtbarkeit darstellen der Conflict Graph liefert ein Set von Knoten die eine bestimmte Fläche sehen und ein Set von Flächen die ein bestimmter Punkt sieht  so kann man in linearer Zeit, die Sichtbarkeiten für einen Punkt bzw. für eine Fläche bestimmen

Laufzeitanalyse: {7 - 8}: Schritt r des Algorithmus benötigt konstante Zeit, falls Fconflict(pr) leer ist ist dies nicht der Fall, dann wird O(Fconflict(pr)) Zeit benötigt Klar ist, Flächen können nur gelöscht werden, wenn sie erzeugt wurden und jede kann nur einmal gelöscht werden  Erzeugung benötigt Zeit O(n)  impliziert Löschen benötigt auch O(n)  Fconflict(pr)  E[∑r=5n Fconflict(pr)] = O(n)

{Zeile 17-19}: bei jedem Schritt r wird dies für jede Horizont-Kante in L durchgeführt für jedes e є L wird O(P(e)) benötigt  O(∑e є L P(e))

Flap (Kante einer Konvexen Hülle) Set von Punkten D(Δ) = {p, q, s, t} und die Linien der Punkte sind Kanten der Konvexen Hülle Killing Set K(Δ) eines Flaps, enthält alle Punkte, für die die beiden Flächen des Flaps sichtbar sind  Flächen, die beim Einfügen eines Punktes x gelöscht werden Flap Δ є T(S) falls D(Δ) c S und K(Δ) ∩ S = 0 (T(S)  aktive Konfiguration)

Horizontkante e mit Flap Δ={p, q, s, t} und (pq = e) Flap Δ є T(Pr-1) Punkte, die die angrenzenden Fläche von e sehen, sind in K(Δ)  P(e) c K(Δ)  ∑e є L P(e) c ∑Δ K(Δ) Summe aller Flaps Δ, die in einer aktiven Konfiguration T(Pr)  ∑r=1n 16( (n-r) * E[T(Pr)] ) r r

Mächtigkeit von T(Pr), ist die doppelte Anzahl der Kanten der CH(Pr)  6r – 12 ∑e є L P(e) ≤ ∑Δ K(Δ) ≤ …. … ≤ ∑r=1n 16( (n-r) * (6r-12) ) ≤ 96n ln n r r  O(n log n)

Quellen http://de.wikipedia.org Computational Geometry - Algorithms and Applications Verlag: Springer, Berlin; Auflage: 3

Vielen Dank für die Aufmerksamkeit.