Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Ähnliche Präsentationen


Präsentation zum Thema: "LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)"—  Präsentation transkript:

1 LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

2 LS 2 / Informatik 2 Proseminare WiSe 2010/11 Anmeldefrist Dienstag Bis Donnerstag Die Verteilung ist unabhängig von der Reihenfolge der Anmeldungen Infos und Anmeldung Dort steht alles weitere.

3 LS 2 / Informatik 3 Organisatorisches Testergebnisse In der nächsten Woche Einsicht im Rahmen der Übungen Bestehensquote >70% Inhaltlich: Induktion bei der Laufzeit

4 LS 2 / Informatik 4 Organisatorisches Übungen Änderung: Übungsabgabe bis Montag 12 Uhr möglich Dann allerdings keine Korrektur bis Dienstag Umfang der Übungen: DAP 2 gibt 12 Credits = 360 Arbeitsstunden pro Vorlesung = 24 pro Woche Damit ist ein Umfang von 8 Stunden pro zweiwöchentlichem Übungsblatt angemessen Im Vergleich zum Diplomstudiengang sind die Übungen leichter Diskussion: C in Übungen Webseiten

5 LS 2 / Informatik 5 Dynamische Programmierung Das Rucksackproblem Rucksack mit begrenzter Kapazität Objekte mit unterschiedlichem Wert und unterschiedlicher Größe Wir wollen Objekte von möglichst großem Gesamtwert mitnehmen

6 LS 2 / Informatik 6 Dynamische Programmierung Das Rucksackproblem Rucksack mit begrenzter Kapazität Objekte mit unterschiedlichem Wert und unterschiedlicher Größe Wir wollen Objekte von möglichst großem Gesamtwert mitnehmen Beispiel Rucksackgröße 6 Größe Wert

7 LS 2 / Informatik 7 Dynamische Programmierung Das Rucksackproblem Rucksack mit begrenzter Kapazität Objekte mit unterschiedlichem Wert und unterschiedlicher Größe Wir wollen Objekte von möglichst großem Gesamtwert mitnehmen Beispiel Rucksackgröße 6 Objekt 1 und 3 passen in den Rucksack und haben Gesamtwert 13 Größe Wert

8 LS 2 / Informatik 8 Dynamische Programmierung Das Rucksackproblem Rucksack mit begrenzter Kapazität Objekte mit unterschiedlichem Wert und unterschiedlicher Größe Wir wollen Objekte von möglichst großem Gesamtwert mitnehmen Beispiel Rucksackgröße 6 Objekt 1 und 3 passen in den Rucksack und haben Gesamtwert 13 Objekt 2,3 und 4 passen und haben Gesamtwert 15 Größe Wert

9 LS 2 / Informatik 9 Dynamische Programmierung Das Rucksackproblem Eingabe: Anzahl der Objekte n Für jedes Objekt i seine ganzzahlige Größe g[i] und seinen ganzzahligen Wert v[i] Rucksackgröße W Ausgabe: S {1,…,n}, so dass g[i] W und v[i] maximal ist i S

10 LS 2 / Informatik 10 Dynamische Programmierung Lösungsansatz Bestimme zunächst der Wert einer optimalen Lösung Leite dann die Lösung selbst aus der Tabelle des dynamischen Programms her

11 LS 2 / Informatik 11 Dynamische Programmierung Herleiten der Rekursion Sei O {1,..,i} eine optimale Lösung für das Rucksackproblem mit Objekten 1,..,i und Rucksackgröße j Sei Opt(k,j) der Wert einer optimalen Lösung für das Rucksackproblem mit Rucksackgröße j und den Objekten 1 bis k mit Größen g[i] und Werten v[i] Gesucht: Opt(n,W)

12 LS 2 / Informatik 12 Dynamische Programmierung Herleiten der Rekursion Sei O {1,..,i} eine optimale Lösung für das Rucksackproblem mit Objekten 1,..,i und Rucksackgröße j Sei Opt(k,j) der Wert einer optimalen Lösung für das Rucksackproblem mit Rucksackgröße j und den Objekten 1 bis k mit Größen g[i] und Werten v[i] Gesucht: Opt(n,W) Unterscheide, ob Objekt n in O ist: Fall 1(Objekt i nicht in O): Opt(i,j) = Opt(i-1,j)

