Spickzettel
Zum schnellen Nachschlagen in der Vorlesung. Alles Wichtige auf einer Seite, mit Links zur ausführlichen Erklärung.
Schneller finden
/ oder Strg+K öffnet die Suche überall auf der Seite. Tippfehler sind egal („vornoi“, „bentley otman“), mehrere Wörter grenzen ein („kd laufzeit“).
Algorithmen auf einen Blick
| Problem | Algorithmus | Zeit | Speicher | Kernidee |
|---|---|---|---|---|
| Konvexe Hülle | naiv | jedes Paar: liegen alle anderen rechts? | ||
| Konvexe Hülle | Graham's Scan | nach sortieren, Stack, nur Rechtskurven | ||
| Konvexe Hülle | Jarvis' March | Geschenkpapier: nächste Ecke = alle anderen rechts | ||
| Konvexe Hülle | Chan | Gruppen + Graham, Jarvis mit binärer Suche, | ||
| Konvexe Hülle | untere Schranke | Sortieren → Punkte auf Parabel | ||
| Segmentschnitt | naiv | alle Paare | ||
| Segmentschnitt iso | Sweep | Horizontale in Baum, Vertikale = Bereichsanfrage | ||
| Segmentschnitt allg. | Bentley–Ottmann | (Folien: ) | nur Nachbarn in der Statusstruktur testen | |
| 1d-Bereich | balancierter Baum | Split-Knoten, zwei Pfade | ||
| 2d-Bereich | kd-Baum | , Aufbau | abwechselnd / am Median teilen | |
| 2d-Bereich | Range-Tree | , Aufbau | -Baum, pro Knoten -Baum der kanonischen Teilmenge | |
| d-Bereich | kd-Baum | |||
| d-Bereich | Range-Tree | |||
| Voronoi | Halbebenen | jede Zelle = Schnitt von Halbebenen | ||
| Voronoi | Fortune | Sweep, Strandlinie aus Parabeln, Punkt-/Kreisereignisse | ||
| Delaunay | randomisiert inkrementell | erw. , naiv | schlechte Dreiecke raus, Loch fächern |
= Eingabegröße, = Hüllpunkte, / = Größe der Ausgabe.
Formeln
| Was | Formel |
|---|---|
| Orientierung | ; links, rechts, kollinear |
| InCircle | der Zeilen usw.; ⇔ im Umkreis des ccw-Dreiecks |
| Master-Theorem | , : → ; → ; → |
| kd-Baum-Gerade | |
| Strandlinie | |
| Voronoi-Größe | Knoten, Kanten (Euler mit ) |
| Triangulierung | Dreiecke, Kanten |
| Strandlinie | Bögen |
| Delaunay-Schritt | erwartet neue Dreiecke (Durchschnittsgrad) |
Allgemeine Lage: was jeder Algorithmus annimmt
| Algorithmus | Annahme | Wenn verletzt … |
|---|---|---|
| Graham | keine zwei Punkte mit gleichem | lexikographisch nach sortieren |
| Graham/Jarvis | keine drei kollinear | kollinear als „keine Rechtskurve“ werten bzw. den weitesten nehmen |
| Iso-Segmente | keine gemeinsamen -Koordinaten von Endpunkten | bei gleichem : Einfügen → Anfragen → Löschen |
| Bentley–Ottmann | keine Senkrechten, keine 3 Segmente durch einen Punkt, keine Überlappung | lexikographische Ordnung, Ereignis mit Segmentliste |
| kd-Baum | alle Koordinaten verschieden | <= / >= in der Suche |
| Fortune | keine 4 Punkte auf einem Kreis, keine gleichen | Kanten der Länge 0, Bögen der Länge 0 |
| Delaunay | keine 4 Punkte auf einem Kreis | Fläche beliebig triangulieren, Ergebnis nicht eindeutig |
Sätze, die man nennen können sollte
- Ω(n log n) für Hülle: Reduktion von Sortieren (2.3).
- Graham ist optimal, Jarvis/Chan sind ausgabesensitiv.
- kd-Baum wegen .
- Range-Tree Speicher : jeder Punkt auf jeder Ebene in genau einer kanonischen Teilmenge.
- Satz 1 (Voronoi): kollinear → parallele Geraden, sonst zusammenhängend mit Strecken/Halbgeraden.
- Satz 3 (Voronoi): Knoten ⇔ leerer Kreis mit ≥ 3 Punkten, Kante ⇔ leerer Kreis mit genau 2.
- Lemma 4–6 (Fortune): Bögen entstehen nur durch Punktereignisse, verschwinden nur durch Kreisereignisse, alle Knoten werden gefunden.
- Satz 7: Fortune , Speicher, optimal.
- Satz 8: Delaunay ⇔ leerer Umkreis.
- Satz 9: Delaunay maximiert den kleinsten Winkel.
- Satz 11: Algorithmus 4 ist korrekt (neue Kanten im Loch, neue Dreiecke legal).
Glossar Deutsch – Englisch
| Deutsch | Englisch | Bedeutung |
|---|---|---|
| konvexe Hülle | convex hull | kleinste konvexe Menge um alle Punkte |
| Orientierungstest | orientation test / orient2d | links/rechts/kollinear über Determinante |
| allgemeine Lage | general position | keine Degenerationen (kollinear, kozirkulär …) |
| ausgabesensitiv | output-sensitive | Laufzeit hängt von der Ausgabegröße ab |
| Sweep-Line / Scan-Line | sweep line | fegende Gerade, hält nur an Ereignissen |
| Ereignisstruktur | event queue | sortierte Haltepunkte (Heap) |
| Statusstruktur | status structure (SSS) | aktive Objekte entlang der Sweep-Line (balancierter Baum) |
| Bereichsanfrage | range query | alle Punkte in einem Rechteck |
| kanonische Teilmenge | canonical subset | Blätter unter einem Knoten |
| assoziierte Struktur | associated structure | zweite Ebene im Range-Tree |
| Split-Knoten | split node | wo sich die Suchpfade zu und trennen |
| Zelle | cell / region | Teil der Ebene, der zu einem Knoten oder Site gehört |
| Datenpunkt | site | Eingabepunkt beim Voronoi-Diagramm |
| Mittelsenkrechte | bisector | Punkte mit gleichem Abstand zu zwei Sites |
| Strandlinie | beach line | untere Einhüllende der Parabeln bei Fortune |
| Bogen | arc | ein Parabelstück der Strandlinie |
| Punktereignis | site event | Sweep-Line erreicht einen Site |
| Kreisereignis | circle event | Bogen verschwindet, Voronoi-Knoten entsteht |
| falscher Alarm | false alarm | Kreisereignis, das ungültig wurde |
| doppelt verkettete Kantenliste | DCEL (doubly connected edge list) | Datenstruktur für planare Unterteilungen |
| dualer Graph | dual graph | Knoten ↔ Flächen vertauscht |
| Delaunay-Bedingung | empty circle property | kein Punkt im Umkreis |
| illegale Kante | illegal edge | verletzt lokal die Delaunay-Bedingung, wird geflippt |
| Kantenflip | edge flip | Diagonale eines konvexen Vierecks tauschen |
| Rückwärtsanalyse | backward analysis | Erwartungswert über den zuletzt eingefügten Punkt |
| Punktlokalisierung | point location | in welcher Fläche liegt ein Punkt? (Kap. 6) |
Praktikum
| # | Aufgabe | Nachlesen |
|---|---|---|
| 1 | Graham + Jarvis | 2.4, 2.5 |
| 2 | iso-orientierte Segmente | 3.3.1 |
| 3 | 2d-Baum | 4.3 |
| 4 | randomisierte Delaunay-Triangulierung | 5.4 |