ADS: Algorithmen und Datenstrukturen 2

Ähnliche Dokumente
ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Komplexität

Das Problem des Handlungsreisenden

Informatik II: Algorithmen und Datenstrukturen SS 2013

Wiederholung. Divide & Conquer Strategie

Theoretische Informatik III (Winter 2018/19) Prof. Dr. Ulrich Hertrampf. Noch einmal TSP

Formulierung mittels Dynamischer Programmierung

19. Dynamic Programming I

Dynamische Programmierung

Datenstrukturen & Algorithmen

19. Dynamic Programming I

Rückblick: divide and conquer

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Dynamische Programmierung. Problemlösungsstrategie der Informatik

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 1 Kapitel 3

Dynamische Programmierung II

5.4 Das Rucksackproblem

ADS: Algorithmen und Datenstrukturen 2

9.2 Invertierbare Matrizen

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen auf Sequenzen

Optimierung. Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen. Vorgehen: Dynamische Programmierung

8.2 Invertierbare Matrizen

Algorithmen und Datenstrukturen (für ET/IT)

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

Algorithmen und Datenstrukturen

8.2 Invertierbare Matrizen

Kapitel 5: Dynamisches Programmieren Gliederung

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

19. Dynamic Programming I

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

Einstieg in die Informatik mit Java

6. Algorithmen auf Zeichenketten

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016

Informatik II, SS 2016

Algorithmen und Datenstrukturen (für ET/IT)

0 i = n w n > k v n. V (i +1,k), max v i + V (i +1,k w i )

Komplexität von Algorithmen:

Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 1

ADS: Algorithmen und Datenstrukturen 2

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Algorithmen I - Tutorium 28 Nr. 12

Theoretische Informatik 1

Konzepte der Informatik

19. Dynamic Programming I

Theoretische Informatik 1

Konzepte der Informatik

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Das Rucksackproblem: schwache NP-Härte und Approximation

Algorithmen und Datenstrukturen (für ET/IT)

Chr.Nelius: Lineare Algebra (SS 2008) 1. 4: Matrizenrechnung. c ik := a ik + b ik. A := ( a ik ). A B := A + ( B). ist A =

3 Matrizenrechnung. 3. November

Algorithmen und Datenstrukturen 2

2.2 Kollineare und koplanare Vektoren

Basiswissen Matrizen

Multiplikation von Matrizen

Dynamische Optimierung

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1)

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

4. Übungsblatt zur Mathematik II für Inf, WInf

a 11 a 12 a 1(m 1) a 1m a n1 a n2 a n(m 1) a nm Matrizen Betrachten wir das nachfolgende Rechteckschema:

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

Klausur Algorithmentheorie

Partialbruchzerlegung

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Schnelle Multiplikation

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme

11. Übung Algorithmen I

ABITURPRÜFUNG 2001 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

Probleme aus NP und die polynomielle Reduktion

3.3 Optimale binäre Suchbäume

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5

Vorkurs Informatik WiSe 16/17

5.2 Rechnen mit Matrizen

Algorithmen und Datenstrukturen in der Bioinformatik Zweites Übungsblatt WS 05/06 Musterlösung

Methoden für den Entwurf von Algorithmen

Informatik II, SS 2018

20. Dynamic Programming II

Informatik II, SS 2014

Grundbegriffe der Informatik

Übungen zum Ferienkurs Lineare Algebra 2015/2016: Lösungen

Lineare Gleichungssysteme: direkte Verfahren

Teil I. Lineare Algebra I Vorlesung Sommersemester Olga Holtz. MA 378 Sprechstunde Fr und n.v.

Algorithmische Bioinformatik 1

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

20. Dynamic Programming II

Transkript:

ADS: Algorithmen und Datenstrukturen 2 Teil 8 Gerhard Heyer, Florian Holz unter Verwendung der Materialien der letzten Jahre Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 12. Juni 2013 1 / 25

Editier-Distanz Beobachtungen: Jede optimale Folge von Editier-Operationen ändert jedes Zeichen höchstens einmal Jede Zerlegung einer optimalen Anordnung führt zur optimalen Anordnung der entsprechenden Teilsequenzen Konstruktion der optimalen Gesamtlösung durch rekursive Kombination von Lösungen für Teilprobleme G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 2 / 25

