Informatik I Übung, Woche 47: Nachtrag zur dynamischen Programmierung

Ähnliche Dokumente
Informatik II Übung, Woche 10

Algorithmen und Komplexität

Informatik II Übung, Woche 17

Informatik I Übung, Woche 41

Informatik II Übung, Woche 14

Kapitel 5: Dynamisches Programmieren Gliederung

Klausur Algorithmen und Datenstrukturen II 10. August 2015

Numerisches Programmieren, Übungen

Mathematik für Anwender I

Informatik I Übung, Woche 40

Informatik I Übung, Woche 41

Relationen und DAGs, starker Zusammenhang

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

Satz 324 Sei M wie oben. Dann gibt es für ein geeignetes k Konstanten c i > 0 und Permutationsmatrizen P i, i = 1,...

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck

Ü 419 a Absolute Bezüge

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

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

Algorithmische Methoden zur Netzwerkanalyse

7.1 Matrizen und Vektore

Theoretische Grundlagen der Informatik

UNABHÄNGIGER LASTEN. Vorlesung 9 BALANCIERUNG DYNAMISCHER. Graphenalgorithmen und lineare Algebra Hand in Hand

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Algorithmen & Programmierung. Rekursive Funktionen (1)

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

5 Lineare Gleichungssysteme und Determinanten

Grundbegriffe der Informatik

11. Übung Algorithmen I

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)

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

Numerische Lineare Algebra - Matlab-Blatt 2

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Cramersche Regel. Satz Es sei A R n n eine quadratische Matrix mit det(a) 0. Für ein LGS Ax = b sei. A j := (a 1,...,a j 1,b,a j+1,...

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)

Computeranwendung und Programmierung (CuP)

Einführung in die Programmierung für NF MI. Übung 04

Mathematik I. Vorlesung 14. Rang von Matrizen

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 2006 Blatt 13

Das Programm protokolliert alle (abgeschlossenen) Übungen pro SpielerIn und gibt die Ergebnisse in einer fortlaufenden Liste aus.

Dynamisches Programmieren - Problemstruktur

Die Determinante ist nur für beliebige quadratische Matrizen (n = m) definiert: a 11 a 12 a a 1n a 21 a 22. det. a nn.

8.2 Invertierbare Matrizen

Kapitel 6: Graphalgorithmen Gliederung

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

9.2 Invertierbare Matrizen

3. Die Datenstruktur Graph

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

16. All Pairs Shortest Path (ASPS)

Achtung! In Abhängigkeit Ihrer Lohnlizenz können einzelne Felder evtl. nicht angezeigt werden (z.b. Pfänd.summe, PV-frei, UV-frei).

Grundlagen: Algorithmen und Datenstrukturen

5. Bäume und Minimalgerüste

Algorithmen und Datenstrukturen 1 Kapitel 3

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Recommender Systeme mit Collaborative Filtering

Klausur Informatik B April Teil I: Informatik 3

Lineare Algebra I (WS 12/13)

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

Distributed Algorithms. Image and Video Processing

In allen Fällen spielt die 'Determinante' einer Matrix eine zentrale Rolle.

Geometrische Deutung linearer Abbildungen

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Algorithmische Anwendungen WS 2005/2006

3 Determinanten, Eigenwerte, Normalformen

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Anhang: Ungarische Methode

Numerische Verfahren und Grundlagen der Analysis

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Algorithmen & Komplexität

Algorithmen und Datenstrukturen

Serie 10: Inverse Matrix und Determinante

RECHNEN MIT WORD 2010

Ranking by Reordering Tobias Joppen

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Tag 4 Repetitorium Informatik (Java)

Matrix: Eine rechteckige Anordnung reeller Zahlen a ij (i = 1,..., n i ; j = 1,..., m) in Zeilen und Spalten. Die a ij heiÿen Elemente von A.

1 Univariate Statistiken

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen

Lineare Algebra: Determinanten und Eigenwerte

Übung zu Einführung in die Informatik # 11

6. Zeiger Allgemeines Definition eines Zeigers

Datenstrukturen & Algorithmen

Mathematik für Informatiker 1 Wintersemester 2013/14 Übungsblatt 12

5 Eigenwerte und die Jordansche Normalform

37 Gauß-Algorithmus und lineare Gleichungssysteme

1 Zahlentheorie. 1.1 Kongruenzen

Kombinatorik. Dr. Lucia Draque Penso. Universität Ulm. Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 1 / 18

Der Branching-Operator B

Schichtdatenerfassung

Lösbarkeit linearer Gleichungssysteme

XML-Archivierung betriebswirtschaftlicher Datenbank-Objekte*

Parallele Algorithmen in der Bildverarbeitung

Algorithmen und Datenstrukturen

Nutzung maschinellen Lernens zur Extraktion von Paragraphen aus PDF-Dokumenten

Transkript:

Informatik I Übung, Woche 47: Nachtrag zur dynamischen Programmierung Giuseppe Accaputo 20. November, 2015

: Definition : Unser Rucksack kann nur 20 kg tragen, wir wollen jedoch den Wert der Ware, welche wir mitnehmen können maximieren. Informatik 1 (D-BAUG) Giuseppe Accaputo 2

: rekursiver Algorithmus Sei n die Anzahl verfügbare Objekte. 1. n = 0: der maximale Wert ist 0 2. n > 0: Betrachte n-tes Objekt O n : 2.1 Lass O n liegen: Wert1 := MaxWert ( n -1, MaxGew ) 2.2 Pack O n ein (falls Gew(O_n)< MaxGew): Wert2 := Wert ( O_n ) + MaxWert (n -1, MaxGew - Gew ( O_n )) MaxGew - Gew(O_n) weil wir O n einpacken 2.3 MaxWert ist der grössere der beiden oben berechneten Werte: MaxWert := max ( Wert1, Wert2 ) Informatik 1 (D-BAUG) Giuseppe Accaputo 3

Dynamischer Rucksack: Setup Für die dynamische Programmierung verwenden wir die Tabelle MaxGewDP und setzen diese wie folgt auf: Zeile: Objekte, welche in Betracht gezogen werden Spalte: max. Gewicht des Rucksacks Eintrag MaxGewDP(i,j) enthält den maximalen Wert, der entsteht wenn wir alle Objekte O 1, O 2,..., O i (Zeile i) in Betracht ziehen und das max. Gewicht W j (Spalte j) verwenden Informatik 1 (D-BAUG) Giuseppe Accaputo 4

Dynamischer Rucksack: Tabelle MaxGewDP Anzahl Objekte: 9, d.h. O 1, O 2,..., O 9 Max. Gewicht: 20 MaxGewDP := 0 1 2... 9 0 1 2... 19 20 Wichtig: Dimension der Tabelle ist (9 + 1) (20 + 1) wegen der Abbruchbedingung Informatik 1 (D-BAUG) Giuseppe Accaputo 5

Dynamischer Rucksack: Objekte Die Objekte (siehe z.b. Vorlesungsslide 8-2) sind in einem Array objects gespeichert, das bspw. wie folgt definiert sein kann: objects : ARRAY [ 0.. 8] OF TObject ; objects hat die Länge n (Im Falle von Slide 8-2 wäre n = 9) Beachte: O i befindet sich an der Position (i 1) im Array (mit Indizes 0,..., 8), d.h. o[i-1] := O i objects[0] := O 1 objects[1] := O2... objects[8] := O9 Informatik 1 (D-BAUG) Giuseppe Accaputo 6

Dynamischer Rucksack: Objekte objects[i-1] := O i wird verwendet, weil die Zeilen (Objekte, welche in Betracht gezogen werden) in der Tabelle von i = 0, 1..., 9 gehen, wobei i = 0 der Abbruchbedingung entspricht, also der Fall in welchem 0 Objekte verwendet werden Ab i = 1 wird ein Objekt verwendet, d.h. wir müssen auf s Array zugreifen. Da die Indizes im Array von 0 bis 8 gehen, müssen wir auf das erste Objekt O 1 mittels objects[1-1] = objects[0] zugreifen. Informatik 1 (D-BAUG) Giuseppe Accaputo 7

Dynamischer Rucksack: Algorithmus Für alle max. Gewichte W 0, W 1..., W j,..., W 20 (Spalten) und für alle Objekte O 1,..., O i,..., O 9 (Zeilen) tu folgendes: 1. Falls W j = 0: MaxGewDP [i,j] := 0; 2. Sonst falls Gewicht(O i ) > W j (O i ist zu schwer) dann: MaxGewDP [i,j] := MaxGewDP [i -1,j]; 3. Ansonsten (O i hat Platz im Rucksack): 3.1 Packe O i nicht ein: W1 := MaxGewDP [i -1, j]; 3.2 Packe O i ein: W2 := Wert ( objects [i -1]) + MaxGewDP [i -1, j - Gewicht ( objects [i -1]) ] Verwende den grösseren Wert (Wertmaximierung): MaxGewDP [i,j] := max (W1, W2);

Dynamischer Rucksack: Step by Step Recall: Eintrag MaxGewDP(i,j) enthält den maximalen Wert, der entsteht wenn wir alle Objekte O 1, O 2,..., O i (Zeile i) in Betracht ziehen und das max. Gewicht W j (Spalte j) verwenden Es werden nicht unbedingt alle Objekte O 1, O 2,..., O i eingepackt, da es darunter Objekte geben kann, die schwerer sind als das max. Gewicht W j erlaubt Informatik 1 (D-BAUG) Giuseppe Accaputo 9

Dynamischer Rucksack: Step by Step, Fall 1 1. Falls W j = 0: MaxGewDP [i,j] := 0; Erklärung: Das aktuelle max. Gewicht ist W j = 0, d.h. es können keine Objekte eingepackt werden, also ist der max. Wert der Ware im Rucksack gleich 0. Informatik 1 (D-BAUG) Giuseppe Accaputo 10

Dynamischer Rucksack: Step by Step, Fall 2 2. Sonst falls Gewicht(O i ) > W j (O i ist zu schwer) dann: MaxGewDP [i,j] := MaxGewDP [i -1,j]; Erklärung: In diesem Fall ist das Objekt O i zu schwer und kann daher nicht eingepackt werden; der max. Wert im Rucksack bleibt genau gleich wie im Fall, in welchem O i erst gar nicht in Betracht gezogen wurde. Dazu speichern wir den max. Wert aus Zelle MaxGewDP[i-1,j] ab; MaxGewDP[i-1,j] enthält nämlich den max. Wert der entsteht, wenn wir alle Objekte O 1, O 2,..., O i 1 (ohne O i ) in Betracht ziehen und diese in den Rucksack mit max. Gewicht W j versuchen einzupacken. Informatik 1 (D-BAUG) Giuseppe Accaputo 11

Dynamischer Rucksack: Step by Step, Fall 3.1 3. Ansonsten (O i hat Platz im Rucksack): 3.1 Packe O i nicht ein: W1 := MaxGewDP [i -1, j]; Erklärung: Wir packen O i nicht ein, d.h. wir verwenden wie vorhin den max. Wert aus Zelle MaxGewDP[i-1,j] ab; MaxGewDP[i-1,j] enthält nämlich den max. Wert der entsteht, wenn wir alle Objekte O 1, O 2,..., O i 1 (ohne O i ) in Betracht ziehen und diese in den Rucksack mit max. Gewicht W j versuchen einzupacken. Informatik 1 (D-BAUG) Giuseppe Accaputo 12

Dynamischer Rucksack: Step by Step, Fall 3.2 3. Ansonsten (O i hat Platz im Rucksack): 3.1... 3.2 Packe O i ein: W2 := Wert ( objects [i -1]) + MaxGewDP [i -1, j - Gewicht ( objects [i -1]) ] Erklärung: O i wird eingepackt, d.h. der max. Wert berechnet sich nun aus der Summe bestehend aus dem Wert von O i und dem max. Wert der entsteht, wenn wir alle Objekte O 1, O 2,..., O i 1 (ohne O i ) in Betracht ziehen und diese in den Rucksack mit max. Gewicht W j Gewicht(O i ) versuchen einzupacken. Hierbei verwenden wir W j Gewicht(O i ) weil wir O i einpacken und deshalb dessen Gewicht in Betracht ziehen müssen. Informatik 1 (D-BAUG) Giuseppe Accaputo 13

Dynamischer Rucksack: Step by Step, Ergebnis aus Fall 3.1 und 3.2 3. Ansonsten (O i hat Platz im Rucksack): 3.1... 3.2... Verwende den grösseren Wert (Wertmaximierung): MaxGewDP [i,j] := max (W1, W2); Erklärung: Nachdem wir die Fälle 3.1 und 3.2 in Betracht gezogen haben, speichern wir den grösseren Wert zwischen W1 und W2 in der Zelle MaxGewDP[i,j] ab, da es unser Ziel ist, einen maximalen Wert im Rucksack mit max. Gewicht W j und den Objekten O 1, O 2,..., O i zu erreichen. Informatik 1 (D-BAUG) Giuseppe Accaputo 14