13 LS 2 / Informatik 13 Dynamische Programmierung Herleiten der Rekursion Sei O {1,..,i} eine optimale Lösung für das Rucksackproblem mit Objekten 1,..,i und Rucksackgröße j Sei Opt(k,j) der Wert einer optimalen Lösung für das Rucksackproblem mit Rucksackgröße j und den Objekten 1 bis k mit Größen g[i] und Werten v[i] Gesucht: Opt(n,W) Unterscheide, ob Objekt n in O ist: Fall 1(Objekt i nicht in O): Opt(i,j) = Opt(i-1,j) Fall 2(Objekt i in O): Opt(i,j) = v[i] + Opt(i-1,j-g[i])

14 LS 2 / Informatik 14 Dynamische Programmierung Rekursion Wenn j

15 LS 2 / Informatik 15 Dynamische Programmierung Rekursion Wenn j

16 LS 2 / Informatik 16 Dynamische Programmierung Rekursion Wenn j

17 LS 2 / Informatik 17 Dynamische Programmierung Rucksack(n,g,v,W) 1. new array Opt[0,..,n][0,..,W] 2. for j 0 to W do 3. Opt[0,j] 0 4. for i 0 to n do 5. for j 0 to W do 6. Berechne Opt[i,j] nach Rekursion 7. return Opt[n,W]

18 LS 2 / Informatik 18 Dynamische Programmierung Rucksack(n,g,v,W) 1. new array Opt[0,..,n][0,..,W] 2. for j 0 to W do 3. Opt[0,j] 0 4. for i 0 to n do 5. for j 0 to W do 6. Berechne Opt[i,j] nach Rekursion 7. return Opt[n,W] Laufzeit O(nW)

19 LS 2 / Informatik 19 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

20 LS 2 / Informatik 20 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n g[1]>j: Also Opt[i,j] = Opt[i-1,j] g[1]>j: Also Opt[i,j] = Opt[i-1,j]

21 LS 2 / Informatik 21 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n Opt[i,j] = max{Opt[i-1,j], v[i] + Opt[i-1,j-g[i]]}

22 LS 2 / Informatik 22 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

23 LS 2 / Informatik 23 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

24 LS 2 / Informatik 24 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

25 LS 2 / Informatik 25 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

26 LS 2 / Informatik 26 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

27 LS 2 / Informatik 27 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

28 LS 2 / Informatik 28 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

29 LS 2 / Informatik 29 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

30 LS 2 / Informatik 30 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

31 LS 2 / Informatik 31 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

32 LS 2 / Informatik 32 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

33 LS 2 / Informatik 33 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

34 LS 2 / Informatik 34 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

35 LS 2 / Informatik 35 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

36 LS 2 / Informatik 36 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

37 LS 2 / Informatik 37 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

38 LS 2 / Informatik 38 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n

39 LS 2 / Informatik 39 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n Optimaler Lösungswert für W=8

40 LS 2 / Informatik 40 Dynamische Programmierung Beobachtung: Sei R der Wert einer optimalen Lösung für die Elemente 1,..,i Falls g[i]j und Opt[i-1,j-g[i]] +v[i]= R, so ist Objekt i in mindestens einer optimalen Lösung enthalten

41 LS 2 / Informatik 41 Dynamische Programmierung Wie kann man eine optimale Lösung berechnen? Idee: Verwende Tabelle der dynamischen Programmierung Fallunterscheidung + Rekursion: - Falls das i-te Objekt in einer optimalen Lösung für Objekte 1 bis i und Rucksackgröße j ist, so gib es aus und fahre rekursiv mit Objekt i-1 und Rucksackgröße W-g[i] fort - Ansonsten fahre mit Objekt i-1 und Rucksackgröße j fort