Editier-Distanz Ansatz: Betrachte Editier-Distanzen von Präfixen. D ij sei die Editierdistanz für die Präfixe (a 1,..., a i ) und (b 1,..., b j ); 0 i n; 0 j m. Wie sieht ein zu D ij gehöriges Alignment aus? Letzte Position: (a i, b j ) oder (a i, ) oder (, b j ) Davor: optimale Alignments der entsprechenden Präfixe. Rekursion: D i 1,j 1 + s(a i, b j ) D ij = min D i 1,j + s(a i, ) D i,j 1 + s(, b j ) Triviale Lösungen für leere Präfixe: D 0,0 = s(, ) = 0; D 0,j = j j =1 s(, b j ); D i,0 = i i =1 s(a i, ) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 3 / 25

Editierdistanz j 0 1 2 3 i - R A D 0-0 1 2 3 1 A 1 1 1 2 2 U 2 2 2 2 3 T 3 3 3 3 4 O 4 4 4 4 Jeder Weg von links oben nach rechts unten entspricht einer Folge von Edit-Operationen, die a in b transformiert Möglicherweise mehrere Pfade mit minimalen Kosten Komplexität: O(n m) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 4 / 25

Grundlage: Das Prinzip Teile und Herrsche Um ein umfangreiches Problem zu lösen, zerlege man es in kleinere Probleme, die unabhängig voneinander gelöst werden können. In der dynamischen Programmierung wird dieses Prinzip bis zum Extrem weiterentwickelt: Wenn nicht bekannt ist, welche kleineren Probleme zu lösen sind, löst man einfach alle und speichert dann die Ergebnisse zum Zwecke der späteren Verwendung bei der Gesamtlösung größerer Probleme. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 5 / 25

Prinzip 1 Charakterisiere den Lösungsraum und die Struktur der intendierten optimalen Lösung 2 Definiere rekursiv, wie sich eine optimale Lösung (und der ihr zugeordnete Wert) aus kleineren optimalen Lösungen (und deren Werte) zusammensetzt. 3 Konzipiere den Algorithmus in einer bottom-up Weise so, dass für n = 1, 2, 3,... tabellarisch optimale Teillösungen (und deren zugeordnete Werte) gefunden werden. Beim Finden einer bestimmten optimalen Teillösung der Größe k > 1 ist auf alle optimalen Teillösungen der Größe < k zurückzugreifen. Voraussetzung: Bellmannsches Optimalitätsprinzip Die optimale Lösung für ein Problem der Größe n setzt sich aus optimalen Teillösungen kleinerer Größe zusammen. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 6 / 25

Prinzip Wann funktioniert dynamische Programmierung? Erstens muss es nicht immer möglich sein, die Lösungen kleinerer Probleme so zu kombinieren, dass sich die Lösung eines größeren Problems ergibt. Zweitens kann die Anzahl der zu lösenden Probleme unvertretbar groß sein. Es ist noch nicht gelungen, genau anzugeben, welche Probleme mit Hilfe der dynamischen Programmierung in effizienter Weise gelöst werden können. Es gibt viele schwierige Probleme, für die sie nicht anwendbar zu sein scheint, aber auch viele leichte Probleme, für die sie weniger effizient ist als Standardalgorithmen. Systematische Theorie wurde in den letzten Jahren vor allem von Robert Giegerich in Bielefeld entwickelt: Zerlegung des Problems... Grammatik Zerlegung der Kostenfunktion... Algebra Optimierung... Auswahlregel G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 7 / 25

Matrix-Produkte Ein klassischer Anwendungsfall der dynamischen Programmierung ist das Problem der Minimierung des Rechenaufwands, der für die Multiplikation einer Reihe von Matrizen unterschiedlicher Dimension erforderlich ist. a 11 a 12 ( ) a 21 a 22 b11 b 12 b 13 a 31 a 32 b 21 b 22 b 23 a 41 a 42 c 11 c 21 c 31 ( ) ( ) ( ) e d 11 d 11 e 12 f11 f 12 f 13 12 e 21 e 22 f 21 f 22 f 23 Ziel: Multiplikation der 6 Matrizen. Die Anzahl der Spalten in einer Matrix muss stets mit der Anzahl der Zeilen in der folgenden Matrix übereinstimmen, damit die Multiplikation ausführbar ist. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 8 / 25

