@ TECHNISCHE UNIVERSITÄT CAROLO-WILHELMINA ZU BRAUNSCHWEIG Institut für Theoretische Informatik Prof. J. Adámek, Dr. J. Koslowski Braunschweig, 2012-06-21 Theoretische Informatik 2, Blatt 7 Abgabetermin 2012-06-28 Aufgabe 1 (Übung) Das O-Problem Rififi Beschreibt das Dilemma des Juwelendiebs: Nach dem gelungenen Einbruch in das extrem stark gesicherte Juwelengeschäft stellt sich die Frage, welche Preziosen als Beute mitgenomen werden sollen, wenn der Rucksack zum Abtransport in seiner Kapazität beschränkt ist (und beim Rückzug immer noch durch den Heizungsschacht passen muß). Die Eingabe besteht also einer Folge von Volumen/Wert-Paaren hai , bi i , i < t , die beide rational sind, sowie eine positive Konstante V (das “Maximalvolumen”, das mitgenomen werden kann). Gesucht ist eine Teilmenge I ⊆ t von Gegenständen von maximalem Gesamtwert, deren Gesamtvolumen V nicht überschreitet: X X ai ≤ V und bi maximal i∈I i∈I (a) überprüfen Sie, ob die Kriterien für ein Optimierungsproblem (Definition 1 in Abschnitt 6.10 auf Seite 177 des Skripts;) mit dem Alphabet Σ = {0, 1} erfüllbar sind. Geben Sie ggf. eine konkrete Codierung von Probleminstanzen und möglichen Lösungen an. (b) Entwerfen Sie einen heuristischen Algorithmus, der dieses Optimierungsproblem zu lösen versucht. Hinweis: benutzen Sie die “Dichte” der Objekte, d.h., den Quotienten bi /ai . (c) Implementieren Sie Ihren Algorithmus in gut kommentiertem Pseudocode. (d) Nehmen Sie eine Laufzeitanalyse Ihres Programms vor. (e) Untersuchen Sie, ob Ihr Algorithmus immer die optimale Lösung findet. Lösungsvorschlag: (a) Die Eingabe besteht aus 2n + 1 Zahlen, den n Volumenen ai , der Volumensobergrenze V und den n Werten bi . Dies könnte binär z.B. in der Form 0n 1w mit w ∈ {0, 1}∗ codiert werden, wobei |w| durch 2n + 1 teilbar sein muß. Als mögliche Lösung eignet sich ein binäres n - Tupel, das die zum Einpacken bestimmten Gegenstände durch Einsen markiert. Die Relation L besteht genau dann zwischen Eingaben und möglichen Lösungen, wenn die Volumensumme der gemäß der Lösung ausgewählten Gegenstände die Schranke V der Eingabe nicht überschreitet. Schließlich bildet die Kostenfunktion c ein binäres n - Tupel auf die Wertesumme der ausgewählten Gegenstände ab. (b) Wir berechnen die Dichte di = bi /ai jedes Objekts i < n und ordnen die Objekte dann nach fallender Dichte, d.h., d0 ≥ d1 ≥ . . . ≥ dn−1 . Die so geordneten Objekte werden der Reihe nach überprüft, ob sie noch in den Rucksack passen. Falls ja, wird ihr Volumen von der noch verbleibenden Kapazität abgezogen. Zweckmäßigerweise sollte man die einzupackenden Objekte ausgeben und ihre Werte summieren. (c) (Hier gibt es natürlich Ermessenspielraum... ;-) 1: {(1) Initialisierung} 2: for i from 0 to n − 1 do 3: D[0, i] := a[i] ; 4: D[1, i] := b[i] ; 5: D[2, i] := a[i]/b[i] ; 6: end for 7: sort (D; 2) ; 8: A := V ; 9: B := 0 ; 10: 11: 12: 13: 14: 15: 16: 17: 18: {(2) Rekursionsschritt} for i from 0 to n − 1 do if D[0, i] ≤ V then A := A − D[0, i] ; B := B + D[1, i] ; print (Objekt i einpacken!) ; end if end for print (Der Gesamtwert beträgt B ) Hierbei soll sort (D; 2) zum Ausdruck bringen, daß die Spalten der Matrix D gemäß den Werten der Zeile 2 sortiert werden. (d) Die Berechnung der Dichte benötigt n Schritte, das Sortieren des entsprechenden Arrays d erfordert n · log n Schritte. Die folgende Schleife wird dann wieder n - mal durchlaufen. Da die im Schleifenkörper ausgeführten Aktionen durch eine Konstante beschränkt sind, ergibt sich insgesamt eine Laufzeit von maximal n · K + n · log n = n · (K + log n) vielen Schritten. (e) Das folgende Beispiel von Holger Klene zeigt, daß der Algorithmus nicht notwendig die optimale Lösung findet: b0 = 100 , b1 = b2 = 54 und a0 = 10 , a1 = a2 = 6 liefert Dichten d0 = 10 , d1 = d2 = 9 , die schon sortiert sind. Für G = 12 wählt der Algorithmus suboptimal nur das Objekt 0 aus. Aufgabe 2 (Hausaufgabe) Wir hatten das E-Problem TSP in der VL wie folgt beschreiben: Eingabe: eine Zahl n ∈ IN , eine symmetische (n × n) - Matrix d mit Einträgen aus IN (Entfernungen oder Kosten), und eine Schranke K ∈ IN . Zu entscheiden ist, ob eine Permutation π der Zahlen i < n existiert, so daß gilt X d(π(i), π(i + 1 mod n)) ≤ K i<n Der zugrundeliegende Graph ist also der vollständige Graph Kn mit n Knoten, die alle miteinander verbunden sind. Daneben kann man auch das E-Problem TSP’ betrachten: Eingabe: ungerichteter Graph G = hV, Ei , Kostenfunktion E c IN und Schranke K ∈ IN . Zu entscheiden ist, ob ein Hamiltonscher Kreis in G existiert, dessen Kantenkosten nach oben durch K beschränkt sind. (a) [10 punkte] Geben Sie FP - Reduktionen TSP / TSP’ und TSP’ / TSP an und weisen Sie deren Korrektheit nach. (b) [10 punkte] Wir wollen nun anstelle von TSP das E-Problem aTSP betrachten, bei dem auf die Symmetrie der Matrix d verzichtet wird. Läßt sich die Aufgabe der Symmetrie in der Praxis rechtfertigen, oder ist das nur eine TheoInf-Spielerei? Untersuchen Sie detailliert, wie das E-Problem aTSP’ aussehen muß für das ein ein analoges Ergebnis wie in (a) gilt. Aufgabe 3 (Hausaufgabe) [20 punkte] Bestimmen Sie die Anzahl der unterschiedlichen maximalen Matchings des folgenden ungerichteten Graphen, und finden Sie mit Hilfe des Ford-Fulkerson Algorithmus mindestens ein solches Matching: