Vorkurs Informatik WiSe 16/17

Ähnliche Dokumente
Konzepte der Informatik

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 15/16

Der Branching-Operator B

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

Algorithmen und Komplexität

Datenstrukturen und Algorithmen

Vorkurs Informatik WiSe 16/17

Von Labyrinthen zu. Algorithmen

Einstieg in die Informatik mit Java

1 Zahlentheorie. 1.1 Kongruenzen

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

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Vorkurs Informatik WiSe 15/16

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Greedy Algorithms - Gierige Algorithmen

Komplexität von Algorithmen:

ADS: Algorithmen und Datenstrukturen 2

Algorithmen in Zellularautomaten

Konzepte der Informatik

Ideen der Informatik Ein Rundgang durch die Komplexität [Was geht? Was geht schwer? Was geht gar nicht?]

Datenstrukturen & Algorithmen

Theoretische Grundlagen der Informatik

Algorithmen und Datenstrukturen I Grundlagen

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Zustandsraumsuche: Blinde und Heuristische Suche. Blinde und Heuristische Suche

Vom Leichtesten zum Schwersten Sortieralgorithmen

Gierige Algorithmen. Seminar Hallo Welt! für Fortgeschrittene. Jennifer Naumann. 11.Juni 2013

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

Universität des Saarlandes

Vorkurs Informatik WiSe 16/17

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

Approximationsalgorithmen. 19. Dezember / 28

Lernmodul 7 Algorithmus von Dijkstra

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Optimierungsmethoden für höherdimensionale Packprobleme. Sándor P. Fekete TU Braunschweig

Algorithmen und Datenstrukturen

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Vorkurs Beweisführung

Vorkurs Informatik SoSe 15

Kompaktkurs Diskrete Optimierung

3. Diskrete Mathematik

Die Menge C der komplexen Zahlen wird im Kapitel Weitere Themen behandelt.

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Informatik II, SS 2016

Algorithmen und Datenstrukturen

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

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Vorkurs Informatik WiSe 17/18

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

Einführung in die Programmierung I. 6. Sortieren. Stefan Zimmer

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Datenstrukturen und Algorithmen

Schnelle Multiplikation

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Elemente der Algebra und Zahlentheorie Musterlösung, Serie 5, Wintersemester vom 21. Januar 2006

Theoretische Informatik 1

Algorithmen und Datenstrukturen (für ET/IT)

Welche Probleme können Rechner (effizient) lösen? Die P = NP Frage. Ideen der Informatik Kurt Mehlhorn

Dynamische Programmierung

5.4 Das Rucksackproblem

5. Bäume und Minimalgerüste

Vorkurs Informatik WiSe 16/17

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen

Wir wollen nun die Behauptung beweisen, dass die Laufzeit von SELECT linear ist, also dass T (n) = O(n) gilt.

Vorkurs Informatik WiSe 16/17

Problemreduktion durch Transformation am Beispiel des. Erweiterten Euklidschen Algorithmus

Algorithmen und Datenstrukturen (für ET/IT)

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

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

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

5. Übungsblatt zu Algorithmen I im SoSe 2016

Beweistechniken. Beweistechniken. Vorsemesterkurs Informatik Theoretischer Teil Wintersemester 2013/ Oktober Vorsemesterkurs WS 2013/1

Gierige Algorithmen. Seminar Hallo Welt! für Fortgeschrittene. Daniel Ziegler Daniel Ziegler Gierige Algorithmen

Einführung in die Programmierung

Das Problem des Handlungsreisenden

Algorithmen vergleichen: Suchen und Sortieren

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Einführung in die Programmierung Wintersemester 2016/17

Inhalt. 8.1 Motivation. 8.2 Optimierung ohne Nebenbedingungen. 8.3 Optimierung unter Nebenbedingungen. 8.4 Lineare Programmierung

Sortieren durch Einfügen

Übung Algorithmen und Datenstrukturen

Probabilistische Primzahltests

Geometrische Algorithmen Segmentschnitt. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Segmentschnitt

Algorithmen und Datenstrukturen

Transkript:

Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 07.10.2016 Technische Universität Braunschweig, IPS

Inhaltsverzeichnis Rucksackproblem Dynamische Programmierung 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 2

Überblick Rucksackproblem Dynamische Programmierung 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 3

Rucksackproblem Wiederholung Grundsätzliche Problematik: Wie nutze ich vorhandenen Platz am effektivsten aus? Problemgröße hängt von folgenden Faktoren ab Anzahl und Beschaffenheit (Größe und Wert) der Schätze Größe der Schatzkiste Mannigfaltige Variation der Problemgrößen Dimensionalität der Gegenstände: ein-, zwei- oder dreidimensional Teilbarkeit der Gegenstände Beschaffenheit der Größe und des Werts der Gegenstände Nur ganzzahlige bzw. diskrete Größen bzw. Werte Meist werden die Gegenstände abstrahiert: Rechtecke und Quader anstatt der eigentlichen Form Verfügbarkeit der Gegenstände: einmal, n-mal oder unbegrenzter Vorrat 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 4

Rucksackproblem Problematik Nicht einfache eine optimale Lösung zu finden Man könnte 6 Goldbarren in eine Kiste der Länge 12 packen: Gegenstände in der Kiste einen Gegenwert von 36 Goldtalern, aber 44 mit von 4 Geldbündeln sind besser! Man sieht: Eine Lösung bekommt man sicher durch herum probieren. Aber ist die gefundene Lösung auch das Optimum? 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 5

Rucksackproblem Brute-Force Optimum durch systematische Probieren aller Möglichkeiten (Brute-Force) Nur bei relativ kleinen Problemgrößen machbar Anzahl der Möglichkeiten steigt exponentiell! Problem wird sehr schnell unüberschaubar und nicht mehr lösbar Beim 0/1-Rucksackproblem, jeder Schatz existiert genau einmal und entweder ein oder aus gepackt werden, Beträgt der Aufwand 2 n 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 6

Rucksackproblem Brute-Force 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 7

Rucksackproblem Algorithmische Betrachtung Teile und Herrsche: Das Problem wird in kleinere Teilprobleme, die separat gelöst werden, aufgeteilt Bedingung: Annäherung an die Gesamtlösung, wenn man eine Teillösung gefunden hat Anwendung auf das Rucksackproblem: Lösung für 6 Schätze näher, wenn man sie für 5 Schätze kennt? 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8

Rucksackproblem Wert der Kisten mit je einer Schatzart Wertvollste Kiste wird gewählt 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 9

Rucksackproblem Wertvollste Kiste gewählt Wahl der Wertvollste Kiste mit den restlichen Platz Auf schlechtere Schätze zugreifen um Platz aufzufüllen 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 10

Überblick Rucksackproblem Dynamische Programmierung 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 11

Dynamische Programmierung Ein weiterer Ansatz zur Lösung komplexer Probleme ist die Dynamische Programmierung Keine Aufteilung des Problems in disjunkte Teilprobleme Z.B. Sortiere die linke und die rechte Hälfte einer Liste und füge sie sortiert zusammen Betrachtung aller Teilprobleme Für das Rucksackproblem mit k Schätzen und einer Kiste der Größe n: Löse das Problem für alle Größen n 1 und jede Anzahl von Schätzen k 1, beginnend mit den kleinsten Schätzen Weniger Arbeit durch das Lösen von mehr Problemen oder Mehr ist weniger 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 12

Dynamische Programmierung Voraussetzungen Voraussetzungen: Problemgrößen müssen abzählbar (diskret) sein Einzelner Lösungsschritt muss linear sein Auswirkung auf das Rucksackproblem: Keine Fließkommawerte für Größe oder Wert Eindimensionale Kiste Es gibt nur die Alternativen Schatz enthalten ja oder nein. Es gibt keine unterschiedlichen Möglichkeiten einen Schatz in die Kiste zu packen. Die einzelnen Schätze müssen beliebig oft verfügbar sein 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 13

Dynamische Programmierung Voraussetzungen Einteilung der zu füllenden Schatzkiste in Flächenquadrate Betrachtung der Größe aller Schätze als ein Vielfaches eines Flächenquadrates Hier abgebildet ist der kleinste Schatz, ein Goldbarren mit einem Wert von 6 Goldtalern. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 14

Dynamische Programmierung Die Schätze Übersicht der verschiedenen Schätze: 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 15

Dynamische Programmierung Anwendung Lösung aller Probleme gleichzeitig: Nutzung einer Maxi-Kiste Eine Kiste, die gleichzeitig auch alle kleineren beinhaltet Sukzessives Lösen des Problems für alle Kistengrößen mit dem jeweils nächstgrößeren Schatz Grundlegendes Vorgehen: Teste für jede Größe, ob das Einfügen eines neuen Schatzes einen Zugewinn bringt 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 16

