TU Ilmenau, Fakultät IA Institut TI, FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. Martin Dietzfelbinger, Dipl.-Inf. Martin Aumüller http://www.tu-ilmenau.de/iti/lehre/lehre-ws-20132014/ea-ii/ Effiziente Algorithmen (2), WS 2013/2014, Übungsblatt 6 Themen für die sechste Übungsstunde am 27.11. bzw. 29.11.13. Abgabe von Lösungsvorschlägen (mit Übungsgruppe!) für die markierten Aufgaben (*) bis zum 26.11.2013, 17 Uhr, per E-Mail an [email protected] oder in meinem Büro (Zuseb. 1057). Achtung: Die Übung am 29.11. findet (einmalig) im Sr HU 011 statt. Aufgabe 1 (Der Algorithmus von Hopcroft und Karp) In Abschnitt 2.3.1 der Vorlesung haben Sie einen Matching-Algorithmus kennengelernt, der ein kardinalitätsmaximales Matching in einem bipartiten Graphen G in Zeit O(nm) bestimmt. Es wurde dabei erwähnt, dass der Algorithmus prinzipiell dem Vorgehen der Ford-Fulkerson-Methode im Flussnetzwerk Ĝ entspricht. Wir wollen in dieser Aufgabe den Algorithmus von Hopcroft und Karp betrachten, der (prinzipiell) dem Vorgehen der Sperrflussmethode in Ĝ entspricht. Der Algorithmus hat folgendes abstraktes Vorgehen: Wir starten mit M = ∅. In jeder Runde bilden wir den zu M und G gehörenden Digraphen GM = (U, EM ) auf Basis der beiden Knotenmengen F und N . (Siehe Abschnitt 2.3.1 im Skript.) Im nächsten Schritt wird aus GM nun G0M erstellt, wobei G0M nur noch aus den kürzesten F -N -Wegen in GM besteht. In diesem Graphen werden nun iterativ knotendisjunkte F -N -Wege gesucht, solange dies möglich ist. (Achtung: Verschiedene N -Knoten können sich auf den gleichen freien Knoten beziehen. Wie kann dieses Problem gelöst werden?) Das Matching M wird mittels dieser Wege erweitert und eine neue Runde beginnt. Der Algorithmus stoppt, wenn in GM kein F -N -Weg existiert. (a) Geben Sie den oben beschriebenen Algorithmus in Pseudocode an. Achten Sie darauf, die (den abstrakten Schritten entsprechenden) konkreten Algorithmen zu benennen und zu verwenden. (b) Zeigen Sie exemplarisch, dass sich das Vorgehen dieses Algorithmus in G und das Vorgehen der Sperrflussmethode in Ĝ entsprechen. Hinweis: Hierfür bietet es sich an, eine Runde in beiden Algorithmen darzustellen. Wählen Sie dafür ein Beispiel und ein (aussagekräftiges) Ausgangs-Matching. (c) Welche Laufzeit hat der Algorithmus von Hopcroft und Karp? Formulieren Sie die zentralen Lemmata (Lemma 2.3.6. und Lemma 2.3.7.) in Matchingterminologie! 2 Effiziente Algorithmen (2), WS 2013/2014, Übungsblatt 6 Aufgabe 2 (Maschinenverleih)* Die Ilmenauer Maschinenbaufirma Doppelt hält besser steckt in der Krise. Die Auftragslage ist schlecht und viele Maschinen stehen still. Ihr Chef Klaus A. beschließt, solche Maschinen an andere Unternehmen zu verleihen, um zusätzlich etwas Geld zu verdienen. Vier Maschinen M1 , M2 , M3 , M4 bietet er den vier Firmen F1 , F2 , F3 , F4 zum Verleih an und erhält prompt Angebote der Unternehmen. Das Angebot jedes Unternehmens für die jeweilige Maschine kann der folgenden Tabelle entnommen werden. M1 M2 M3 M4 F1 45 50 0 45 F2 0 55 60 0 F3 0 15 25 5 F4 30 0 75 35 Gesucht ist nun natürlich eine gewinnbringendste Zuordnung von Maschinen zu Firmen. Zur Risikominderung soll jede Maschine an genau eine Firma verliehen werden. Lösen Sie die folgenden Teilaufgaben: (a) Formulieren Sie das Problem als gewichtetes Matchingproblem in einem bipartiten Graphen. (b) Wenden Sie den Auktions-Matching-Algorithmus an, um eine optimale (d.h. den höchsten Gewinn bringende) Zuordnung von Maschinen zu Firmen zu bestimmen. (An einigen Stellen bietet es sich dabei an, die Berechnung abzukürzen.) Wie lautet diese? (c) Wenden Sie die ungarische Methode an, um eine optimale Zuordnung von Maschinen zu Firmen zu bestimmen. Aufgabe 3 (Ungarische Methode in O(n3 ))* In der Vorlesung wurde die Ungarische Methode vorgestellt. Sie haben eine einfache Laufzeitanalyse gesehen, mit der man ohne großen Aufwand eine Laufzeit von O(n4 ) erreichen kann. Wir wollen diese Laufzeit nun auf O(n3 ) senken. Bearbeiten Sie dafür die folgenden Aufgaben: (a) Gehen Sie davon aus, dass Sie die für die Labelanpassung nötige Zahl α (Zeile 22 in Algorithmus 2.4.7) in jedem Schritt kennen. Beschreiben Sie nun eine Datenstruktur, mit der Sie in Zeit O(n2 ) einen matchingvergrößerenden Weg (Zeile 5-30 im Algorithmus 2.4.7) bestimmen können. (b) Geben Sie nun eine Datenstruktur an, mit der die Berechnung von α in Zeit O(n2 ) (pro Finden eines mvW) möglich ist. Hinweis: Für die Berechnung von α benötigt man die minimalen Kantenwerte zwischen Knoten aus S und Knoten aus W − T . Sei αw dieser minimale Wert für w ∈ W . Führen Sie nun während der Berechnung eines mvW diesen Wert jeweils mit; aktualisieren Sie ihn geschickt, falls ein neuer Knoten zu S hinzugefügt wird. Wie berechnen Sie aus den αw -Werten den Wert α? Begründen Sie, dass die Laufzeitbeschränkung eingehalten wird.