42 LS 2 / Informatik 42 Dynamische Programmierung RucksackLösung(Opt,i,j,g,v,K) 1. if i=0 return 2. else if g[i]>j then return RucksackLösung(Opt,i-1,j,g,v,K) 3. else if K=v[i] + Opt[i-1,j-g[i]] then return {i} RucksackLösung(Opt,i-1,j-g[i],g,v,K-v[i]) 4. else return RucksackLösung(Opt,i-1,j,g,v,K) Lemma 28 (Beweis später) Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. i S

43 LS 2 / Informatik 43 Dynamische Programmierung RucksackLösung(Opt,i,j,g,v,K) 1. if i=0 return 2. else if g[i]>j then return RucksackLösung(Opt,i-1,j,g,v,K) 3. else if K=v[i] + Opt[i-1,j-g[i]] then return {i} RucksackLösung(Opt,i-1,j-g[i],g,v,K-v[i]) 4. else return RucksackLösung(Opt,i-1,j,g,v,K) Aufruf Nach der Berechnung der Tabelle Opt von Rucksack wird RucksackLösung mit Opt, i=n, j=W, g, v, und K=Opt[n,W] aufgerufen. Nach dem Lemma wird dann die optimale Lösung konstruiert

44 LS 2 / Informatik 44 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=13, j=8, i=8: Es gilt K > v[i]+Opt[i-1,j-g[i]] K=13, j=8, i=8: Es gilt K > v[i]+Opt[i-1,j-g[i]]

45 LS 2 / Informatik 45 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=13, j=8, i=7: Es gilt K = v[i]+Opt[i-1,j-g[i]] K=13, j=8, i=7: Es gilt K = v[i]+Opt[i-1,j-g[i]]

46 LS 2 / Informatik 46 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=6, j=4, i=6: Es gilt g[i]>j K=6, j=4, i=6: Es gilt g[i]>j

47 LS 2 / Informatik 47 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=6, j=4, i=5: Es gilt K = v[i]+Opt[i-1,j-g[i]] K=6, j=4, i=5: Es gilt K = v[i]+Opt[i-1,j-g[i]]

48 LS 2 / Informatik 48 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=6, j=4, i=5: Es gilt K = v[i]+Opt[i-1,j-g[i]] K=6, j=4, i=5: Es gilt K = v[i]+Opt[i-1,j-g[i]]

49 LS 2 / Informatik 49 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=4, j=3, i=4: Es gilt K = v[i]+Opt[i-1,j-g[i]] K=4, j=3, i=4: Es gilt K = v[i]+Opt[i-1,j-g[i]]

50 LS 2 / Informatik 50 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=1, j=1, i=3: Es gilt K = v[i]+Opt[i-1,j-g[i]] K=1, j=1, i=3: Es gilt K = v[i]+Opt[i-1,j-g[i]]

51 LS 2 / Informatik 51 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=0, j=0, i=1: Es gilt g[i]>j K=0, j=0, i=1: Es gilt g[i]>j

52 LS 2 / Informatik 52 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=0, j=0, i=1: Es gilt g[i]>j K=0, j=0, i=1: Es gilt g[i]>j

53 LS 2 / Informatik 53 Dynamische Programmierung Beispiel gv Größe Wert 0 1 W 0 1 n 1 2 n K=0, j=0, i=0: Es gilt i=0 K=0, j=0, i=0: Es gilt i=0

54 LS 2 / Informatik 54 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: Wir beweisen die Aussage per Induktion über k.

55 LS 2 / Informatik 55 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: Wir beweisen die Aussage per Induktion über k. (I.A.) k=0: Vor dem ersten Schleifendurchlauf wurde Opt[0,j] für alle 0jW mit 0 initialisiert. Da keine Objekte vorhanden sind, können auch keine mitgenommen werden. Daher stimmt die Aussage.

56 LS 2 / Informatik 56 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: Wir beweisen die Aussage per Induktion über k. (I.A.) k=0: Vor dem ersten Schleifendurchlauf wurde Opt[0,j] für alle 0jW mit 0 initialisiert. Da keine Objekte vorhanden sind, können auch keine mitgenommen werden. Daher stimmt die Aussage. (I.V.) Die Aussage stimmt für k-1.

