Vorlesung Graphen und Optimierung Sommersemester 2011 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir am Zusatztermin, dem 02.07.2011, besprechen wollen. Um Ihnen und mir das Leben leichter zu machen, sind die Aufgaben den einzelnen Kapiteln der Vorlesung zugeordnet. 1 Bipartite Graphen 1. Aufgabe Es sei der folgende ungerichtete Graph G = (V, E) gegeben. '&%$ !"# a /.-, ()*+ b '&%$ !"# c ()*+ /.-, d '&%$ !"# e 0123 7654 f ()*+ /.-, h '&%$ !"# i /.-, ()*+ j /.-, ()*+ k /.-, ()*+ g '&%$ !"# l (i) Geben Sie ein Matching M ⊆ V der Größe 4 an! (ii) Geben Sie eine Knotenüberdeckung S ⊆ E der Größe 7 an! (iii) Gibt es ein Matching M ⊆ V der Größe 6? Begründen Sie Ihre Antwort ausführlich. (iv) Gibt es eine Knotenüberdeckung S ⊆ E der Größe 4? Begründen Sie Ihre Antwort ausführlich. 2. Aufgabe Es seien der folgende bipartite Graph G = (V, E) und das Matching M = {{1, 5}, {2, 8}} gegeben. 1 /.-, ()*+ /.-, ()*+ 1).>> 5 ).) . >> .) . >> )) . >> )) .. > > . ()*+ /.-, ()*+ 2. )) .. /.-, 6 .. )) . . .. ) . ..))) ... ..) ()*+ /.-, ()*+ 7 3 .. ))) /.-, . . )) ..) .).) /.-, ()*+ /.-, ()*+ 4 8 (i) Welches Matching liefert der ungarische Algorithmus, wenn mit dem Matching M begonnen wird? (ii) Welches Eckenüberdeckung S liefert der ungarische Algorithmus, wenn mit dem Matching M begonnen wird? 3. Aufgabe Es sei der folgende bipartite Graph G gegeben. /.-, ()*+ /.-, ()*+ 4 1. .. .. .. .. /.-, ()*+ ()*+ 2 >> .. /.-, 5 >> .. > >>>... >>. /.-, ()*+ /.-, ()*+ 3 6 (i) Bestimmen Sie eine minimale Kantenfärbung für den Graphen G! 4. Aufgabe Es bezeichnen L1 , . . . , L4 die zur Verfügung stehenden Lehrer und K1 , . . . , K5 die zu unterrichtenden Klassen. Außerdem ist bekannt, dass folgende Rahmenbedingungen einzuhalten sind: • Lehrer L1 unterrichtet 2 Stunden in der Klasse K1 und jeweils 1 Stunde in den Klassen K3 und K4 • Lehrer L2 unterrichtet jeweils 1 Stunde in den Klassen K2 und K4 • Lehrer L3 unterrichtet jeweils 1 Stunde in den Klassen K2 , K3 und K4 2 • Lehrer L4 unterrichtet jeweils 1 Stunde in den Klassen K4 und K5 (i) Bestimmen Sie einen Stundenplan, der alle Rahmenbedingungen erfüllt und der mit möglichst wenigen Wochenstunde auskommt. 2 Elementare Graphalgorithmen 5. 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 (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? 6. 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. 3 (ii) Geben Sie die Aufrufmengen an, die bei der Tiefensuche im Graphen G erzeugt werden. (iii) Geben Sie den inversen Graphen G0 von G an. (iv) 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 Minimal spannende Bäume 7. 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. (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 Vater Größe Vater Größe Vater Größe Vater Größe Vater Größe Vater Größe 4 C D 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. 8. 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 kreuzenden Kanten sukzessive verwalten kann. Was ist zu beachten? Welche Vorteile ergeben sich? 4 Kürzeste Pfade 9. Aufgabe Es seien G ein gerichteter, zyklenfreier, 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. 10. 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? 5 (ii) Ist es sinnvoller, den Algorithmus von Floyd und Warshall zu benutzen? Gehen Sie davon aus, dass der gegebene Graph n Knoten und m Kanten hat. 11. Aufgabe Es sei ein Autoatlas mit Karten von Europa gegeben. Es geht darum, das Länge einer kürzesten Route von London nach Paris zu bestimmen. Zu je zwei Städten x, y bezeichne l(x, y) die Luftlinienentfernung zwischen x und y an. (i) Geben Sie eine zulässige Heuristik an, die der A∗ -Algorithmus benutzen könnte, um die obige Aufgabe zu lösen. Begünden Sie, weshalb die von Ihnen gewählte Heuristik eine zulässige Heuristik ist. (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. 12. 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. 13. 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. 1 Das sind die Knoten, für die sich die Schätzwerte noch verändern können. 6 5 Traveling Salesmann Problem 14. 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. 15. Aufgabe Es sei ein ungerichteter, vollständiger, kantengewichteter Graph gegeben. (i) Ist es prinzipiell möglich, dass für das Gewicht w(H1 ) des mit Heuristik 1 bestimmten Hamiltonschen Kreises H1 und das Gewicht w(H2 ) des mit Heuristik 2 bestimmten Hamiltonschen Kreises H2 folgende Beziehungen gelten? • w(H2 ) ≤ w(H1 ) • w(H2 ) ≤ 3 · w(H1 ) • w(H2 ) ≥ w(H1 ) 16. 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. 7 Teilaufgabe (a) Geben Sie obere Schranken für die Laufzeit der beiden Varianten an. Hinweis Ein gutes Sortierverfahren hat die Laufzeit O(n log(n)), um eine Liste der Länge n zu sortieren. Teilaufgabe (b) Welche der beiden Varianten ist ein effizientes Verfahren zur Lösung des betrachteten algorithmischen Problems? 17. 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. /.-, ()*+ 1 /.-, ()*+ 2 /.-, ()*+ 3 /.-, ()*+ 4 /.-, ()*+ 5 /.-, ()*+ 6 /.-, ()*+ 7 /.-, ()*+ 8 Teilaufgabe (a) Erläutern Sie, wie mit Hilfe von Heuristik 1 – basierend auf G0 – einen Hamiltonschen Kreis bestimmt wird, der ein möglichst kleines Gewicht hat? Teilaufgabe (b) Erläutern Sie, wie mit Hilfe von Heuristik 2 – basierend auf G0 – einen Hamiltonschen Kreis bestimmt wird, der ein möglichst kleines Gewicht hat? 6 Flüsse 18. Aufgabe Es sei der folgende gerichtete Graph G mit Startknoten s und Zielknoten s gegeben. Die Markierungen an den Kanten geben die Kapaziät der entsprechenden Kante an. 8 '&%$ aS @ !"# /.-, ()*+ / bO >>> >> 20 16 >> >> > 9 '&%$ !"# '&%$ !"# s == 10 4 7 @ t == == 4 = 13 == = '&%$ !"# 0123 7654 / e f 10 14 Teilaufgabe (a) Verwenden Sie den in den Algorithmus von Ford und Fukerson, um einen maximalen Fluss von s nach t im Graphen G zu bestimmen. Teilaufgabe (b) Geben Sie einen minimalen (s, t)-Schnitt für den Graphen G an. 9