Weihnachtsaufgabenblatt, Rucksackproblem, Sudoku
Transcription
Weihnachtsaufgabenblatt, Rucksackproblem, Sudoku
Universität Bielefeld Technische Fakultät AG Praktische Informatik Übung zu den Vorlesungen Algorithmen & Datenstrukturen Programmieren in Haskell Wintersemester 2011/2012 Allgemeiner Hinweis: Die Punkte die mit der Lösung dieser Aufgaben erreicht werden können, sind Zusatzpunkte. Die Punkte werden zu Euren erzielten Punkten addiert, erhöhen jedoch nicht die 50% Hürde aus der Gesamtpunktzahl. Aufgabe 11.1 (9). Das Rucksackproblem ist das Problem aus einem Haufen von Gegenständen, denen jeweils ein Wert und ein Gewicht zugeordnet ist, diejenigen auszuwählen die in einen Rucksack mit einer Maximalgewichtsangabe x passen, so dass der Gesamtwert des Rucksacks maximiert wird. Implementieren Sie eine Haskell-Programm, das Rucksackprobleminstanzen löst. Eine Funktion soll für eine beliebige Eingabe den optimalen Rucksackwert (und das zugehörige Gewicht) berechnen. Ein weitere Funktion berechnet den konkreten Inhalt von einem optimalen Rucksack für eine Eingabe. Aufgabe 11.2 (10). Implementieren Sie einen Sudoku-Solver in Haskell. Ein Sudoku ist ein 9 × 9 Feld, dessen Zellen mit den Zahlen 1 − 9 gefüllt werden müssen. Dabei müssen alle Zahlen 1 − 9 jeweils in jeder Zeile, jeder Spalte und in jedem der 3 × 3 Blöcke vorkommen. Je nach Schwierigkeit werden wenige oder viele Zahlen vorgegeben. Der Solver soll ein teilausgefülltes Feld als Eingabe bekommen und eine oder mehrere Lösungen ausgeben. Ob alle Lösungen ausgeben werden, soll über einen Parameter konfigurierbar sein. Und eine Beispielausgabe ist: 5 3 4 | 6 7 8 | 9 1 2 6 7 2 | 1 9 5 | 3 4 8 1 9 8 | 3 4 2 | 5 6 7 53..7.... -------+-------+-----6..195... 8 5 9 | 7 6 1 | 4 2 3 .98....6. 4 2 6 | 8 5 3 | 7 9 1 8...6...3 7 1 3 | 9 2 4 | 8 5 6 4..8.3..1 7...2...6 -------+-------+-----.6....28. 9 6 1 | 5 3 7 | 2 8 4 ...419..5 2 8 7 | 4 1 9 | 6 3 5 3 4 5 | 2 8 6 | 1 7 9 ....8..79 Begründen Sie Ihre Modellierungsentscheidungen und wesentliche Implementationseigenschaften. Eine Beispieleingabe ist: Abgabe: Dienstag, 10.1.2012. Bearbeitung in 2er oder 3er Gruppen (alle Namen und Tutor auf die Abgabe schreiben). 1