57 LS 2 / Informatik 57 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: Wir beweisen die Aussage per Induktion über k. (I.A.) k=0: Vor dem ersten Schleifendurchlauf wurde Opt[0,j] für alle 0jW mit 0 initialisiert. Da keine Objekte vorhanden sind, können auch keine mitgenommen werden. Daher stimmt die Aussage. (I.V.) Die Aussage stimmt für k-1.

58 LS 2 / Informatik 58 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1.

59 LS 2 / Informatik 59 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1. (I.S.) Wir müssen zeigen, dass Opt[k,j] genau den Wert einer optimalen Lösung für Objekte 1 bis k bei Rucksackgröße j hat.

60 LS 2 / Informatik 60 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1. (I.S.) Wir müssen zeigen, dass Opt[k,j] genau den Wert einer optimalen Lösung für Objekte 1 bis k bei Rucksackgröße j hat. Sei dazu R der Wert einer optimalen Lösung. Wir zeigen ROpt[k,j] und ROpt[k,j]. Damit gilt Opt[k,j] = R.

61 LS 2 / Informatik 61 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1. (I.S.) Wir müssen zeigen, dass Opt[k,j] genau den Wert einer optimalen Lösung für Objekte 1 bis k bei Rucksackgröße j hat. Sei dazu R der Wert einer optimalen Lösung. Wir zeigen ROpt[k,j] und ROpt[k,j]. Damit gilt Opt[k,j] = R. ROpt[k,j]: Sei O {1,..,k} eine optimale Lösung für Rucksackgröße j.

62 LS 2 / Informatik 62 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1. (I.S.) Wir müssen zeigen, dass Opt[k,j] genau den Wert einer optimalen Lösung für Objekte 1 bis k bei Rucksackgröße j hat. Sei dazu R der Wert einer optimalen Lösung. Wir zeigen ROpt[k,j] und ROpt[k,j]. Damit gilt Opt[k,j] = R. ROpt[k,j]: Sei O {1,..,k} eine optimale Lösung für Rucksackgröße j. Ist k O, so ist g[k] j und Opt[k,j] v[k] + Opt[k-1,j-g[k]] = R nach (I.V.).

63 LS 2 / Informatik 63 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1. (I.S.) Wir müssen zeigen, dass Opt[k,j] genau den Wert einer optimalen Lösung für Objekte 1 bis k bei Rucksackgröße j hat. Sei dazu R der Wert einer optimalen Lösung. Wir zeigen ROpt[k,j] und ROpt[k,j]. Damit gilt Opt[k,j] = R. ROpt[k,j]: Sei O {1,..,k} eine optimale Lösung für Rucksackgröße j. Ist k O, so ist g[k] j und Opt[k,j] v[k] + Opt[k-1,j-g[k]] = R nach (I.V.). Ist k O, so ist Opt[k,j] = Opt[k-1,j] = R.

64 LS 2 / Informatik 64 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: (I.V.) Die Aussage stimmt für k-1. (I.S.) Wir müssen zeigen, dass Opt[k,j] genau den Wert einer optimalen Lösung für Objekte 1 bis k bei Rucksackgröße j hat. Sei dazu R der Wert einer optimalen Lösung. Wir zeigen ROpt[k,j] und ROpt[k,j]. Damit gilt Opt[k,j] = R. ROpt[k,j]: Sei O {1,..,k} eine optimale Lösung für Rucksackgröße j. Ist k O, so ist g[k] j und Opt[k,j] v[k] + Opt[k-1,j-g[k]] = R nach (I.V.). Ist k O, so ist Opt[k,j] = Opt[k-1,j] = R.

65 LS 2 / Informatik 65 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: ROpt[k,j]: Es gilt Opt[k,j]= max{Opt[k-1,j], v[k]+Opt[k-1,j-g[k]] } oder Opt[k,j] = Opt[k-1,j].

66 LS 2 / Informatik 66 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: ROpt[k,j]: Es gilt Opt[k,j]= max{Opt[k-1,j], v[k]+Opt[k-1,j-g[k]] } oder Opt[k,j] = Opt[k-1,j]. Wird das Maximum durch Opt[k-1,j] erreicht und im zweiten Fall folgt ROpt[k,j]=Opt[k-1,j], weil Opt[k-1,j] nach (I.V.) der Wert einer optimalen Lösung für Objekte 1,..,k-1 ist, es somit also auch eine Teilmenge der Objekte 1,..,k gibt, die den Wert Opt[k,j] hat.