Matrix-Produkte Aufwand um eine (p q) mit einer (q r) Matrix zu multiplizieren: p r Einträge, deren jeder q skalare Multiplikationen und Additionen erfordert, also proportional zu pqr. Im Beispiel: M 1 = AB... 4 2 3 = 24 M 2 = M 1 C... 4 3 1 = 12 M 3 = M 2 D... 4 1 2 = 8... insgesamt 84 Anders rum: N 5 = EF, N 4 = DN 5, N 3 = CN 4,... nur 69 Skalarmultiplikationen! Es gibt noch viele weitere Möglichkeiten: G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 9 / 25

Matrix-Produkte Klammern bestimmen Reihenfolge der Multiplikation: Reihenfolge von links nach rechts entspricht Ausdruck ( ( ( ( ( AB ) C ) D ) E ) F ) Reihenfolge von rechts nach links entspricht Ausdruck ( A ( B ( C ( D ( EF ) ) ) ) ) Jedes zulässige Setzen von Klammern führt zum richtigen Ergebnis Wann ist die Anzahl der Multiplikationen am kleinsten? Wenn große Matrizen auftreten, können beträchtliche Einsparungen erzielt werden: Wenn z. B. die Matrizen B, C und F im obigen Beispiel eine Dimension von 300 statt von 3 besitzen, sind bei der Reihenfolge von links nach rechts 6024 Multiplikationen erforderlich, bei der Reihenfolge von rechts nach links dagegen ist die viel größere Zahl von 274 200 Multiplikationen auszuführen. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 10 / 25

Matrix-Produkte Allgemeiner Fall: n Matrizen sind miteinander zu multiplizieren: M 1 M 2 M 3...M n wobei für jede Matrix M i, 1 i < n, gilt: M i hat r i Zeilen und r i+1 Spalten. Ziel: Diejenige Reihenfolge der Multiplikation der Matrizen zu finden, für die die Gesamtzahl der auszuführenden Skalar-Multiplikationen minimal wird. Die Lösung des Problems mit Hilfe der dynamischen Programmierung besteht darin, von unten nach oben vorzugehen und berechnete Lösungen kleiner Teilprobleme zu speichern, um eine wiederholte Rechnung zu vermeiden. Was ist der beste Weg das Teilprodukt M k M k+1... M l 1 M l zu berechnen? G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 11 / 25

Beschreibung des Algorithmus I Berechnung der Kosten für Multiplikation benachbarter Matrizen und Speicherung in einer Tabelle. Berechnung der Kosten für Multiplikation von 3 aufeinanderfolgenden Matrizen. z. B. beste Möglichkeit, M 1 M 2 M 3 zu multiplizieren: Entnimm der gespeicherten Tabelle die Kosten der Berechnung von M 1 M 2 und addiere die Kosten der Multiplikation dieses Ergebnisses mit M 3. Entnimm der gespeicherten Tabelle die Kosten der Berechnung von M 2 M 3 und addiere die Kosten der Multiplikation dieses Ergebnisses mit M 1. Vergleich der Ergebnisse und Abspeichern der besseren Variante. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 12 / 25

Beschreibung des Algorithmus II Berechnung der Kosten für Multiplikation von 4 aufeinanderfolgenden Matrizen. z. B. beste Möglichkeit, M 1 M 2 M 3 M 4 zu multiplizieren: Entnimm der gespeicherten Tabelle die Kosten der Berechnung von M 1 M 2 M 3 und addiere die Kosten der Multiplikation dieses Ergebnisses mit M 4. Entnimm der gespeicherten Tabelle die Kosten der Berechnung von M 2 M 3 M 4 und addiere die Kosten der Multiplikation dieses Ergebnisses mit M 1. Entnimm der gespeicherten Tabelle die Kosten der Berechnung von M 1 M 2 sowie von M 3 M 4 und addiere dazu die Kosten der Multiplikation dieser beiden Ergebnisse. Vergleich der Ergebnisse und Abspeicherung der besseren Variante.... Indem man in dieser Weise fortfährt, findet man schließlich die beste Möglichkeit, alle Matrizen miteinander zu multiplizieren. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 13 / 25

Allgemeine Matrix-Produkte (M k M k+1... M l 1 M l ) = (M k M k+1... M i 1 )(M i M i+1... M l 1 M l ) Sei also C ij der minimale Aufwand für die Berechnung des Teilproduktes M i M i+1... M j 1 M j. C ii = 0, Produkt besteht aus nur einem Faktor, es ist nichts zu tun. M k M k+1... M i 1 is eine r k r i Matrix M i M i+1... M l 1 M l is eine r i r l+1 Matrix Produkt dieser beiden Faktoren benötig daher r k r i r l+1 Operationen. Die beste Zerlegung von (M k M k+1... M l 1 M l ) ist daher diejenige, die die Summe C k,i 1 + C i,l + r k r i r l+1 minimiert. Daher Rekursion (k < l): C kl = Lösung des Gesamtproblems: C 1n. min i:k<i l C k,i 1 + C i,l + r k r i r l+1 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 14 / 25

