Praktikum: Diskrete Optimierung
- Dozent:
Prof. Dr. Ernst W. Mayr - Zeit:
Praktikumsbesprechung (2 SWS),
4 Stunden Lösen der Programmieraufgaben (6 SWS) - Raum:
Praktikumsbesprechung im Seminarraum MI 03.11.018,
Lösen der Programmieraufgaben im Rechnerraum MI 03.09.034 - Bereich:
Informatik III - Voraussetzungen:
bestandenes Vordiplom; Grundkenntnisse über Entwurf und Implementierung von Algorithmen, Motivation und Kreativität - Praktikumsleiter:
n.n.
- Anmeldung:
per E-Mail an optprak@in.tum.de (es gibt noch freie Plätze)
- Scheinerwerb:
Schein für Lösen aller Programmieraufgaben (in Zweiergruppen) und mündliche Prüfung am Semesterende - Aufgabenblätter, Skripten, Beispieleingaben
- Abgabestatus
Hintergrund
Unter Diskreter Optimierung versteht man die Suche nach einer optimalen Lösung zu einem Problem mit diskretem Suchraum. Solche Probleme treten in der Praxis an vielen Stellen auf. Als Beispiele seien genannt:- Einplanung von Aufträgen bei Fertigungsstraßen
- Zuteilung von Verbindungen in Kommunikationsnetzwerken
- Berechnung des Chiplayouts bei VLSI

Matching maximaler Kardinalität in einem bipartiten Graphen
Inhalt
Im Rahmen des Praktikums sollen Studierenden zu einem großen Teil verschiedene Graphenalgorithmen effizient implementieren. Während Probleme mit kleinen Eingabegrößen in der Regel auch mit naiven ad hoc Ansätzen gelöst werden können, zeigen sich die Grenzen derartiger Verfahren bei steigender Problemgröße und besonders bei praxisrelevanten Eingabedaten recht schnell. Der Fokus im Praktikum Diskrete Optimierung liegt daher auf der Lösung von Problemen mit großen oder sogar riesigen Eingabeinstanzen. Beispiele für im Praktikum zu lösende Optimierungsprobleme sind:- Minimale Spannbäme
- Kürzeste Pfade
- Matchings
- Netzwerkfluß
- Färbung planarer Graphen
- Approximation des Traveling Salesman Problem
- Suchen von Strings in Texten
- Berechnung der Edit-Distance zweier Strings
- Tieferes Verständnis der Methoden zur Diskreten Optimierung,
- Erfahrungen bei der Entwicklung hochoptimierter Software für rechenintensive Probleme.
- Spaß an der Herausforderung, die bestmögliche Leistung aus dem verfügbaren Rechensystem "herauszukitzeln".
Effiziente Algorithmen und Datenstrukturenund
Effiziente Algorithmen und Datenstrukturen IIbesprochen. Die Vorkenntnisse aus diesem Veranstaltungen sind nützlich, können aber auch parallel zum Praktikum erworben werden. Auf spezielle Fragen, welche die Implementierung betreffen und in den Vorlesungen nur knapp behandelt werden, wird in der Praktikumsbesprechung eingegangen.
Durchführung
Die Studierenden erhalten Aufgabenblätter mit Programmieraufgaben, für deren Bearbeitung eine oder mehrere Wochen zur Verfügung stehen. Die Lösungen sollen in C++ zunächst ohne Verwendung zusätzlicher Bibliotheken programmiert werden. Die Bearbeitung der Praktikumsaufgaben kann entweder auf unseren Lehrstuhl-Rechern (MI 03.09.034), in der Sun-Halle oder auch auf einem Linux-Rechner zu Hause erfolgen (in letzterem Fall muß dann LEDA auf dem Rechner installiert werden). Die Aufgaben sollen in Zweiergruppen bearbeitet werden, wobei wir dringend empfehlen, die Aufgaben nicht aufzuteilen, sondern wirklich in Zusammenarbeit zu lösen und zu implementieren. Bei der Prüfung am Ende des Praktikums wird erwartet, daß jeder Studierende bei allen Praktikumsaufgaben auch zur Implementierung, die von seiner/ihrer Gruppe abgegeben wurde, Fragen beantworten kann. Während des Praktikums findet einmal pro Woche eine zweistündige Besprechung statt, bei der die neuen Aufgaben und die zu implementierenden Algorithmen erläutert werden. Die Abgabe der Lösungen (Source-Codes) erfolgt per E-Mail an optprak@in.tum.de. Die Lösungen werden von einem Betreuer korrigiert, der seine Kommentare und die Bewertung der Lösung dann ebenfalls per E-Mail den Studierenden mitteilt. Fragen der Studierenden bezüglich Algorithmen und etwaigen Problemen bei der Implementierung können entweder in der Praktikumsvorlesung oder direkt mit den Betreuern besprochen werden. Die abgegebenen Lösungen werden nach den folgenden Kriterien beurteilt:- Korrekte Berechnung der gewünschten Ergebnisse
- Effiziente Implementierung, d.h. Einhaltung der angegebenen Worst-Case-Komplexität
- Verständlichkeit und Strukturiertheit des Quelltexts
- die Zweiergruppe muß zu allen Blättern zufriedenstellende Lösungen abgegeben haben
- die mündliche Prüfung am Semesterende muß bestanden werden
Literatur
Unter anderem enthalten folgende Bücher Beschreibungen der im Praktikum zu implementierenden Algorithmen:- Cormen, Leiserson, Rivest. Introduction to Algorithms. MIT Press, 1990
- Turau. Algorithmische Graphentheorie. Addison Wesley, 1996
- Gibbons. Algorithmic Graph Theory. Cambridge University Press, 1985
- Mehlhorn. Data structures and algorithms 2: Graph algorithms and NP-Completeness. Springer-Verlag, 1984
- Papadimitriou, Steiglitz. Combinatorial Optimization: Algorithms and complexity. Prentice-Hall, 1982
- Sedgewick. Algorithms. Addison-Wesley, 1988
- Tarjan. Data Structures and Network Algorithms. SIAM, 1983
- Reingold, Nievergelt, Deo. Combinatorial Algorithms. Prentice-Hall, 1977
- Ahuja, Magnanti, Orlin. Network Flows: Theory, Algorithms, and Applications. Prentice Hall, 1993.