67 LS 2 / Informatik 67 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: ROpt[k,j]: Es gilt Opt[k,j]= max{Opt[k-1,j], v[k]+Opt[k-1,j-g[k]] } oder Opt[k,j] = Opt[k-1,j]. Wird das Maximum durch Opt[k-1,j] erreicht und im zweiten Fall folgt ROpt[k,j]=Opt[k-1,j], weil Opt[k-1,j] nach (I.V.) der Wert einer optimalen Lösung für Objekte 1,..,k-1 ist, es somit also auch eine Teilmenge der Objekte 1,..,k gibt, die den Wert Opt[k,j] hat. Wird das Maximum durch v[k]+Opt[k-1,j-g[k]] erreicht, so folgt ROpt[k,j], da v[k]+Opt[k-1,j-g[k]] den Kosten von {k} X entspricht, wobei X eine optimale Lösung der ersten k-1 Objekte bei Rucksackgröße j-g[k] ist.

68 LS 2 / Informatik 68 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: ROpt[k,j]: Es gilt Opt[k,j]= max{Opt[k-1,j], v[k]+Opt[k-1,j-g[k]] } oder Opt[k,j] = Opt[k-1,j]. Wird das Maximum durch Opt[k-1,j] erreicht und im zweiten Fall folgt ROpt[k,j]=Opt[k-1,j], weil Opt[k-1,j] nach (I.V.) der Wert einer optimalen Lösung für Objekte 1,..,k-1 ist, es somit also auch eine Teilmenge der Objekte 1,..,k gibt, die den Wert Opt[k,j] hat. Wird das Maximum durch v[k]+Opt[k-1,j-g[k]] erreicht, so folgt ROpt[k,j], da v[k]+Opt[k-1,j-g[k]] den Kosten von {k} X entspricht, wobei X eine optimale Lösung der ersten k-1 Objekte bei Rucksackgröße j-g[k] ist. Da es jeweils eine Lösung mit Kosten Opt[k,j] gibt, folgt ROpt[k,j].

69 LS 2 / Informatik 69 Dynamische Programmierung Lemma 29 Nach dem k-ten Durchlauf der äußeren for-Schleife von Rucksack(n,g,v,W) gilt für alle 0ik und 0jW, dass Feld Opt[i,j] den Wert einer optimalen Lösung für Objekte 1 bis i mit Größen g[i] und Werten v[i] und Rucksackgröße j. Beweis: ROpt[k,j]: Es gilt Opt[k,j]= max{Opt[k-1,j], v[k]+Opt[k-1,j-g[k]] } oder Opt[k,j] = Opt[k-1,j]. Wird das Maximum durch Opt[k-1,j] erreicht und im zweiten Fall folgt ROpt[k,j]=Opt[k-1,j], weil Opt[k-1,j] nach (I.V.) der Wert einer optimalen Lösung für Objekte 1,..,k-1 ist, es somit also auch eine Teilmenge der Objekte 1,..,k gibt, die den Wert Opt[k,j] hat. Wird das Maximum durch v[k]+Opt[k-1,j-g[k]] erreicht, so folgt ROpt[k,j], da v[k]+Opt[k-1,j-g[k]] den Kosten von {k} X entspricht, wobei X eine optimale Lösung der ersten k-1 Objekte bei Rucksackgröße j-g[k] ist. Da es jeweils eine Lösung mit Kosten Opt[k,j] gibt, folgt ROpt[k,j].

70 LS 2 / Informatik 70 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: Beweis per Induktion über i. (I.A.) Ist i=0, so gibt der Algorithmus die leere Menge zurück. Dies ist korrekt, da kein Objekt in den Rucksack gepackt werden kann. i S

71 LS 2 / Informatik 71 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: Beweis per Induktion über i. (I.A.) Ist i=0, so gibt der Algorithmus die leere Menge zurück. Dies ist korrekt, da kein Objekt in den Rucksack gepackt werden kann. (I.V.) Die Aussage stimmt für i-1. i S

