konvexe hüllen (convex hulls) seminar computational geometry - ss09 sandro janusch
TRANSCRIPT
Konvexe Hüllen(Convex Hulls)
Seminar Computational Geometry - SS09Sandro 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
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}
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
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ß.
KnotenKante
Fläche
{Abbildung 3 Polyeder}
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 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?
Polyeder planarer GraphP
G
{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
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)
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
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=1
n 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 ApplicationsVerlag: Springer, Berlin; Auflage: 3
Vielen Dank für die Aufmerksamkeit.