Proseminar Effiziente Algorithmen
Dozent: Prof. Dr. Christian Scheideler
Zeit und Ort: Dienstag, 16:15-17:45, F2.522
Inhalt
Ziel des Proseminars ist es, zu lernen, wie die in der Vorlesung "Datenstrukturen und Algorithmen" vorgestellten Methoden verwendet und erweitert werden können, um algorithmische Probleme, die im renommierten International Collegiate Programming Contest (ICPC) erschienen sind, lösen zu können. Dazu wird es wöchentliche Treffen geben, in denen jeweils eine bestimmte Klasse von Problemen behandelt wird. Weiterhin werden einige dieser Probleme pro Treffen als Hausaufgabe aufgegeben, die von studentischen Teams bestehend aus bis zu 3 Leuten gelöst werden müssen. Jedes Team muss am Ende des Kurses einen der ICPC Wettbewerbe aufarbeiten und die Lösungen in einem Treffen präsentieren. Dabei reicht es, wenn ein Team bestehend aus k Mitgliedern 2k der Probleme eines ICPC Wettbewerbs auswählt.
Schein
Einen Schein bekommt, wer regelmäßig am Proseminar teilnimmt, mindestens 50% der Probleme korrekt gelöst hat, und am Ende die Ausarbeitung und Präsentation von zwei ausgewählten ICPC Problemen besteht. Die Endnote ergibt sich zu je 1/3 aus der Note für die Hausaufgaben, zu 1/3 aus der Ausarbeitung und zu 1/3 aus der Präsentation. Die Note für die Hausaufgaben ergibt sich wie folgt: Für jede korrekt gelöste Hausaufgabe gibt es 1 Punkt, sonst 0 Punkte. 50% der Hausaufgaben ergibt 4.0 und 100% 1.0.
Übersicht über die Themen
- Einführung
- Datenstrukturen
- Zeichenketten
- Sortieren, selektieren und suchen
- Arithmetik und Kombinatorik
- Zahlentheorie
- Graphdurchlauf
- Graphalgorithmen
- Divide & Conquer und Dynamische Programmierung
- Backtracking und Branch-and-Bound
ICPC Wettbewerbe
Einige Beispiele sind:
Alle Wettbewerbe können auf der Webseite https://icpc.global/worldfinals/past-problems gefunden werden. Klickt man auf einen Wettbewerb, wird auch mitgeteilt, wie schwer die Probleme sind, so dass das helfen sollte, einen geeigneten Wettbewerb auszuwählen.
Übungsaufgaben
- Werden in PANDA bekannt gegeben.
Die Probleme können unter http://www.cs.uleth.ca/%7Echeng/contest/hints.html nachgeschlagen und über http://uva.onlinejudge.org/index.php eingereicht werden. Die Programme müssen zusammen mit der Bestätigung des Servers, dass sie akzeptiert worden sind, und den Namen der Gruppenmitglieder bis spätestens zum angegebenen Abgabetag um 14:00 Uhr per Email an den Dozenten geschickt werden (der Zeitstempel der Email zählt).
Hilfsmittel