Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014 bzw. am 05.02.2014 gemeinsam diskutieren wollen. Um Ihnen und mir das Leben leichter zu machen, sind die Aufgaben den einzelnen Kapiteln der Vorlesung zugeordnet. Anmerkung: Zum Inhalt der Vorlesung am 22.01.2014 wird es noch ein gesondertes Übungsblatt geben. 1 Grundbegriffe 1. Aufgabe Beantworten Sie die folgende Frage und begründen Sie Ihre Antwort ausführlich. Gibt es Graphen mit einer ungeraden Anzahl an Knoten mit einem ungeraden Grad? 2. Aufgabe Beantworten Sie die folgende Frage und begründen Sie Ihre Antwort ausführlich. (i) Warum kann man unter Verwendung der Erreichbarkeitsmatrix die Zusammenhangskomponenten in einem gerichteten Graphen bestimmen? (ii) Welche Nachteile hat der auf dieser Idee basierende Algorithmus für gerichtete Graphen? (iii) Kann man unter Verwendung der Erreichbarkeitsmatrix auch die Zusammenhangskomponenten in einem ungerichteten Graphen bestimmen? 2 Elementare Graphalgorithmen 3. Aufgabe Es sei G = (V, E) der folgende gerichtete Graph. 89:; ?>=< 4 / ?>=< 89:; 2 / 89:; ?>=< 3 / 89:; ?>=< 1 89:; ?>=< 6 y /% 89:; ?>=< 5 89:; ?>=< 7 / 89:; ?>=< 8 1 (i) Bestimmen Sie mit Hilfe der Tiefensuche eine topologische Sortierung der Knoten von G. Geben Sie für jeden Knoten u in G sowohl die Zeiten an, zu denen u als entdeckt und vollständig verarbeitet markiert wird, als auch den Knoten v, der als Vorgänger von u gespeichert wird. (ii) Skizzieren Sie den Graph G0 = (V, E), der entsteht, wenn die Knoten in G gemäß der in (i) bestimmten topologischen Sortierung linear angeordnet werden. (iii) Gibt es andere topologische Sortierungen der Knotenmenge E des Graphen G als die in (i) gefundene? 4. Aufgabe Es sei G = (V, E) der folgende gerichtete Graph. 89:; ?>=< 4 ?>=< 89:; 2 X / 89:; ?>=< 3 % ?>=< 89:; y / 89:; ?>=< 5 1 / 89:; ?>=< 6 F Bestimmen Sie mit Hilfe der Tiefensuche die Zusammenhangskomponenten des Graphen G. (i) Geben Sie für jeden Knoten u im Graphen G sowohl die Zeiten an, zu denen u als entdeckt und vollständig verarbeitet markiert wird, als auch den Knoten v, der als Vorgänger von u gespeichert wird. (ii) Geben Sie den inversen Graphen G0 von G an. (iii) Geben Sie für jeden Knoten u im Graphen G0 sowohl die Zeiten an, zu denen u als entdeckt und vollständig verarbeitet markiert wird, als auch den Knoten v, der als Vorgänger von u gespeichert wird. 3 Kürzeste Pfade 5. Aufgabe Es seien G ein gerichteter, kreisfreier, kantengewichteter Graph, wobei alle Kantengewichte größer 0 sind, und s ein ausgewählter Startknoten in G. (i) Welche Algorithmen kennen Sie, um die Gewichte der kürzesten Pfade von s zu jedem anderen Knoten in G zu bestimmen? (ii) Geben Sie gute obere Schranken für die Laufzeit dieser Algorithmen an. Gehen Sie davon aus, dass der gegebene Graph n Knoten und m Kanten hat. 2 6. Aufgabe Es sei G ein gerichteter, kantengewichteter Graph, wobei alle Kantengewichte größer 0 sind. (i) Erläutern Sie, wie man mit Hilfe des Algorithmus von Dijkstra die Gewichte der kürzesten Pfade von jedem Knoten u in G zu jedem anderen Knoten v in G bestimmen kann? (ii) Ist es sinnvoller, den Algorithmus von Bellman und Ford zu benutzen? Gehen Sie davon aus, dass der gegebene Graph n Knoten und m Kanten hat. 7. Aufgabe Es sei ein Autoatlas mit Karten von Europa gegeben. (i) Begünden Sie, weshalb die Luftlinienentfernung zwischen zwei Städten benutzt werden kann, um mit dem A∗ -Algorithmus eine kürzeste Route von London nach Paris zu bestimmen. (ii) Welche Vorteile hat es, den A∗ -Algorithmus anstelle des Algorithmus von Dijkstra zu benutzen, um die Länge einer kürzesten Route von London nach Paris zu bestimmen. 8. Aufgabe Es sei der folgende gerichtete, kantengewichtete Graph G gegeben. 89:; ?>=< 1 1 3 / ?>=< 89:; 2 1 y % ?>=< 89:; 4 5 3 1 / 89:; ?>=< 3 T / 89:; ?>=< 5 2 (i) Benutzen Sie den Algorithmus von Floyd und Warshall, um die Gewichte der kürzesten Pfade von jedem Knoten u zu jedem anderen Knoten v zu berechnen. (ii) Benutzen Sie den Algorithmus von Bellman und Ford, um die Gewichte der kürzesten Pfade vom Startknoten 1 zu jedem anderen Knoten u zu bestimmen. (iii) Benutzen Sie den Algorithmus von Dijkstra, um die Gewichte der kürzesten Pfade vom Startknoten 1 zu jedem anderen Knoten u zu bestimmen. Benutzen Sie den in der Vorlesung vorgestellten Ansatz, die Menge der noch zu untersuchenden Knoten1 mit Hilfe eines binären Min-Heaps zu verwalten. Geben Sie alle binären Min-Heaps an, die sukzessive entstehen. 1 Das sind die Knoten, für die sich die Schätzwerte noch verändern können. 3 9. Aufgabe Geben Sie einen gerichteten, kantengewichteten Graphen G an, so dass mit dem Algorithmus von Floyd und Warshall mindestens das Gewicht eines kürzesten Pfades von einem Knoten u zu einem anderen Knoten v nicht korrekt bestimmt wird. 4 Netzplantechnik 10. Aufgabe Es seien die folgenden Informationen über ein geplantes Projekt gegeben: Vorgang a b c d e Dauer 2 3 4 4 2 Minimalzeitbedingung − ST (b) − ST (a) ≥ 3 ST (c) − ST (a) ≥ 3 ST (d) − ST (b) ≥ 3 ST (e) − ST (a) ≥ 2 Maximalzeitbedingung − − − − − (a) Geben Sie einen geeigneten Netzplan an, der diese Informationen adäquat widerspiegelt. Welche Varianten gibt es? Welche Vor- und Nachteile haben diese Varianten? (b) Überprüfen Sie, ob das Projekt durchführbar ist und bestimmen Sie ggf. die minimale Zeit time m , die zur Durchführung dieses Projektes benötigt wird, sowie die spätesten Startzeitpunkt der einzelnen Vorgänge, um das Projekt in der Zeit time m durchzuführen. 5 Minimal spannende Bäume 11. Aufgabe Es sei die folgende Tabelle mit Enfernungsangaben für die Entfernungen zwischen den Städten A, B, C, D und E gegeben. A B C D E A – 200 km 400 km 500 km 700 km B 200 km – 300 km 400 km 600 km C 400 km 300 km – 500 km 600 km D 500 km 400 km 500 km – 500 km E 700 km 600 km 600 km 500 km – Verwenden Sie den Algorithmus von Kruskal, um einen minimal spannenden Baum zu bestimmen, wobei als zugrunde liegende Datenstruktur eine UnionFind-Struktur zu verwenden ist. 4 (a) Vervollständigen Sie die folgende Tabelle um anzugeben, wie sich die Union-Find-Struktur sukzessive ändert. (b) Geben Sie den so bestimmten minimal aufspannenden Baum an. A B C D E Vater Größe Vater Größe Vater Größe Vater Größe Vater Größe Vater Größe Hinweis: Gehen Sie davon aus, dass die Union-Operation so implementiert ist, dass die Mengen in Abhängigkeit von ihrer Größe vereinigt werden. 12. Aufgabe Es sei die folgende Tabelle mit Enfernungsangaben für die Entfernungen zwischen den Städten A, B, C, D und E gegeben. A B C D E A – 200 km 400 km 500 km 700 km B 200 km – 300 km 400 km 600 km C 400 km 300 km – 500 km 600 km D 500 km 400 km 500 km – 500 km E 700 km 600 km 600 km 500 km – Verwenden Sie den Algorithmus von Prim, um einen minimal spannenden Baum zu bestimmen. (a) Geben Sie für jede Iteration an, aus welcher Menge von kreuzenden Kanten eine sichere Kanten ausgewählt wird. (b) Erläutern Sie, wie man Hilfe eines binären Min-Heaps die Menge der sicheren Kanten sukzessive verwalten kann. Was ist zu beachten? Welche Vorteile ergeben sich? 5 6 Traveling Salesmann Problem 13. Aufgabe Es sei der folgende ungerichtete Graph gegeben. /.-, ()*+ 1 /.-, ()*+ 2 /.-, ()*+ 3 /.-, ()*+ 4 /.-, ()*+ 5 /.-, ()*+ 6 /.-, ()*+ 7 /.-, ()*+ 8 Teilaufgabe (a) Überprüfen Sie, ob es in diesem Graphen einen Eulerkreis gibt. Teilaufgabe (b) Überprüfen Sie, ob es in diesem Graphen einen Hamiltonschen Kreis gibt. 14. Aufgabe Es seien zwei Listen L1 und L2 der Länge n gegeben. Um zu überprüfen, ob L1 eine Permutation von L2 ist, könnte man wie folgt vorgehen: Variante 1. Man bestimmt sukzessive alle Permutationen der Liste L1 und testet, ob L2 unter den bestimmten Permutationen vorkommt. Variante 2. Man bestimmte die sortierte Variante L01 der Liste L1 und die sortierte Variante L02 der Liste L2 und testet, ob die Listen L01 und L02 identisch sind. Teilaufgabe (a) Geben Sie obere Schranken für die Laufzeit der beiden Varianten an. Teilaufgabe (b) Welche der beiden Varianten ist ein effizientes Verfahren zur Lösung des betrachteten algorithmischen Problems? 15. Aufgabe Es sei ein ungerichteter, vollständiger, kantengewichteter Graph G mit 8 Knoten gegeben. Ferner sei der folgende Teilgraph G0 ein minimal spannender Baum in G. 6 /.-, ()*+ 1 /.-, ()*+ 2 /.-, ()*+ 3 /.-, ()*+ 4 /.-, ()*+ 5 /.-, ()*+ 6 /.-, ()*+ 7 /.-, ()*+ 8 Teilaufgabe (a) Erläutern Sie, wie mit Hilfe der in der Vorlesung vorgestellten Heuristik – basierend auf G0 – einen Hamiltonschen Kreis bestimmt werden kann, der ein möglichst kleines Gewicht hat? Teilaufgabe (b) Schätzen Sie die Laufzeit der in der Vorlesung vorgestellten Heuristik möglichst genau ab. Gehen Sie hierbei davon aus, dass der gegebene Graph n Knoten hat. 16. Aufgabe Es sei ein ungerichteter, vollständiger, kantengewichteter Graph G mit n Knoten gegeben, für den gilt, dass die Summe der Gewichte aller Kanten in G kleiner gleich 2n ist. Ferner sei ein Algorithmus A gegeben mit dem man in Zeit t(n) für jedes z ≤ 2n die Frage beantworten kann, ob es in G einen Hamiltonschen Kreis mit dem Gewicht kleiner oder gleich z gibt. Beschreiben Sie einen Algorithmus mit dem man die Frage beantworten kann, wie gro das minimale Gewicht eines Hamiltonschen Kreises in G ist. Schätzen Sie die Laufzeit Ihres Algorithmus in Abhängigkeit von n ab. 7