Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Konvexe Hüllen (Convex Hulls) Seminar Computational Geometry - SS09 Sandro Janusch."—  Präsentation transkript:

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

2 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 -Laufzeitanalyse

3 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}

4 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}

5 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.

6 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 = {p 1, …, p n } oder P r = {p 1...p r }. Set E = Ein Set mit allen Kanten der Konvexe Hülle.

7 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 e 1 aus E und füge den Ursprungsknoten von e 1 in L ein, danach füge den Zielknoten L hinzu  danach lösche e 1 aus E suche aus E die nächste Kante e 2, deren Ursprungsknoten der Zielknoten von e 1 war und füge den Zielknoten von e 2 in L ein …. das wird solange durchgeführt bis nur noch eine Kante in E vorhanden ist (Zielknoten dieser Kante ist der Ursprung von e 1 )

8 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³)

9 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. L upper = Liste mit Knoten der UH (von links nach rechts) L lower = LH analog UH, nur rechts nach links

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

11 Fall 1 Punkte machen alle einen rechte Kurve, tue nichts  weiter mit nächsten Punkt p i+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  L upper bestimmt. (LH analog zu UH) Fall 3 letzten drei Punkte beschreiben gar keine Kurve (Punkte liegen auf einer Geraden)  behandeln wie linke Kurve

12 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)

13 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}

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

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

16 Polyeder  planarer Graph P G {Abbildung 4 Konstruktion}

17 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  2n e ≥ 3n f

18 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)

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

20 allgemeiner Schritt: füge Punkt p r der Konvexen Hülle hinzu  Transformation CH(P r-1 ) zu CH(P r ) Fall 1 p r liegt in CH(P r-1 ) oder auf dessen Grenzen, dann CH(P r-1 ) = CH(P r ), tue nichts Fall 2 p r liegt nicht in CH(P r-1 ) oder auf dessen Grenzen durch Standpunkt p r 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 p r ersetzt

21 Horizont {Abbildung 5 Horizont}

22 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

23 Laufzeitanalyse: {7 - 8}: Schritt r des Algorithmus benötigt konstante Zeit, falls F conflict (p r ) leer ist ist dies nicht der Fall, dann wird O(F conflict (p r )) 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)  F conflict (p r )  E[∑ r=5 n F conflict (p r )] = O(n)

24 {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))

25 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)

26 Horizontkante e mit Flap Δ={p, q, s, t} und (pq = e) Flap Δ є T(P r-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(P r )  ∑ r=1 n 16( (n-r) * E[T(P r )] ) r r

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

28 Quellen Computational Geometry - Algorithms and Applications Verlag: Springer, Berlin; Auflage: 3

29 Vielen Dank für die Aufmerksamkeit.


Herunterladen ppt "Konvexe Hüllen (Convex Hulls) Seminar Computational Geometry - SS09 Sandro Janusch."

Ähnliche Präsentationen


Google-Anzeigen