From 981af6411e3f9f558ba15c8d9a1818028f079116 Mon Sep 17 00:00:00 2001
From: tobiglaser <76131623+tobiglaser@users.noreply.github.com>
Date: Wed, 3 May 2023 21:54:08 +0200
Subject: [PATCH] =?UTF-8?q?ReadMe=20hinzugef=C3=BCgt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Blatt2/README.md | 177 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 177 insertions(+)
 create mode 100644 Blatt2/README.md

diff --git a/Blatt2/README.md b/Blatt2/README.md
new file mode 100644
index 0000000..be800e3
--- /dev/null
+++ b/Blatt2/README.md
@@ -0,0 +1,177 @@
+# Rucksackproblem
+
+## Brute Force
+Für jedes Item wird rekursiv in den binären Baum abgestiegen.
+Nach dem Prüfen auf Abbruchkonditionen und die beste Kombination
+wird zuerst mit Bit 1 "nach links" und darauf mit Bit 0 "nach rechts" abgestiegen bzw. traversiert.
+Die `traverse()` Funktion hat viele Parameter, benötigt so aber keine globalen Variablen.
+Um Variablen per Referenz zu übergeben werden diese in Objekte (hier Listen) "verpackt".
+Eine einfache Möglichkeit zur Optimierung wäre, einen Zweig vorzeitig zu verlassen, sobald das Maximalgewicht überschritten wird.
+
+## Dynamische Programmierung
+Die dynamische Programmierung nutzt eine Tabelle um erheblich schneller zu gleichfalls esten Lösung zu kommen.
+Für jedes Item wird eine Zeile und für jedes Gewichsinkrement eine Spalte angelegt.
+Nacheinander wird jedes Item erst einer Hilfszeile hinzugefügt.
+Diese wird dafür um den Gewichtswert verschoben.
+Anschließend wird verglichen, ob die Kombination der Hilfszeile einen größeren Wert hat als die letzte Kombination jeder Spalte, der bessere Wert wird überniommen.
+Ist unten rechts der beste Wert gefunden, so wird die Tabele rückwärts betrachtet.
+Das erste Auftreten eines Wertes in der Spalte zeigt das Hinzufügen eines Items an.
+Dieses wird gespeichert, die Spalte um den Abzug des Gewichts nach links gewechselt und eine weitere Zeile aufgestiegen.
+Dies wird so lange wiederholt bis ein Feld mit leerem Rucksack bzw. Wert 0 vorgefunden wird.
+Liegen mehrere gleiche Werte nebeneinander kann auf gleich gute Kombinationen geschlossen werden.
+
+## Laufzeit & Ergebnisse
+
+### rosettacode Items
+
+| Brute Force            	| Dynamisch              	|
+|------------------------	|------------------------	|
+| map                    	| map                    	|
+| compass                	| compass                	|
+| water                  	| water                  	|
+| sandwich               	| sandwich               	|
+| glucose                	| glucose                	|
+| banana                 	| banana                 	|
+| apple                  	| apple                  	|
+| cheese                 	| cheese                 	|
+| suntan cream           	| suntan cream           	|
+| camera                 	| camera                 	|
+| waterproof trousers    	| waterproof trousers    	|
+| waterproof overclothes 	| waterproof overclothes 	|
+| note-case              	| note-case              	|
+| sunglasses             	| sunglasses             	|
+| socks                  	| socks                  	|
+|                           |                        	|
+| Gewicht: 490           	| Gewicht: 490           	|
+| Wert: 1130             	| Wert: 1130             	|
+| time: 11.08s           	| time: 7.12ms           	|
+
+-> Faktor 11,08s / 7,12ms = 1556 weniger Aufwand für das gleiche Ergebnis!
+
+### knapsack01.data
+
+| Items:         	|
+|----------------	|
+| 2              	|
+| 3              	|
+| 4              	|
+| 5              	|
+| 6              	|
+| 7              	|
+| 8              	|
+| 13             	|
+| 15             	|
+| 17             	|
+| 24             	|
+| 25             	|
+| 26             	|
+| 27             	|
+| 28             	|
+| 30             	|
+| 31             	|
+| 32             	|
+| 33             	|
+| 36             	|
+| 38             	|
+| 40             	|
+| 43             	|
+| 44             	|
+| 45             	|
+| 48             	|
+| 49             	|
+| 50             	|
+| 51             	|
+| 52             	|
+| 55             	|
+| 57             	|
+| 59             	|
+| 61             	|
+| 63             	|
+| 64             	|
+| 65             	|
+| 69             	|
+| 70             	|
+| 71             	|
+| 72             	|
+| 73             	|
+| 76             	|
+| 78             	|
+| 79             	|
+| 80             	|
+| 81             	|
+| 82             	|
+| 83             	|
+| 86             	|
+| 89             	|
+| 93             	|
+| 94             	|
+| 95             	|
+| 97             	|
+| 99             	|
+| 100            	|
+| 101            	|
+| 102            	|
+| 103            	|
+| 104            	|
+| 105            	|
+| 106            	|
+| 107            	|
+| 110            	|
+| 112            	|
+| 114            	|
+| 117            	|
+| 118            	|
+| 119            	|
+| 123            	|
+| 124            	|
+| 125            	|
+| 126            	|
+| 128            	|
+| 129            	|
+| 131            	|
+| 133            	|
+| 134            	|
+| 136            	|
+| 138            	|
+| 141            	|
+| 143            	|
+| 145            	|
+| 146            	|
+| 147            	|
+| 148            	|
+| 151            	|
+| 152            	|
+| 155            	|
+| 157            	|
+| 158            	|
+| 159            	|
+| 161            	|
+| 162            	|
+| 163            	|
+| 168            	|
+| 169            	|
+| 170            	|
+| 172            	|
+| 173            	|
+| 175            	|
+| 176            	|
+| 179            	|
+| 180            	|
+| 181            	|
+| 182            	|
+| 183            	|
+| 184            	|
+| 185            	|
+| 186            	|
+| 187            	|
+| 188            	|
+| 192            	|
+| 194            	|
+| 195            	|
+| 198            	|
+| 199            	|
+| 200            	|
+|                	|
+| Gewicht: 10000 	|
+| Wert: 77876    	|
+| time: 1.18s    	|
\ No newline at end of file
-- 
GitLab