72 LS 2 / Informatik 72 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: Beweis per Induktion über i. (I.A.) Ist i=0, so gibt der Algorithmus die leere Menge zurück. Dies ist korrekt, da kein Objekt in den Rucksack gepackt werden kann. (I.V.) Die Aussage stimmt für i-1. (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus ruft in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K). Dies ist nach (I.V.) korrekt. i S

73 LS 2 / Informatik 73 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: Beweis per Induktion über i. (I.A.) Ist i=0, so gibt der Algorithmus die leere Menge zurück. Dies ist korrekt, da kein Objekt in den Rucksack gepackt werden kann. (I.V.) Die Aussage stimmt für i-1. (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus ruft in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K). Dies ist nach (I.V.) korrekt. i S

74 LS 2 / Informatik 74 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus gibt in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. i S

75 LS 2 / Informatik 75 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus gibt in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K=v[i] + Opt[i-1,j-g[i]], so gibt es eine optimale Lösung, die Objekt i enthält. i S

76 LS 2 / Informatik 76 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus gibt in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K=v[i] + Opt[i-1,j-g[i]], so gibt es eine optimale Lösung, die Objekt i enthält. In diesem Fall gibt der Algorithmus {i} RucksackLösung(Opt,i-1,j-g[i],g,v,K-v[i]) zurück. i S

77 LS 2 / Informatik 77 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus gibt in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K=v[i] + Opt[i-1,j-g[i]], so gibt es eine optimale Lösung, die Objekt i enthält. In diesem Fall gibt der Algorithmus {i} RucksackLösung(Opt,i-1,j-g[i],g,v,K-v[i]) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K>v[i] + Opt[i-1,j-g[i]], so kann Objekt i nicht zu einer optimalen Lösung gehören i S

78 LS 2 / Informatik 78 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus gibt in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K=v[i] + Opt[i-1,j-g[i]], so gibt es eine optimale Lösung, die Objekt i enthält. In diesem Fall gibt der Algorithmus {i} RucksackLösung(Opt,i-1,j-g[i],g,v,K-v[i]) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K>v[i] + Opt[i-1,j-g[i]], so kann Objekt i nicht zu einer optimalen Lösung gehören. Der Algorithmus gibt in diesem Fall RucksackLösung(A,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. i S

79 LS 2 / Informatik 79 Dynamische Programmierung Lemma 28 Hat die optimale Lösung für Objekte 1,..,i und Rucksackgröße j den Wert K, so berechnet Algorithmus Rucksacklösung eine Teilmenge S von {1,..,i}, so dass g[i] j und v[i] = K ist. Beweis: (I.S.) Ist g[i] > j, so kann Objekt i Teil keiner Lösung sein. Der Algorithmus gibt in diesem Fall RucksackLösung(Opt,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K=v[i] + Opt[i-1,j-g[i]], so gibt es eine optimale Lösung, die Objekt i enthält. In diesem Fall gibt der Algorithmus {i} RucksackLösung(Opt,i-1,j-g[i],g,v,K-v[i]) zurück. Dies ist nach (I.V.) korrekt. Ist g[i] j und K>v[i] + Opt[i-1,j-g[i]], so kann Objekt i nicht zu einer optimalen Lösung gehören. Der Algorithmus gibt in diesem Fall RucksackLösung(A,i-1,j,g,v,K) zurück. Dies ist nach (I.V.) korrekt. i S

80 LS 2 / Informatik 80 Dynamische Programmierung RucksackKomplett(n,g,v,W) 1. Rucksack(n,g,v,W) 2. return RucksackLösung(Opt,n,W,g,v,Opt[n,W})

81 LS 2 / Informatik 81 Dynamische Programmierung Satz 30 Algorithmus RucksackKomplett berechnet in (nW) Zeit den Wert einer optimalen Lösung, wobei n die Anzahl der Objekte ist und W die Größe des Rucksacks. Beweis: Die Laufzeit wird durch Algorithmus Rucksack definiert und ist somit (nW). Die Korrektheit folgt aus den beiden Lemmas.


Herunterladen ppt "LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)"

Ähnliche Präsentationen


Google-Anzeigen