Name: Vorname: Matrikelnummer: Musterklausur zur Vorlesung Algorithmische Geometrie Datum, 00.00.2012, Beginn: 00.00 Uhr Dauer: 60 min Bemerkungen: • Jedes Blatt ist mit Namen, Vornamen und Matrikelnummer zu versehen. • Jede Aufgabe ist auf dem vorgesehenen Blatt zu lösen. Reicht der dortige Platz nicht aus, bekommen Sie auf Nachfrage zusätzliches Papier. • Erlaubte Hilfsmittel: Papier, Schreibzeug und ein nicht programmierbarer Taschenrechner. Weitere Hilfsmittel sind nicht erlaubt. • Schalten Sie ihr Handy aus! • Schreiben Sie leserlich. Punkteverteilung: 1 (6) 2 (9) 3 (4) 4 (8) 1/7 5 (6) 33 2/7 Name: Vorname: Matrikelnummer: 1. Aufgabe: Konvexe Hülle ( 2 + 3 + 1 Punkte ) (a) Der Algorithmus hat an dem unten mit Pfeil markierten Eingabepunkt gestoppt. Verbinden Sie diejenigen Punkte miteinander, die sich zu diesem Zeitpunkt in der oberen konvexen Hülle befinden. (b) Analysieren Sie die Komplexität des nachfolgenden Algorithmus zur Berechnung der oberen konvexen Hülle. Nennen und begründen Sie die Komplexität einer jeden Zeile und geben Sie die Gesamtkomplexität an. (c) Sortieren Sie folgende Komplexitätsklassen nach aufsteigender Komplexität: O( log n ), O( 1 ), O( n! ), O( n ) 3/7 2. Aufgabe: Schnitte von Liniensegmenten ( 3 + 2 + 4 Punkte ) (a) Erklären Sie das Grundprinzip eines Sweep-Line-Algorithmus. (b) Welche Informationen muss sich der Sweep-Line-Algorithmus zur Berechnung der Schnitte von Liniensegmenten merken und mittels welcher Datenstrukturen werden sie gespeichert? (c) Gegeben sei die nachfolgende dargestellte Menge von Liniensegmenten mit der Sweep-Line l. Der Punkt auf der Sweep-Line ist bereits abgearbeitet. Geben Sie den Inhalt der drei Datenstrukturen für dieses Beispiel an. Benennen Sie die benötigten Elemente in der Abbildung. l 4/7 Name: Vorname: Matrikelnummer: 3. Aufgabe: Schnitte planarer Unterteilungen ( 3 + 1 Punkte ) (a) Der nachfolgende Graph (Abb. 1) sei in einer Halbkantendatenstruktur gespeichert. Die nachstehenden Tabellen geben einen Teil der Datenstruktur an. Nun wird die Kante st eingefügt (Abb. 2). Ergänzen Sie die Einträge für Knoten, Kanten und Facetten, so dass die resultierende Datenstruktur eine korrekte Halbkantendatenstruktur ist. s p r f1 f3 f2 s p u r f1 t q f2 u t q Abb. 1 f4 f3 Abb. 2 Vertex Coord. Incident Edge Face r - f1 s - f2 t - u - tu Outer Components Inner Components tr NIL Next Prev f3 f4 Half-edge Origin Twin st s ts rt r tr tu t ut pr p rp IncidentFace (b) Markieren Sie in den nachfolgenden Abbildungen die darunter angegebene Menge. xor steht für exklusiv oder. AG A xor G G –A 5/7 4. Aufgabe: Punktsuche ( 4 + 4 Punkte ) (a) Zeichnen Sie in die nachfolgende Punktmenge den kd-Baum ein und geben Sie die zugehörige Datenstruktur als Baum an. Benennen und markieren Sie innere Knoten und Blätter. (b) In der nachstehende Trapezkarte (obere Abb.) wird die Kante si eingefügt. Im unteren Teil der Abbildung sehen Sie die zugehörige Datenstruktur vor dem Einfügen der Kante. Aktualisieren Sie die Trapezkarte und die Datenstruktur in Abbildung 2. 6/7 Name: Vorname: Matrikelnummer: 5. Aufgabe: Voronoidiagramm und Delaunaytriangulierung ( 1 + 2 + 3 Punkte ) (a) Auf welchen geometrischen Strukturen liegen Punkte, die den gleichen Abstand haben zu • zwei Punkten: • einem Punkt und einer Geraden: (b) Durch welche Ereignisse entstehen Ecken und Kanten im Voronoidiagramm? Durch was sind diese Ereignisse charakterisiert? (c) Sei P eine Menge von n Punkten in der Ebene, die nicht alle kollinear sind. Ferner liegen k Punkte auf der konvexen Hülle. Beweisen Sie, dass jede Triangulierung von P 2n – 2 – k Dreiecke besitzt. 7/7