Graphentheorie Bachelor Praktische Informatik Name: Prof. Dr.-Ing. Klaus Berberich Vorname: Aufgabe � � Matrikel: � � � Punkte P % Aufgabe � (� Punkte) Betrachten Sie den folgenden ungerichteten Graphen: � � � � � (a) Geben Sie die Adjazenzmatrix des Graphen an. (b) Welche einfachen Zyklen, die aus genau vier Kanten bestehen, besitzt der Graph? Dabei sollen Zyklen, die aus den gleichen Knoten bestehen, nicht mehrfach gezählt werden. (c) Ermitteln Sie die Summe der Knotengrade mittels Anzahl der Kanten. (d) De�nieren Sie allgemein den Begri� “Spannbaum eines ungerichteten zusammenhängenden Graphen”. Wieso kann dieser Graph keinesfalls mehr als 70 Spannbäume besitzen? Aufgabe � (� Punkte) (a) Ein gewurzelter binärer Baum besitze 1000 Knoten. Bis auf die letzte Ebene seien alle Ebenen voll besetzt. Wie viele Knoten be�nden sich auf der letzten Ebene? (b) Auf einen gewurzelten binären Baum werde der Algorithmus dfs zur Tiefensuche mit der Wurzel als Startknoten angewendet. Wie kann man anhand der Ergebnisse der Tiefensuche feststellen, ob ein Knoten ein Nachfahre eines anderen Knotens ist? Prüfungsklausur GT Wintersemester ����/���� – ��. März ���� Seite � von � Aufgabe � (� Punkte) Ein gerichteter Graph mit den Knoten 0, . . . , 5 sei durch folgende Gewichtsmatrix gegeben: 2 3 0 2 1 1 1 1 61 0 1 3 1 17 6 7 61 1 0 4 3 17 6 7 61 1 1 0 2 2 7 6 7 41 1 1 1 0 3 5 1 1 1 1 1 0 (a) Skizzieren Sie den Graphen. (b) Führen Sie den Dijkstra-Algorithmus durch, bis ein kürzester Pfad vom Startknoten 0 zum Starknoten 3 ermittelt ist. Geben Sie dazu nach Durchführung eines jeden Schritts folgende Informationen an: • Nr. des Knotens, zum dem ein kürzester Pfad in diesem Schritt ermittelt wurde • Inhalte der Felder dis und pre nach Aktualisierung. (c) Der Algorithmus von Dijkstra benutzt eine Prioritätswarteschlange, die als MinHeap organisiert ist. Welche Operationen werden durch die Operation decreaseKey auf diesem MinHeap ausgeführt? (d) Gemäß der Implementierung aus der Vorlesung besitzt der Algorithmus von Dijkstra eine Zeitkomplexität von O((m + n) · log(n)), wobei n die Knotenzahl und m die Kantenzahl bezeichnet. Wie groß ist die Zeitkomplexität im schlechtesten Fall in Abhängigkeit von der Knotenzahl n? Begründen Sie Ihre Antwort. Aufgabe � (� Punkte) Betrachten Sie den folgenden ungerichteten gewichteten Graphen: � � � � � � � � � � � � � � � (a) Bestimmen Sie mit Hilfe des Algorithmus von Kruskal einen minimalen Spannbaum. Geben Sie für jede zur Menge T hinzugefügte Kante die aktuellen Inhalte der Arrays tu und tv sowie den aktuellen Inhalt des Arrays r zur Verwaltung disjunkter Knotenmengen an. (b) Ein kürzester Pfad zwischen zwei Knoten s und t besuche alle sonstigen Knoten des Graphen. Ein Kollege behauptet, dass die auf dem Pfad enthaltenen Kanten dann einen minimalen Spannbaum bilden. Stimmen Sie dieser Aussage zu? Begründen Sie Ihre Antwort. Prüfungsklausur GT Wintersemester ����/���� – ��. März ���� Seite � von � Name: Vorname: Matrikel: Aufgabe � (� Punkte) Beim Kompilieren von Programmen müssen Abhängigkeiten zwischen Quellcode-Dateien berücksichtigt werden. Eine Abhängigkeit entsteht beispielsweise dann, wenn in der Datei B eine Klasse verwendet wird, die in der Datei A beschrieben ist. Ist dies der Fall, muss die Datei A vor der Datei B kompiliert werden. Wird eine Datei geändert, müssen die Datei selbst und alle (transitiv) davon abhängigen Dateien neu kompiliert werden. Viele Quellcode-Dateien zusammen ergeben dann einen gerichteten azyklischen Graphen folgender Art: A B C D E F G H I Folgende Fragestellungen lassen sich mit den in der Vorlesung behandelten Verfahren lösen. Beschreiben Sie Ihre Vorgehensweise jeweils im Detail. (a) Wie können Sie eine Reihenfolge bestimmen, in der die Dateien kompiliert werden sollen? (b) Wie können Sie bestimmen, welche Dateien nach Änderung einer einzelnen Datei neu übersetzt werden müssen? (c) Wie können Sie feststellen, ob Teile des Quellcodes unabhängig voneinander sind und sich daher parallel übersetzen lassen? Prüfungsklausur GT Wintersemester ����/���� – ��. März ���� Seite � von � ⌅