Matrix Multiplikation A B C D E F A 0 24 14 22 26 36 [A][B] [A][BC] [ABC][D] [ABC][DE] [ABC][DEF] B 0 6 10 14 22 [B][C] [BC][D] [BC][DE] [BC][DEF] C 0 6 10 19 [C][D] [C][DE] [C][DEF] D 0 4 10 [D][E] [DE][F] E 0 12 [E][F] F 0 Mit Hilfe der dynamischen Programmierung kann das Problem der Multiplikation mehrerer Matrizen in einer zu n 3 proportionalen Zeit und mit einem zu n 2 proportionalen Speicheraufwand gelöst werden. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 15 / 25

Beschreibung der Tabelle Sie zeigt den Ablauf des oben gezeigten Algorithmus für das angegebene Beispiel. Sie gibt die Gesamtkosten und die optimale letzte Multiplikation für jede Teilfolge in der Liste der Matrizen an. Z. B. besagt die Eintragung in der Zeile A und der Spalte F, dass 36 Skalar-Multiplikationen erforderlich sind, um die Matrizen A bis F zu multiplizieren. Dies wird erreicht, indem A bis C auf optimale Weise multipliziert werden, dann D bis F auf optimale Weise multipliziert werden und danach die erhaltenen Matrizen miteinander multipliziert werden. Für obiges Beispiel ist die ermittelte Anordnung der Klammern ( (A ( BC ) )( ( DE ) F ), wofür nur 36 Skalar-Multiplikationen benötigt werden. Für das Beispiel, wo die Dimension von 3 auf 300 geändert wurde, ist die gleiche Anordnung der Klammern optimal, wobei hier 2412 Skalar-Multiplikationen erforderlich sind. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 16 / 25

Traveling Salesman Problem (TSP) Gegeben: n Städte, Entfernungsmatrix M = (m ij ), m ij Entfernung von Stadt i nach Stadt j. Gesucht: Rundreise über alle Städte mit minimaler Länge, also Permutation π : (1,..., n) (1,..., n). c(π) = m π(n)π(1) + n i=1 n 1m π(i)π(i+1) NP-vollständig (Rechenzeit mit großer Sicherheit exponentiell) Naiver Algorithmus: Alle (n 1)! Reihenfolgen betrachten. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 17 / 25

Traveling Salesman Problem (TSP) für TSP Sei g(i, S) Länge des kürzesten Weges von Stadt i über jede Stadt in der Menge S (jeweils genau ein Besuch) nach Stadt 1. Lösung des TSP also g(1, 2,..., n). (Stadt 1 kann beliebig gewählt werden, da Rundreise gesucht wird.) Es gilt: g(i, S) = { m i1 min j S m ij + g(j, S \ {j}) falls S = sonst G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 18 / 25

Traveling Salesman Problem (TSP) for ( i = 2 ; i = n; i++) g[i,{}] = m[i,1] for ( k = 1; k = n-2 ; k++ ) for (S, S = k, 1 not in S ) for (i in {2,...,n}-S ) Berechne g[i,s] gemäß Formel Berechne g[1,{ 2,...,n }] gemäß Formel Komplexität: Tabellengröße Aufwand je Tabelleneintrag Größe: < n2 n (Anzahl der i s mal Anzahl betrachtete Teilmengen) Tabelleneintrag: Suche nach Minimum unter j aus S: O(n) Insgesamt: O(n 2 2 n ), deutlich besser als (n 1)!. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 19 / 25

Warum nützlich ist An einer völlig hypothetischen Universität ist es üblich, dass in Klausuren viel mehr Aufgaben gestellt werden als in der der vorgebenen Zeit t gelöst werden können. Ein ebenfalls völlig hypothetischer Student möchte nun seinen Punktestand optimieren. Welche Aufgaben sollten bearbeitet werden? Für jede Aufgabe i {1,..., n} kennen wir die Bearbeitungszeit t i und die dafür erreichbare Punktezahl p i. Die Aufgabe besteht also darin, eine Teilmenge S {1,..., n} zu finden, so dass p i max während t i t i S Üblicherweise lässt man stattdessen einen Dieb mit Rucksack, der ein Fassungsvermögen t, Gegenstände mit Wert p i und Volumen t i aus einem Tresor klauen und vor der Polizei davonlaufen... weswegen das Problem Rucksackproblem und nicht Klausurproblem heisst. i S G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 20 / 25

Rucksackproblem Sei P t die maximale Punktzahl, die bis zum Zeitpunkt t erarbeit werden kann. Wenn die letzte bearbeitete Aufgabe j ist, so ist das beste Ergebnis, das erzielt werden kann p j + P t tj, also der Punktegewinn für Aufgabe j plus der best-mögliche Punktestand P t tj, der in der Zeit t t j erreicht werden kann. Also: P t = max j ( pj + P t tj ) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 21 / 25

Rucksackproblem Effiziente Berechnung, indem die Operationen in einer zweckmäßigen Reihenfolge ausgeführt werden: cost... Punktezahl; size... Zeitaufwand; val[j]... Wert (Punkte) der Aufgabe j for ( j = 1 ; j <= N ; j ++ ) { for ( i = 1 ; i <= M ; i++ ) { if ( i >= size[j] ) { if ( cost[i] < cost[i - size[j]] + val[j] ) { cost[i] = cost[i - size[j]] + val[j] ; best[i] = j ; } } } } G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 22 / 25

Rucksackproblem Bezeichnung A B C D E Wert 4 5 10 11 13 Aufwand 3 4 7 8 9 Lösung des Rucksack-Beispiels: k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 j = 1 cost [k] 0 0 4 4 4 8 8 8 12 12 12 16 16 16 20 20 20 best [k] - - A A A A A A A A A A A A A A A j = 2 cost [k] 0 0 4 5 5 8 9 10 12 13 14 16 17 18 20 21 22 best [k] - - A B B A B B A B B A B B A B B j = 3 cost [k] 0 0 4 5 5 8 10 10 12 14 15 16 18 20 20 22 24 best [k] - - A B B A C B A C C A C C A C C j = 4 cost [k] 0 0 4 5 5 8 10 11 12 14 15 16 18 20 21 22 24 best [k] - - A B B A C D A C C A C C D C C j = 5 cost [k] 0 0 4 5 5 8 10 11 13 14 15 17 18 20 21 23 24 best [k] - - A B B A C D E C C E C C D E C G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 23 / 25

Rucksack Problem: Beispiel Das erste Zeilenpaar zeigt den maximalen Wert (den Inhalt der Felder cost und best), wenn nur Elemente A benutzt werden. Das zweite Zeilenpaar zeigt den maximalen Wert, wenn nur Elemente A und B verwendet werden, usw. Der höchste Wert, der mit einem Rucksack der Größe 17 erreicht werden kann, ist 24. Im Verlaufe der Berechnung dieses Ergebnisses hat man auch viele Teilprobleme gelöst, z. B. ist der größte Wert, der mit einem Rucksack der Größe 16 erreicht werden kann, 22, wenn nur Elemente A, B und C verwendet werden. Der tatsächliche Inhalt des optimalen Rucksacks kann mit Hilfe des Feldes best berechnet werden. Per Definition ist best[m] in ihm enthalten, und der restliche Inhalt ist der gleiche wie im optimalen Rucksack der Größe M - size [best [M]] usw. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 24 / 25

Rucksack Problem: Eigenschaften Für die Lösung des Rucksack-Problems mit Hilfe der dynamischen Programmierung wird eine zu N M proportionale Zeit benötigt. Somit kann das Rucksack-Problem leicht gelöst werden, wenn M nicht groß ist; für große Fassungsvermögen kann die Laufzeit jedoch unvertretbar groß werden. Eine grundlegende Schwierigkeit ist es, dass das Verfahren nicht anwendbar ist, wenn M sehr viele verschiedene Werte annehmen kann, z.b., wenn Größe oder Wert der Objekte beliebige z. B. reelle Zahlen anstatt (kleiner) ganzer Zahlen sind. Wenn jedoch die Fassungsvermögen sowie die Größen und Werte der Gegenstände ganze Zahlen sind, so gilt das grundlegende Prinzip, dass optimale Entscheidungen nicht geändert werden müssen, nachdem sie einmal getroffen wurden. Jedesmal, wenn dieses allgemeine Prinzip zur Anwendung gebracht werden kann, ist die dynamische Programmierung anwendbar. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 8 SS 2013 25 / 25