Theoretische Informatik 2, Blatt 7

Werbung
@
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:
Herunterladen