Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Konvexe Hüllen (Convex Hulls)

Ähnliche Präsentationen


Präsentation zum Thema: "Konvexe Hüllen (Convex Hulls)"—  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

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

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 = {p1, …, pn} oder Pr = {p1...pr}. 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 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)

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

10 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

11 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

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

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

15 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?

16 Polyeder  planarer Graph
{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  2ne ≥ 3nf

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

19 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

20 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

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

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(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

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

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

Ähnliche Präsentationen


Google-Anzeigen