Dynamische Programmierung Anwendung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 17

Dynamische Programmierung Anwendung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 18

Dynamische Programmierung Anwendung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 19

Dynamische Programmierung Anwendung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 20

Dynamische Programmierung Anwendung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 21

Dynamische Programmierung Anwendung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 22

Dynamische Programmierung Anwendung Bei nur einen Schatz: relativ komplizierter Algorithmus um alle Schatzkisten optimal mit einem Schatz zu füllen. Problem für alle Größen und nur einen Schatz gelöst Lösung auf der für die weiteren Schätze aufgebaut werden kann 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 23

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 24

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 25

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 26

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 27

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 28

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 29

Dynamische Programmierung Anwendung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 30

Dynamische Programmierung Anwendung Bis zum Ende durchgeführt ergibt sich das folgende Bild. Problem für alle Größen und zwei Schätzen gelöst Lösung auf der für die weiteren Schätze aufgebaut werden kann 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 31

Dynamische Programmierung Anwendung Und auch beim Schatz mit der Länge vier muss man nicht umdenken... 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 32

Dynamische Programmierung Anwendung Und auch beim Schatz mit der Länge vier muss man nicht umdenken... 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 33

Dynamische Programmierung Anwendung Nachdem wir nun den Algorithmus auch mit dem dritten Schatz durchexerziert haben, sollte das Prinzip klar sein. Zeit sich die Frage zu stellen, ob das, was wir machen auch funktioniert... 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 34

Dynamische Programmierung Beweis Die Korrektheit lässt sich per Induktion beweisen, d.h. wir zeigen die Korrektheit für den trivialen Fall (nur ein Schatz) und beweisen, dass die Behauptung sofern sie für n Schätze gilt auch für n + 1 Schätze gilt. Vorgehen allgemein: Wir kombinieren immer den Inhalt einer bereits optimal gepackten Kiste A mit einem Schatz S, wofür wir eine Kiste B benötigen, deren Größe der Größe der Kiste A plus des Schatzes S entspricht. Für den Trivialfall (n = 1) ist die Korrektheit sofort zu sehen. Für n := n + 1 gibt es folgende Alternativen Man benötigt den neu hinzugekommenen Schatz S nicht, dann bleibt die Kiste, so wie sie ist, erhalten und damit weiterhin optimal. Benötigt man den neu hinzugekommenen Schatz, so ist in der neuen optimalen Kiste neben dem hinzugekommenen Schatz noch Platz für so viele Elemente, wie es sie auch in Kiste A gibt. Da Kiste A bereits optimal gefüllt war, muss also auch Kiste B optimal gefüllt sein. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 35

Dynamische Programmierung Ergebnis Nachdem die Korrektheit des Verfahrens bewiesen ist, können wir es auf die weiteren Schätze anwenden und erhalten das nebenstehende Ergebnis. Damit sind die optimalen Lösungen für alle Kisten gefunden. Erstaunlich, dass in der Siegerkiste der Größe 12 ein Goldbarren eingepackt wurde, der auf den ersten Blick als kein vielversprechender Kandidat galt. 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 36

Dynamische Programmierung Algorithmus Nehme den kleinsten Schatz zur Hand Solange man noch einen Schatz in der Hand hält Setze = neben die Kiste mit Größe 0 Solange = auf eine Kiste zeigt Lege den Schatz rechts an die Kiste, auf die = zeigt Lege = neben die Kiste, die so groß ist wie die neben = und dem Schatz zusammen Lege = neben die Kiste, die so groß ist wie die neben = und dem Schatz zusammen Überprüfe, ob der Inhalt von = plus dem Schatz wertvoller ist als der Inhalt von = Wenn JA: Fülle = so, dass sie dem Inhalt von = plus dem Schatz entspricht Schiebe = um eine Position nach unten Lege den Schatz aus der Hand und nimm den nächst größeren Schatz in die Hand, falls es noch einen größeren gibt 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 37

Zusammenfassung Rucksackprobleme Dynamische Programmierung Montag: Suche Binärsuche Datenstruktur: Baum 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 38

Danke Vielen Dank für Ihre Aufmerksamkeit! 07.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 39