Mündliche Prüfung – Fragen & Tipps
Format: mündlich, Einzeltermin, ca. 40 Minuten, ohne Hilfsmittel. Man hat also Papier oder Tafel und den eigenen Kopf.
Hier sind die Kapitel 0–5 abgedeckt (bis Voronoi/Delaunay). Punktlokalisierung (§6), Polygon-Triangulierung (§7) und 3D-Hüllen (§8) kommen noch dazu, sobald sie im Skript stehen. Die Fragen sind selbst zusammengestellt aus den Folien, nicht von Prof. Umlauf.
Wie läuft so eine Prüfung typischerweise?
- Einstieg mit einem Thema deiner Wahl ist an vielen Lehrstühlen üblich. Frag vorher nach, ob das hier auch so ist. Wenn ja: ein Thema vorbereiten, das du an der Tafel in 5 Minuten sauber aufbauen kannst (z.B. Graham's Scan oder Fortune).
- Danach springt der Prüfer meist durch die Kapitel. Pro Kapitel ein bis zwei Fragen, oft in der Form „Erklären Sie X“ → „Warum ist das so?“ → „Was passiert wenn …?“.
- Bei Umlauf liegt der Fokus erfahrungsgemäß auf Algorithmus + Laufzeit + Begründung, nicht auf auswendig gelernten Folien.
Hints für die Prüfung
- Immer zuerst eine Skizze. Bevor du einen Algorithmus erklärst, ein Beispiel mit 5–8 Punkten zeichnen. Daran erklären ist viel leichter als abstrakt, und der Prüfer sieht sofort, dass du es verstanden hast.
- Laufzeit immer mit Begründung. Nicht nur „“, sondern „Sortieren dominiert, der Scan selbst ist amortisiert linear, weil jeder Punkt höchstens einmal gepusht und einmal gepoppt wird“.
- Das Schema für jeden Algorithmus: Problem → Idee → Datenstrukturen → Ablauf → Laufzeit → Speicher → Sonderfälle → untere Schranke/Optimalität. Wenn du hängst, gehe einfach die nächste Station durch.
- Allgemeine Lage benennen. Fast jeder Algorithmus nimmt etwas an (keine drei Punkte kollinear, keine zwei gleichen -Koordinaten, keine vier Punkte auf einem Kreis …). Sag welche Annahme, warum sie gebraucht wird und wie man sie in der Implementierung los wird. Das ist die typische Nachfrage.
- Die Praktikumsaufgaben sind Prüfungsstoff. Du hast Graham/Jarvis, iso-orientierte Segmente, kd-Baum und Delaunay selbst implementiert. Erzähl ruhig, welche Sonderfälle dir beim Implementieren begegnet sind. Das wirkt souverän.
- Beweise, die man können sollte (kurz, an der Tafel machbar):
- untere Schranke für die konvexe Hülle (Reduktion von Sortieren, Parabel ),
- Graham amortisiert nach dem Sortieren,
- kd-Baum über ,
- Range-Tree Speicher und Anfrage ,
- Voronoi Knoten, Kanten (Euler + ),
- Fortune und warum das optimal ist,
- Korrektheit von Bowyer–Watson (Satz 11).
- Bekannte Fallen:
- kd-Baum: welche Koordinate an der Wurzel (Folien: , de Berg: ), und dass strikte Vergleiche
<bei gleichen Koordinaten Punkte verlieren. - Bentley–Ottmann: Schnittpunkte links von der Sweep-Line nicht als Ereignis einfügen, Duplikate vermeiden.
- Fortune: der Voronoi-Knoten ist der Kreismittelpunkt, das Ereignis passiert am tiefsten Punkt des Kreises.
- Delaunay: Zufällige Reihenfolge ist nötig für die erwartete Laufzeit, nicht nur nett.
- kd-Baum: welche Koordinate an der Wurzel (Folien: , de Berg: ), und dass strikte Vergleiche
- Ehrlich sein, wenn man etwas nicht weiß, und laut weiterdenken. „Ich weiß den Beweis nicht auswendig, aber die Idee ist …“ ist in einer mündlichen Prüfung viel besser als Schweigen.
- Zahlen bereithalten: , . Damit kann man Laufzeiten anschaulich vergleichen.
Fragen nach Kapitel
Antworten zum Aufklappen. Erst selbst laut beantworten (am besten mit Skizze), dann nachsehen.
Kapitel 1 – Grundlagen
Was ist der Unterschied zwischen Punkten und Vektoren? Warum ist das wichtig?
Punkte sind Orte im affinen Raum, Vektoren sind Verschiebungen. Erlaubt sind Punkt − Punkt = Vektor, Punkt + Vektor = Punkt, und affine Kombinationen mit (z.B. Mittelpunkt). Punkt + Punkt ist nicht definiert (hängt vom Koordinatenursprung ab). Wichtig, weil geometrische Algorithmen unabhängig vom Koordinatensystem sein sollen. → 1.2.1
Wie testet man, ob ein Punkt links oder rechts einer gerichteten Geraden liegt?
Mit dem Orientierungstest, der Determinante : links (Linkskurve, gegen den Uhrzeigersinn), : rechts, : kollinear. Es ist das des Kreuzprodukts bzw. die doppelte vorzeichenbehaftete Dreiecksfläche. Kommt ohne Winkel, Wurzeln oder Division aus. → 1.2.2
Was ist die Real RAM und wo ist sie unrealistisch?
Rechenmodell: Speicherzellen enthalten reelle Zahlen mit unendlicher Genauigkeit, Grundrechenarten und Vergleiche kosten . In echt hat man Gleitkommazahlen, Rundungsfehler können den Orientierungstest bei fast kollinearen Punkten falsch machen. Abhilfe: exakte Arithmetik (Ganzzahlen, adaptive Prädikate nach Shewchuk), Epsilon-Toleranzen (gefährlich, nicht transitiv). → 1.2.3
Erklären Sie O, Ω, Θ. Was sagt das Master-Theorem?
obere, untere, exakte asymptotische Schranke (bis auf Konstanten, ab einem ). Master-Theorem für mit : Fall 1 polynomiell kleiner als → ; Fall 2 gleich → ; Fall 3 polynomiell größer (+ Regularität) → . Beispiele: Mergesort Fall 2, kd-Baum-Gerade Fall 1 → . → 1.2.6
Kapitel 2 – Konvexe Hülle
Definieren Sie Konvexität und konvexe Hülle.
konvex ⇔ für alle liegt die Strecke in . Die konvexe Hülle ist die kleinste konvexe Menge, die enthält = Schnitt aller konvexen Obermengen = Menge aller Konvexkombinationen. In 2d ein konvexes Polygon mit Ecken aus (Gummiband). Ausgabe: Ecken im Uhrzeigersinn (oder gegen). → 2.1
Wie funktioniert der naive Algorithmus und wie schnell ist er?
Für jedes geordnete Paar prüfen, ob alle anderen Punkte rechts von liegen. Wenn ja, ist eine Hüllkante. Paare × Tests = , dann Kanten sortieren. Problem: kollineare Punkte auf dem Rand. → 2.2
Beweisen Sie: Die konvexe Hülle braucht Ω(n log n).
Reduktion von Sortieren: Zahlen auf die Parabel abbilden, , in . Alle liegen auf der Hülle (Parabel ist konvex). Hülle berechnen, beim kleinsten starten und den Rand ablaufen ergibt die sortierte Folge in . Ginge die Hülle schneller als , ginge auch Sortieren schneller, Widerspruch zur unteren Schranke für vergleichsbasiertes Sortieren. → 2.3
Erklären Sie Graham's Scan inklusive Laufzeit.
Punkte nach sortieren (lexikographisch, bei gleichem nach ). Obere Hülle von links nach rechts: Punkt pushen, solange die letzten drei keine Rechtskurve machen, den mittleren poppen. Dann untere Hülle von rechts nach links, beide zusammenfügen. Laufzeit: Sortieren , der Scan ist amortisiert , weil jeder Punkt höchstens einmal gepusht und gepoppt wird. Optimal wegen 2.3. Kollineare Punkte: als „keine Rechtskurve“ werten, dann werden sie entfernt. → 2.4
Jarvis' March: Idee, Laufzeit, wann besser als Graham?
Geschenkpapier-Algorithmus: Beim Punkt mit kleinstem starten. Von der aktuellen Ecke den Punkt suchen, so dass alle anderen rechts liegen (kleinster Winkel, per Orientierungstest), weitergehen, bis man wieder am Start ist. pro Ecke, also bei Hüllpunkten: ausgabesensitiv. Besser als Graham, wenn ; schlechter, wenn alle Punkte auf der Hülle liegen (). → 2.5
Wie schafft Chan's Algorithmus O(n log h)? Warum widerspricht das nicht Ω(n log n)?
Punkte in Gruppen der Größe teilen, jede mit Graham (). Dann Jarvis über die Gruppen: pro Schritt in jeder Teilhülle per binärer Suche die Tangente finden ( pro Schritt). Nach Schritten abbrechen. raten und quadrieren (), dann bilden die Kosten eine geometrische Reihe: . Kein Widerspruch, weil die untere Schranke für gilt (Parabel), dann ist . → 2.6
Kapitel 3 – Schnitt von Liniensegmenten
Was ist das Sweep-Line-Prinzip? Welche Datenstrukturen braucht man?
Eine Gerade fegt über die Ebene. Statt alle Paare zu testen, betrachtet man nur Objekte, die die Sweep-Line gleichzeitig schneiden. Drei Klassen: erledigt (links), aktiv (geschnitten), noch nicht gesehen (rechts). Zwei Strukturen: Ereignisstruktur (Haltepunkte, sortiert, z.B. Heap/sortierte Liste) und Statusstruktur (aktive Objekte entlang der Sweep-Line, balancierter Suchbaum). → 3.3
Wie findet man alle Schnitte iso-orientierter Segmente in O(n log n + R)?
Sweep von links nach rechts. Ereignisse: linker Endpunkt einer Horizontalen → in einfügen; rechter Endpunkt → aus löschen; Vertikale → Bereichsanfrage in . als balancierter Suchbaum: Einfügen/Löschen , Bereichsanfrage . Sortieren . Gesamt . Reihenfolge bei gleichem : erst Einfügen, dann Vertikale, dann Löschen (sonst gehen Berührungen verloren). → 3.3.1
Erklären Sie Bentley–Ottmann. Warum reicht es, Nachbarn zu testen?
Beobachtung: Kurz vor einem Schnittpunkt sind die beiden Segmente in der Statusstruktur benachbart. Also reicht es, Nachbarn auf Schnitt zu testen, und zwar immer dann, wenn sich die Nachbarschaft ändert: beim Einfügen (neues Segment mit oberem und unterem Nachbarn), beim Löschen (die beiden ehemaligen Nachbarn), beim Schnittereignis (Segmente tauschen, je mit neuem äußeren Nachbarn). Ereignisse: linke Endpunkte, rechte Endpunkte, Schnittpunkte (dynamisch). Laufzeit . Annahmen: keine senkrechten Segmente, keine drei Segmente durch einen Punkt, keine Überlappungen, Endpunkte nicht auf anderen Segmenten. → 3.3.2
Ist O((n+k) log n) immer besser als der naive Algorithmus?
Nein. Bei Schnitten ist es , schlechter als naiv . Lohnt sich bei wenigen Schnitten (). Optimal wäre (Chazelle–Edelsbrunner, Balaban), aber kompliziert. → 3.3.2
Was ist ein AVL-Baum, wie bleibt er balanciert?
Binärer Suchbaum, in dem sich die Höhen der beiden Teilbäume jedes Knotens um höchstens 1 unterscheiden. Höhe . Nach Einfügen/Löschen den Pfad hoch prüfen und mit Einfach- oder Doppelrotationen reparieren (LL/RR einfach, LR/RL doppelt). → Anhang
Kapitel 4 – Bereichsanfragen
Wie ist ein 2d-Baum aufgebaut und wie sucht man darin?
Binärer Baum, jeder Knoten speichert einen Punkt und teilt seine Zelle abwechselnd nach und . Balanciert durch Teilen am Median (zwei vorsortierte Listen, stabil aufteilen): Aufbau , Speicher . Suche: Punkt melden, falls in ; links weiter, wenn unter den Schlüssel reicht; rechts, wenn darüber. → 4.3
Beweisen Sie die Anfragezeit O(√n + R) beim 2d-Baum.
Teuer sind nur Knoten, deren Zelle vom Rand von geschnitten wird. Zähle Zellen, die eine senkrechte Gerade trifft: Nach zwei Ebenen ( und ) gibt es 4 Enkel mit je Punkten, die Gerade trifft höchstens 2. ⇒ (Master, ). Vier Randstrecken ⇒ , plus für komplett enthaltene Teilbäume. → 4.3
Was ist ein Range-Tree? Speicher, Aufbau, Anfrage?
Balancierter Baum über ; jeder innere Knoten hat einen assoziierten -Baum über seiner kanonischen Teilmenge. Anfrage: 1d-Suche in liefert kanonische Teilmengen, in jeder 1d-Suche in : . Speicher (jeder Punkt in assoziierten Bäumen, einem pro Ebene), Aufbau durch Mischen von unten. d: Speicher, Anfrage. Mit Fractional Cascading ein weniger. → 4.4
kd-Baum oder Range-Tree – wann was?
kd-Baum: linearer Speicher, einfach, auch für Nächste-Nachbarn, aber (in hohen Dimensionen fast linear). Range-Tree: viel schnellere Anfragen , aber Speicher. Viele Anfragen + Speicher egal → Range-Tree. → Vergleich
Kapitel 5 – Voronoi & Delaunay
Definieren Sie das Voronoi-Diagramm. Warum sind die Zellen konvex?
. Jede Zelle ist der Schnitt der offenen Halbebenen (Seite der Mittelsenkrechten mit ), und Schnitte konvexer Mengen sind konvex. → 5.1
Zeigen Sie: höchstens 2n−5 Knoten und 3n−6 Kanten.
Knoten für die Halbgeraden hinzufügen → zusammenhängender planarer Graph. Euler: . Jeder Knoten hat Grad : . Einsetzen ergibt und . → Satz 2
Was ist die Strandlinie bei Fortune und warum braucht man sie?
Bei Voronoi ist der Bereich direkt über der Sweep-Line noch nicht fertig (ein Punkt unter kann ihn noch beeinflussen). Fertig ist alles über der Strandlinie = untere Einhüllende der Parabeln mit Brennpunkt und Leitlinie . Die Knicke laufen entlang der Voronoi-Kanten. → 5.2
Welche Ereignisse gibt es bei Fortune? Was passiert jeweils?
Punktereignis: erreicht einen Site → neuer Bogen spaltet den Bogen darüber, neue Kante beginnt, Kreisereignisse der neuen Tripel prüfen, ein evtl. vorhandenes Kreisereignis des gespaltenen Bogens löschen (false alarm). Kreisereignis: erreicht den tiefsten Punkt eines leeren Kreises durch drei benachbarte Bogen-Sites → mittlerer Bogen verschwindet, Kreismittelpunkt wird Voronoi-Knoten, neue Kante beginnt, neue Tripel prüfen. → 5.2
Warum läuft Fortune in O(n log n) und warum ist das optimal?
Punktereignisse, Kreisereignisse, je konstant viele Operationen à auf und . Speicher (höchstens Bögen). Optimal: Aus dem Voronoi-Diagramm bekommt man die konvexe Hülle in (unbeschränkte Zellen im Kreis ablaufen), die braucht . → Satz 7
Was ist die Delaunay-Triangulierung? Welche Eigenschaften hat sie?
Der duale Graph des Voronoi-Diagramms (Kante zwischen , wenn ihre Zellen eine Kante teilen). Bei höchstens drei Punkten auf einem Kreis eine Triangulierung. Delaunay-Bedingung: Der Umkreis jedes Dreiecks ist leer (Satz 8). Max-Min-Winkel: maximiert den kleinsten Winkel (Satz 9). Rand = konvexe Hülle, enthält EMST und nächste Nachbarn. → 5.3
Beweisen Sie den Max-Min-Winkel-Satz (Idee).
Illegale Kante (gegenüberliegender Punkt im Umkreis) → Viereck ist konvex → Flip. Nach dem Peripheriewinkelsatz wird der kleinste der sechs Winkel dabei größer, der sortierte Winkelvektor lexikographisch größer. Endlich viele Triangulierungen ⇒ die beste hat keine illegale Kante ⇒ ist Delaunay. → Satz 9
Erklären Sie den randomisierten inkrementellen Delaunay-Algorithmus.
Hülle (oder Super-Dreieck), dann Punkte in zufälliger Reihenfolge einfügen: Dreieck mit finden, alle Dreiecke mit im Umkreis entfernen (zusammenhängend, BFS über Nachbarn), das sternförmige Loch mit fächern. Korrekt nach Satz 11. Naiv , mit Point-Location erwartet , weil pro Schritt erwartet Dreiecke geändert werden (Rückwärtsanalyse: Durchschnittsgrad ). Speicher . → 5.4
Warum braucht man die zufällige Reihenfolge?
Die Änderungen gelten nur im Erwartungswert über die Reihenfolge. Bei einer ungünstigen festen Reihenfolge kann jedes Einfügen Dreiecke betreffen ⇒ . Zufall macht das unabhängig von der Eingabe (kein „böser“ Input mehr, nur Pech mit kleiner Wahrscheinlichkeit). → 5.4
Querschnittsfragen
Welche Algorithmen der Vorlesung sind Sweep-Line-Algorithmen? Was ist bei jedem die Ereignis- und die Statusstruktur?
| Algorithmus | Ereignisse | Status |
|---|---|---|
| Graham's Scan (als Sweep gelesen) | Punkte nach | Stack der Hülle |
| Iso-orientierte Segmente | Endpunkte, Vertikale | -Werte der aktiven Horizontalen |
| Bentley–Ottmann | Endpunkte + Schnittpunkte | aktive Segmente sortiert nach |
| Fortune | Sites + Kreisereignisse | Strandlinie (Bögen) |
Wo taucht Ω(n log n) überall auf, und wie zeigt man es?
Konvexe Hülle (Reduktion Sortieren → Parabel), Voronoi (Reduktion Hülle → Voronoi), Delaunay (ebenso, Rand = Hülle). Immer per Reduktion von einem Problem mit bekannter unterer Schranke in .
Was bedeutet „ausgabesensitiv“? Beispiele?
Laufzeit hängt auch von der Größe der Ausgabe ab. Jarvis , Chan , iso-orientierte Segmente , Bentley–Ottmann , kd-Baum , Range-Tree .
Was ist „allgemeine Lage“ und wie geht man in der Praxis damit um?
Annahme, dass keine Degenerationen vorkommen (kollinear, gleiche Koordinaten, kozirkulär). Vereinfacht Algorithmen und Beweise. In der Praxis: Sonderfälle explizit behandeln, lexikographische Ordnung statt nur , symbolische Perturbation (Simulation of Simplicity), exakte Prädikate.