Datenstrukturen und Algorithmen SS17 Tutoriumslösung - Übung 11 (Abgabe 19.07.2017) aa
Prof. Dr. Ir. G. Woeginger T. Hartmann, D. Korzeniewski, B. Tauer
Globalübungsaufgabe1 (Rucksackproblem):
Gegeben sei ein Rucksack mit maximaler Tragkraft 10 sowie 5 Gegenstände. Der i-te Gegenstand soll hierbei ein Gewicht von wi und einen Wert vonci haben. Bestimmen Sie mit Hilfe des in der Vorlesung vorgestellten Algorithmus zum Lösen des Rucksackproblems mit dynamischer Programmierung denmaximalen Gesamtwert der Gegenstände, die der Rucksack tragen kann (das Gesamtgewicht der mitgeführten Gegenstände übersteigt nicht die Tragkraft des Rucksacks). Die Gewichte seien dabeiw1 = 5,w2 = 2, w3 = 1, w4 = 3 undw5 = 4 und die Werte c1= 9, c2 = 8,c3= 5, c4 = 4undc5= 5. Geben Sie zudem die vom Algorithmus bestimmte Tabelle Cund diemitzunehmenden Gegenstände an.
Zur Erinnerung: Die Rekursionsgleichung für das Rucksackproblem lautet:
C[i, j] =
0 füri= 0, j≥0
−∞ fürj <0
max(C[i−1, j], ci+C[i−1, j−wi]) sonst
Lösung:
Die Tabelle Cwird vom Algorithmus wie folgt gefüllt:
0 1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 ↑ 0 ← 0 ← 0 ← 9 ← 9 ← 9 9 9 9
2 0 0 8 8 8 9 9 ↑ 17 ← 17 ← 17 17
3 0 5 8 13 13 13 14 17 22 ↑ 22 ← 22
4 0 5 8 13 13 13 17 17 22 22 ↑ 22
5 0 5 8 13 13 13 17 18 22 22 ↑ 22
Damit ergibt sich der maximale Wert 22 für den Fall, dass der 1., 2. und 3. Gegenstand mitgenommen werden.
Globalübungsaufgabe2 (Longest Common Subsequence):
Bestimmen Sie dielängste gemeinsame Teilsequenz der SequenzenBRAUTKLEID undBLAUKRAUT. Benutzen Sie hierfür den in der Vorlesung vorgestellten Algorithmus mit dynamischer Programmierung und füllen Sie die folgende Tabelle aus. Eine leere Sequenz können Sie durch-angeben.
Lösung:
Die Tabelle wird vom Algorithmus wie folgt gefüllt:
1
Datenstrukturen und Algorithmen SS17 Tutoriumslösung - Übung 11 (Abgabe 19.07.2017)
∅ B L A U K R A U T
∅ 0 0 0 0 0 0 0 0 0 0
B 0 - 1 ← 1 ← 1 ← 1 ← 1 1 1 1 1
R 0 1 1 1 1 1 - 2 2 2 2
A 0 1 1 2 2 2 2 - 3 3 3
U 0 1 1 2 3 3 3 3 - 4 4
T 0 1 1 2 3 3 3 3 4 - 5
K 0 1 1 2 3 4 4 4 4 ↑ 5
L 0 1 2 2 3 4 4 4 4 ↑ 5
E 0 1 2 2 3 4 4 4 4 ↑ 5
I 0 1 2 2 3 4 4 4 4 ↑ 5
D 0 1 2 2 3 4 4 4 4 ↑ 5
Längste gemeinsame Teilsequenz:BRAUT
Globalübungsaufgabe3 (Huffman Code):
Bestimmen Sie einen optimalen präfix-freien Binär-Code für das folgende 8-elementige Alphabet mit den angegebenen Häufigkeiten.
AC D EFGH I 2 4 11 8 5 5 9 9
Lösung:
Sortiere nach aufsteigender Häufigkeit:
A-2, C-4, F-5, G-5, E-8, H-9, I-9, D-11 Queue nachi-ter Iteration:
1) F-5, G-5, AC-6, E-8, H-9, I-9, D-11 2) AC-6, E-8, H-9, I-9, FG-10, D-11 3) H-9, I-9, FG-10, D-11, ACE-14 4) FG-10, D-11, ACE-14, HI-18 5) FGD-21, ACEHI-32,
6) FGDACEHI-53
Code: A: 1000, C: 1001, D: 01, E: 101, F: 000, G: 001, H: 110, I: 111.
Globalübungsaufgabe4 (Stundenplaner Problem (gewichtet)):
In der Vorlesung haben wir das Stundenplanungs Problem betrachtet und es durch ein Greedy verfahren gelöst.
Nun betrachten wir die gewichte Version dieser Problemstellung (siehe auch gewichtetes Intervall-Scheduling).
Das heißt, dass jeder Job noch ein zusätzliches Gewicht besitzt. Die Zielfunktion lautet dann: maximiere die Summe der Gewichte der ausgewählen, kompatiblen Jobs
Gegeben sei die folgende Instanz des gewichteten Problems. Jede Anfrage Vi ist gegeben durch ein Intervall (Li, Ri) sowie ein Gewicht wi. Zwei AnfragenVi undVj sind kompatibel, wennRi ≤Lj oder Rj ≤Li gilt.
(Hinweis zur Notation:p(i)bezeichnet den maximalen Indexj < i, so dassiundj kompatibel sind.M[j] ist
2
Datenstrukturen und Algorithmen SS17 Tutoriumslösung - Übung 11 (Abgabe 19.07.2017)
der maximal Gewinn, der bis einschließlich Anfragej generiert werden kann.)
V1= (0,1), w1= 2, V5= (3,5), w5= 3, V2= (0,3), w2= 3, V6= (4,6), w6= 3, V3= (2,3), w3= 2, V7= (5,7), w7= 2.
V4= (3,4), w4= 1,
a) Geben Sie ein Gegenbeispiel an, indem der Greedy-Lösungsansatz aus der Vorlesung beim gewichteten Problem scheitert.
b) Geben Sie mit den obigen Bezeichnungen eine Rekursionsformel fürM[j] für das Problem an. Hinweis:
Nutzen Siep(j)um sicherzustellen, dass sich keine Vorträge überlappen.
c) Überlegen Sie sich mit obiger Rekursinsformel, wie ein Dynamisches Programm funktionieren würde.
Lösen Sie die obige Instanz und tragen Sie ihre Ergebnisse in die folgende Tabelle 3 ein!
d) Welche Anfragen werden in der optimalen Lösung ausgewählt?
Lösung:
a) Der Algortihmus ist nicht optimal, da er die Gewichte nicht berücksichtigt, diese aber in die Zielfunktion eingehen.
Gegenbeispiel:
V1= (1,3), w1= 1, V2= (3,5), w2= 1, V3= (2,4), w3= 3
Algorithmus aus Vorlesung würde V1 und V2 auswählen. Diese haben zusammen jedoch ein kleinere Gewicht alsV3 alleine.
b) Rekursionsformel:
M[j] = max{wj+M[p(j)], M[j−1]}
c) Code Idee:
Input: {V_1, ... , V_n} mit R_1<= ... <= R_n Output: Maximale Gewicht der ausgewählten Vorträge M[0]=0
for i=1 to n do bestimme p(i)
M[i]= max {w_i+ M[p(i)], M[i-1]}
end
rekonstruiere Pfad return M[n]
i 0 1 2 3 4 5 6 7
wi 0 2 3 2 1 3 3 2
p(i) 0 0 0 1 3 3 4 5
M(i) 0 2 3 4 5 7 8 9
d) M[7] ist 9. Dazu sindV1, V3, V5undV7 auszuwählen.
3