Dynamischer Rucksack: Beispielberechnung Nehmen wir an, die Tabelle MaxGewDP sieht aktuell wie folgt aus und wir möchten nun MaxGewDP[2,2] (rot) berechnen: 0 1 2... 19 20 0 0 0 0... 0 0 1 0 269 269... 269 269 2 0 269?......... MaxGewDP[2,2] entspricht dem max. Wert den wir erhalten, wenn wir die ersten beiden Objekte O 1, O 2 in Betracht ziehen, und sie versuchen in den Rucksack mit max. Gewicht W 2 = 2 zu packen Informatik 1 (D-BAUG) Giuseppe Accaputo 15

Dynamischer Rucksack: Beispielberechnung Das Objekt O 2 hat folgende Eigenschaften: 1. Gewicht(O 2 ) = 1 2. Wert(O 2 ) = 1 Da wir den Eintrag MaxGewDP[2,2] berechnen möchten, bedeutet dies, dass wir uns in der Iteration i=2,j=2 befinden, also ist das aktuelle max. Gewicht W 2 = 2 und das Objekt, dass gerade betrachtet wird ist O 2 Informatik 1 (D-BAUG) Giuseppe Accaputo 16

Dynamischer Rucksack: Beispielberechnung Betrachten wir den Algorithmus aus Slide 8 sehen wir, dass wir in den 3. Fall gelangen, da Gewicht(O 2 ) W 2 ist Fall 3.1: Wir packen O 2 nicht ein, also erhalten wir W1 := MaxGewDp [i -1,j] := MaxGewDp [1,2] := 269 Fall 3.2: Wir packen O 2 ein, also erhalten wir: W2 := Wert ( objects [1]) + MaxGewDP [1, 1] := 1 + 269 := 270 Berechnung des max. Wert, welches in Zelle MaxGewDP[2,2] gespeichert wird: MaxGewDP [2,2] := max (W1, W2) := max (269, 270) := 270 Informatik 1 (D-BAUG) Giuseppe Accaputo 17

Dynamischer Rucksack: Beispielberechnung Fall 3.1: W1 := Fall 3.2: W2 := 1 + grüne Zelle gelbe Zelle Ergebnis: max(w1, W2) := rote Zelle 0 1 2... 19 20 0 0 0 0... 0 0 1 0 269 269... 269 269 2 0 269 270......... Informatik 1 (D-BAUG) Giuseppe Accaputo 18

Übung 10: Dynamisches Wechselgeld, Setup Es wird eine Tabelle anz verwendet, um sich die Anzahl Möglichkeiten wie man einen bestimmten Geldbetrag bezahlen kann zwischenzuspeichern: Zeile: Münzen, welche in Betracht gezogen werden Spalte: Betrag Eintrag anz(i,j): Anzahl Möglichkeiten um den Betrag B j (Spalte j) mit den gegebenen Münzen M 1, M 2,..., M i (Zeile i) darzustellen Informatik 1 (D-BAUG) Giuseppe Accaputo 19

Dynamisches Wechselgeld: Münzen Die Münzen (siehe wechselgeld.pas auf der Infk1 Homepage) sind in einem Array muenzen gespeichert muenzen : ARRAY [0..6] OF INTEGER ; Beachte: M i befindet sich an der Position (i 1) im Array (mit Indizes 0,..., 6), d.h. o[i-1] := M i muenzen[0] := M1 muenzen[1] := M2... muenzen[6] := M 7 Siehe Slide 7 für weitere Informationen bezüglich den Indizes Informatik 1 (D-BAUG) Giuseppe Accaputo 20

Dynamisches Wechselgeld: Algorithmus Auf dem Übungsblatt sind die zu unterscheidenden Fälle erwähnt; verwendet Slide 8 um euch eine Idee vom Algorithmus für s Wechselgeld-Programm zu machen Aufgabe 10.1.b: Die erste Zeile entspricht der Abbruchbedingung, diese kann direkt so implementiert werden Informatik 1 (D-BAUG) Giuseppe Accaputo 21