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

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

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

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

Konvexe Hüllen(Convex Hulls)

Seminar Computational Geometry - SS09Sandro Janusch

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

ThemenübersichtWas 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

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

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}

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

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}

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

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.

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

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.

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

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)

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

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

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

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

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

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

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

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

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

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)

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

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

KnotenKante

Fläche

{Abbildung 3 Polyeder}

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

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

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

Beweis:

Euler Formel für zusammenhängende planareGraphen mit n Knoten, ne Kanten und nf Flächen.

n – ne + nf = 2

Wie anwenden auf Konvexen Hülle, so dass die Relationenerhalten bleiben?

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

Polyeder planarer GraphP

G

{Abbildung 4 Konstruktion}

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

• 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

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

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)

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

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

Berechnung von Convex Hulls in 3D-Räumen

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

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

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

Horizont

{Abbildung 5 Horizont}

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

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

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

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)

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

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

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

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)

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

• 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=1

n 16( (n-r) * E[T(Pr)] ) r r

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

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

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

Quellen

• http://de.wikipedia.org

• Computational Geometry - Algorithms and ApplicationsVerlag: Springer, Berlin; Auflage: 3

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

Vielen Dank für die Aufmerksamkeit.