Zum Hauptinhalt springen

2.1 Definitionen

Konvexe Menge​

Definition (konvexe Menge)

Eine Menge S⊆RdS\subseteq\mathbb{R}^d heißt konvex, genau dann wenn für alle Punkte p,q∈Sp,q\in S die Verbindungsstrecke

pq‾={x:x=λp+(1−λ)q, λ∈[0,1]}\overline{pq}=\{x : x=\lambda p+(1-\lambda)q,\ \lambda\in[0,1]\}

in SS enthalten ist, also pq‾⊆S\overline{pq}\subseteq S.

In Worten: Man kann zwischen zwei beliebigen Punkten der Menge geradeaus laufen, ohne die Menge zu verlassen. Es gibt keine Dellen, Einbuchtungen oder Löcher.

Bei einer U-förmigen Menge dagegen kann man je einen Punkt pp und qq in die beiden „Arme“ legen. Die Strecke pq‾\overline{pq} führt dann durch die Lücke dazwischen, also außerhalb der Menge. Die U-Form ist nicht konvex.

Zum Ausprobieren: Zieh pp und qq in die beiden Arme der U-Form, dann verlässt die Strecke die Menge. Bei der konvexen Form gelingt das nie.

pq
p und q lassen sich ziehen.
Die Strecke p̄q verlässt S (rot) ⇒ S ist nicht konvex. Die konvexe Hülle füllt genau solche Einbuchtungen auf.

Beispiele: Kreisscheibe, Dreieck, Halbebene, Gerade und Strecke sind konvex. Ein Ring, ein „L“ oder ein Stern sind es nicht.

Wichtige Eigenschaft: Der Schnitt konvexer Mengen ist konvex. Liegen p,qp,q in allen Mengen, dann liegt pq‾\overline{pq} auch in allen. Das braucht man für die nächste Definition.

Konvexe Hülle​

Definition (konvexe Hülle)

Die konvexe Hülle CH(S)\mathcal{CH}(S) einer Menge S⊆RdS\subseteq\mathbb{R}^d ist die kleinste konvexe Menge, die SS enthält, also der Schnitt aller konvexen Mengen, die SS enthalten.

Warum ist „Schnitt aller“ dasselbe wie „kleinste“? Der Schnitt ist nach der Eigenschaft oben konvex und enthält SS. Und er ist in jeder konvexen Obermenge enthalten, also die kleinste.

Gummiband-Metapher​

Man stellt sich die Punkte als Nägel in einem Brett vor, spannt ein Gummiband weit darum und lässt es los. Das Band zieht sich zusammen und legt sich an die äußersten Nägel. Seine Form ist die konvexe Hülle.

Das zeigt anschaulich:

  • Die Hülle ist ein Polygon.
  • Ihre Ecken sind Eingabepunkte, nämlich die Nägel, an denen das Band einen Knick macht.
  • Innere Punkte und Punkte, die auf einer geraden Strecke des Bandes liegen, sind keine Ecken.

Das Gummiband zum Anfassen: Setze, verschiebe oder lösche Nägel. Die Hülle passt sich sofort an. Punkte innen oder mitten auf einer Kante (Preset „Kollinear“) sind keine Ecken.

p1p2p3p4p5p6p7p8p9p10
Ersten und letzten Punkt der unteren Hülle entfernen (stehen schon oben). Ergebnis im Uhrzeigersinn: p1 → p2 → p8 → p10 → p9 → p5.
Klicken: hinzufügen · Ziehen: verschieben · Rechtsklick: löschen

Alternative Definition für d=2d=2​

Die konvexe Hülle CH(P)\mathcal{CH}(P) einer endlichen Menge PP von nn Punkten ist das eindeutige konvexe Polygon mit Ecken aus PP, das alle Punkte von PP enthält.

Diese (informelle) Definition ist die Grundlage für die Algorithmen: Wir suchen eine Teilmenge der Eingabepunkte und ihre Reihenfolge auf dem Rand.

Problemstellung​

  • Eingabe: Eine Menge P={p1,p2,…,pn}P=\{p_1,p_2,\dots,p_n\} von nn paarweise verschiedenen Punkten in der Ebene.
  • Ausgabe: Eine sortierte Liste von Punkten aus PP (laut Folie im Uhrzeigersinn), die die Ecken von CH(P)\mathcal{CH}(P) darstellt.
Die Reihenfolge gehört zur Ausgabe

Nur die Menge der Ecken auszugeben, wäre zu wenig: Um das Polygon zu zeichnen oder damit weiterzurechnen, braucht man die Reihenfolge entlang des Randes. Genau diese Ordnung macht das Problem mindestens so schwer wie Sortieren, siehe 2.3.

Beispiel der Folie: Eingabe (p1,…,p8)(p_1,\dots,p_8). Ausgegeben werden nur die 5 äußeren Punkte p2,p4,p5,p7,p8p_2,p_4,p_5,p_7,p_8 in Randreihenfolge. p1,p3,p6p_1,p_3,p_6 liegen innen.

Ein Kriterium für Hüllkanten​

Die zentrale Beobachtung (Folie 7), auf der alle Algorithmen aufbauen:

Eine gerichtete Kante pq⃗\vec{pq} (mit p,q∈Pp,q\in P) ist genau dann eine Kante der im Uhrzeigersinn orientierten Hülle, wenn kein anderer Punkt von PP links von ihr liegt.

Begründung: Läuft man im Uhrzeigersinn um ein konvexes Polygon, liegt das Innere immer rechts. Liegt also alles rechts von pq⃗\vec{pq} (oder darauf), ist die Gerade durch p,qp,q eine Stützgerade: Sie berührt die Punktmenge und hat sie ganz auf einer Seite. Mit dem Orientierungstest lässt sich „links von“ in O(1)O(1) prüfen.

Algorithmenübersicht (Folie 6)​

PrinzipAlgorithmenLaufzeit
Inkrementellnaiv · KallayO(n3)O(n^3) · O(nlog⁡n)O(n\log n)
RekursivDivide-and-Conquer · QuickHullO(nlog⁡n)O(n\log n)
SweepingGraham, Andrew, TORCHO(nlog⁡n)O(n\log n)
Output-sensitivJarvis · ChanO(nh)O(nh) · O(nlog⁡h)O(n\log h), wenn CH(P)\mathcal{CH}(P) ein hh-Eck ist

Anmerkung: QuickHull ist im Durchschnitt O(nlog⁡n)O(n\log n), im Worst Case aber O(n2)O(n^2).

Output-sensitiv heißt: Die Laufzeit hängt nicht nur von der Eingabegröße nn, sondern auch von der Ausgabegröße hh ab. Bei wenigen Hüllecken kann das deutlich schneller sein.