Prof. Dr. Lutz Plümer Dr. Gerhard Gröger Name: _______________________ Matrikel-Nr.: _______________________ Klausur „Diskrete Mathematik“, SS 02 1. Termin, 18. 7. 2002 1. (35 Punkte) 1.1. Wenden Sie den in der Vorlesung vorgestellten Algorithmus von Dijkstra auf den Graphen in der Abbildung an, um den kürzesten Weg vom Knoten A zum Knoten Z zu ermitteln. Es reicht aus, wenn Sie für jeden Schritt des Algorithmus die besuchten, noch nicht vollständig abgearbeiteten Knoten („grüne Knoten“) inklusive der kürzesten bisher gefundenen Weglängen, sowie den aktuell bearbeiteten Knoten angeben. 1.2. Wenden Sie nun den ebenfalls in der Vorlesung vorgestellten Algorithmus „Dijkstra mit Geometrie“ auf den Graphen in der Abbildung an, um den kürzesten Weg vom Knoten A zum Knoten Z zu ermitteln. Als Euklidischen Abstand zwischen zwei Knoten verwenden Sie bitte die grobe Schätzung des Abstands in der Abbildung in Zentimetern. Es reicht auch hier aus, wenn Sie für jeden Schritt des Algorithmus die „grünen Knoten“ inklusive der kürzesten bisher gefundenen Weglängen sowie den aktuell bearbeiteten Knoten angeben. C 4,0 ß 2,0 Z 2,0 2,2 D I 2,1 2,1 A 7,0 1,0 2,3 E B 0,5 H 2,0 4,0 G F 2. (25 Punkte) Fügen Sie die Zahlen nacheinander in dieser Reihenfolge in einen anfangs leeren AVL-Baum ein: 22 49 13 60 27 69 2 5 1 6 62 Stellen Sie dabei durch Anwendung der in der Vorlesung eingeführten Operationen sicher, dass nach jedem Einfügen wieder ein AVL-Baum vorliegt. Skizzieren Sie den AVL-Baum nach jedem Einfügen und benennen Sie die Operationen. Seite 1 von 2 3. (15 Punkte) Der Scanline-Algorithmus, der in der Vorlesung vorgestellt wurde, ist nicht auf Liniensegmente anwendbar, bei denen die x-Koordinaten der Anfangs- oder Endpunkte paarweise identisch sind. Ein spezieller Fall ist hier, wenn auch die y-Koordinaten der Anfangs- bzw. Endpunkt zweier Liniensegmente identisch sind, d.h. wenn beide Liniensegmente adjazent sind (vgl. die beiden Beispiele in der nebenstehenden Abbildung). Geben Sie die Stellen im Scanline-Algorithmus aus der Vorlesung an, an denen Probleme bei adjazenten Segmenten auftreten. Skizzieren Sie eine Modifikation des Algorithmus, der diese Probleme löst und insbesondere auch die Schnittpunkte zwischen adjazenten Liniensegmenten findet. 4. (15 Punkte) Formulieren Sie einen Algorithmus in Pseudocode, der den Mittelwert (Summe geteilt durch Anzahl) und die (empirische) Varianz (Summe der Quadrate der Differenz von Zahl und Mittelwert, geteilt durch die um Eins verringerte Anzahl) der Zahlen in einem Array berechnet. Ihre Formulierung soll sehr eng an Java angelehnt sein. 5. (25 Punkte) Formulieren Sie einen Algorithmus in Pseudocode, der aus einem VoronoiDiagramm 5.1. die entsprechende Delaunay-Triangulation und 5.2. die konvexe Hülle der Punktmenge, die dem Voronoi-Diagramm zugrunde liegt, herleitet. Der Pseudocode soll präzise sein, braucht jedoch nicht eng an Java angelehnt zu sein. Gesamtpunktzahl: 115 Anmerkung: Diese Klausur dauert 90 Minuten. Wir gehen davon aus, dass Sie in diesen 90 Minuten 100 Punkte erzielen können. Der Aufgabenzettel enthält 5 Aufgaben mit 115 Punkten. Aus diesen Aufgaben können Sie die Teilmenge auswählen, die am besten zu Ihren Kenntnissen passt. Lassen Sie sich also nicht von den Anforderungen des Aufgabenzettels entmutigen, sondern beginnen Sie mit den Aufgaben, die Sie am besten lösen können. Der Bewertungsschlüssel bezieht sich auf das Intervall von 0 bis 100 Punkte. Viel Erfolg! Seite 2 von 2