Algorithmentechnik
Allgemeines
- Dozentin: Prof. Dr. Dorothea Wagner
- Vorlesung: Wöchentlich dienstags 15.45-17.15 und 14-täglich donnerstags 15.45-17.15 im HMU
vom 25.10.2005 bis 16.02.2006 - Übung: 14-täglich donnerstags 15.45-17.15 im HMU
- Klausur: i3v
Die Vorlesung Algorithmentechnik vertieft die wichtigsten Teilgebiete der Algorithmik. Dazu gehören Graphenalgorithmen, Algorithmische Geometrie, Algebraische Algorithmen, Kombinatorische Optimierung sowie fortgeschrittene Datenstrukturen. Es werden verschiedene methodische Richtungen vertieft, z.B. randomisierte Algorithmen, Approximationsalgorithmen, parallele Algorithmen, Online-Algorithmen und Algorithm Engineering.
Neueste Meldungen
- Klausureinsicht: Mi, 03.05.06, 14:00-16:00, SR 301 im Infobau
- 20. Apr.:Klausurergebnisse der 2. Klausur hängen in Gebäude 50.34 im Foyer und im dritten Stock aus
- 10. Jan.: Neuigkeiten zum Programmierprojekt
Termine
Di | Do | ||
---|---|---|---|
25.10. | Vorlesung | 27.10. | Vorlesung |
1.11. | Feiertag | 3.11. | Vorlesung |
8.11. | Vorlesung | 10.11. | Übung |
15.11. | Vorlesung | 17.11. | Vorlesung |
22.11. | Vorlesung | 24.11. | Übung |
29.11. | Vorlesung | 1.12. | Vorlesung |
6.12. | Vorlesung | 8.12. | Übung |
13.12. | Vorlesung | 15.12. | Vorlesung |
20.12. | Vorlesung | 22.12. | Übung |
10.1. | Vorlesung | 12.1. | Vorlesung |
17.1. | Vorlesung | 19.1. | Übung |
24.1. | Vorlesung | 26.1. | Vorlesung |
31.1. | Vorlesung | 2.2. | Übung |
7.2. | Vorlesung | 9.2. | Vorlesung |
14.2. | Vorlesung | 16.2. | Übung |
Änderungen vorbehalten!
Folien und Skripte
- Skript zur Vorlesung Revision 4 (vorläufig endgültige Version), Changelog
- Skript zur Vorlesung "Entwurf und Analyse von Algorithmen", entspricht nicht dem Vorlesungsskript.
- Kurzskripte zur Wiederholung wichtiger Begriffe: Algorithmen und ihre Laufzeit, Begriffe zu Graphen, Die Komplexitätsklassen //P, NP// und //NPC//
Übungen
Es wird alle 14 Tage ein Übungsblatt geben. Die Lösungen der Aufgaben wird in der Übung vorgestellt. Zudem werden dort ausgewählte Themen der Vorlesung nochmals vertieft. Die Teilnehmer können per Abstimmung auf die in der Übung behandelten Themen Einfluss nehmen. Übungsblätter können abgegeben werden, und werden dann auch korrigiert.
Klausur
- Zweite Klausur vom 18.04.06, und Lösung
- Klausurergebnisse der zweiten Klausur (Schnitt 3,32; Schnitt Bestandene: 2,84)
Punkte | Note | Anzahl |
---|---|---|
39 | 1 | 7 |
37 | 1,3 | 3 |
34 | 1,7 | 1 |
32 | 2 | 2 |
30 | 2,3 | 5 |
27 | 2,7 | 3 |
25 | 3 | 5 |
23 | 3,3 | 1 |
20 | 3,7 | 11 |
18 | 4 | 11 |
<18 | 5 | 14 |
- Erste Klausur vom 09.03.06, und Lösung
- Klausurergebnisse der ersten Klausur (Schnitt 3,23; Schnitt bestandene 2,78)
Punkte | Note | Anzahl |
---|---|---|
36 | 1 | 6 |
34 | 1,3 | 4 |
31 | 1,7 | 4 |
29 | 2 | 6 |
27 | 2,3 | 5 |
24 | 2,7 | 8 |
22 | 3 | 5 |
20 | 3,3 | 12 |
17 | 3,7 | 14 |
15 | 4 | 7 |
<15 | 5 | 18 |
Abstimmung
Welches Thema aus der Vorlesung hat Ihnen am besten gefallen?
Grundlagen | 7 | 4,61 % | |
Union-Find | 13 | 8,55 % | |
Heaps | 24 | 15,79 % | |
MSTs | 14 | 9,21 % | |
Schnitte | 3 | 1,97 % | |
Flussprobleme | 17 | 11,18 % | |
Kreisbasen | 48 | 31,58 % | |
Lineare Programmierung | 10 | 6,58 % | |
Approximierende Algorithmen | 3 | 1,97 % | |
Randomisierte Algorithmen | 13 | 8,55 % |
Stimmen gesamt: 152
Welches Thema aus der Vorlesung hat Ihnen am wenigsten gefallen?
Grundlagen | 6 | 4,05 % | |
Union-Find | 13 | 8,78 % | |
Heaps | 9 | 6,08 % | |
MSTs | 14 | 9,46 % | |
Schnitte | 7 | 4,73 % | |
Flussprobleme | 8 | 5,41 % | |
Kreisbasen | 38 | 25,68 % | |
Lineare Programmierung | 18 | 12,16 % | |
Approximierende Algorithmen | 21 | 14,19 % | |
Randomisierte Algorithmen | 14 | 9,46 % |
Stimmen gesamt: 148
Vorlesungen
Datum | Thema | Material | Literatur |
---|---|---|---|
25.10. | Worst-case- und Average-case-Laufzeit | Kurzskript | [CLR01] |
27.10. | Untere Schranke für Laufzeiten, Amortisierte Analyse, Rekursionsabschätzungen | SkriptAlt (6.3, 2, 1) | [CLR01] |
3.11. | Master Theorem, Select, Union Find | SkriptAlt (1.3.2, 3.1) | [S01, CLR01] |
8.11. | Union Find Laufzeitbeweis | SkriptAlt (3.1) | [CLR01] |
15.11. | Union Find Anwendungen | SkriptAlt (3.2) | [CLR01] |
17.11. | Priority Queues und Heaps | [CLR01] | |
22.11. | Minimale aufspannende Bäume | SkriptAlt (4) | [CLR01] |
29.11. | MSTs | SkriptAlt (4) | [CLR01] |
1.12. | Greedy Verfahren und Matroide | SkriptAlt (4) | [CLR01] |
6.12. | Schnitte in Graphen | SkriptAlt (5) | [CLR01] |
13.12. | Flussprobleme: Max-Flow Min-Cut, Algorithmen von Ford/Fulkerson, Edmonds/Karp, Goldberg/Tarjan | Flusskapitel, Vorlesungsfolien Teil 1 | [CLR01, Tar83] |
15.12. | Flussprobleme: Goldberg/Tarjan und Anwendungsbeispiel | Flusskapitel, Vorlesungsfolien Teil 2 | [CLR01, Tar83] |
20.12. | Periodische Fahrpläne und Kreise in Graphen | Vorlesungsfolien | |
10.1. | Kreisbasen: Einführung und Algorithmus von Horton | Neues Skript, Kapitel 5.1 bis 5.3 | [Deo04, Bol98, Hor87] |
12.1. | Kreisbasen: Algorithmen von Horton und de Pina | Neues Skript, Kapitel 5.3 und 5.4 | [Hor87, dP95, Kav04] |
17.1. | Kreisbasen: Simple MCB | Neues Skript, Kapitel 5.4 | [Kav04] |
24.1. | Kreisbasen: Zertifikate; Lineare Programme | Neues Skript, Kapitel 5.5 und Kapitel 6 | [Kav04] und [CLR01, V04] |
26.1. | Geometrische Repräsentation von LPs | Neues Skript Kapitel 6 | [CLR01, V04] |
31.1. | Approximationsalgorithmen, PAS | Neues Skript Kapitel 7 | [CLR01, A99] |
7.2. | Approximationsalgorithmen, APAS, FPAS | Neues Skript Kapitel 7 | [CLR01, A99] |
14.2. | Randomisierte Algorithmen | Neues Skript Kapitel 8 | [CLR01, A99] |
Programmierprojekt
In disem Programmierprojekt soll der Algorithmus von Goldberg und Tarjan (und möglicherweise weitere Algorithmen) implementiert und visualisiert werden. Die Teilnahme ist freiwillig. Die besten Lösungen werden vorgestellt und möglicherweise auf dem „visualization contest“ einer Konferenz eingesetzt und/oder als „Algorithmus der Woche“ im Rahmen des Informatikjahrs veröffentlicht.
- Demo anschauen: zip entpacken und README-Datei lesen (Java3d erforderlich).
- Der Goldberg-Tarjan-Algorithmus soll mit Java implementiert werden und auf einem DirectedGraph-Objekt operieren. Der Algorithmus soll folgende Funktionen unterstützen (Interface „StepwiseAlgorithm“):
- public void init(String filename);
Initialisieren des Algorithmus und Übergabe der .graphml-Datei. - public void nextStep();
Einen Schritt im Algorithmus durchführen (also einen Push oder Relabel). - public void previousStep();
Einen Schritt zurück. - public boolean finished();
True wenn der Algorithmus fertig ist. - public boolean atStart();
True wenn der Algorithmus am Anfang ist.
- Dreidimensionale Visualisierung der Schritte des Algorithmus auf dem Graphen mit Hilfe von Java3d. Dazu müssen zusätzlich folgende Funktionen unterstützt werden (interface „Scene3DProvider“):
- public Vector3d getStartPosition();
Startpunkt der Kamera - public BranchGroup getChild();
Gibt den Wurzelknoten der Java3d-Szene zurück.
- Dazu wird von uns ein Frontend zur Navigation durch den Graphen zur Verfügung gestellt.
Es kann in Teams gearbeitet werden und sollte schlank und sauber programmiert werden. Deadline für die Abgabe ist der 9. Februar. Wir bitten schon vorher um eine kurze Rückmeldung mit evtl. Fragen damit wir eine Vorstellung von der Anzahl möglicher Teilnehmer haben.
Referenzen:
- Archiv mit den notwendigen Bibliotheken und Demoimplementation einer Breitensuche (zip). Für Hinweise zur Ausführung und Implementation bitte die README-Datei im Archiv lesen!
- Eine andere Bibliothek zur Visualisierung von Algorithmen: jGABL, unter anderem mit einer Implementation von Goldberg-Tarjan.
Literatur
[CLR01] | T. H. Cormen, C. E. Leiserson, R. L. Rivest u.a. Introduction to Algorithms / Algorithmen -- eine Einführung. MIT Press, 1990-2001 / Oldenburg 2004. |
[OW90] | Thomas Ottmann und Peter Widmayer. Algorithmen und Datenstrukturen. Spektrum, Akad. Verl., 1990-2002. |
[Tar83] | Robert E. Tarjan. Data structures and network algorithms. Society for Industrial and Applied Mathematics, 1983. |
[S01] | Uwe Schöning. Algorithmik. Spektrum Akademischer Verlag, 2001. |
[B05] | Norbert Blum. Algorithmen und Datenstrukturen. Oldenbourg Verlag, 2004. |
[A99] | Giorgio Ausiello et al. Complexity and Approximation. Springer Verlag, 1999. |
[H01] | Juraj Hromkovic. Algorithmics for Hard Problems. Springer Verlag, 2001. |
[O98] | Thomas Ottmann. Prinzipien des Algorithmenentwurfs. Spektrum Akademischer Verlag, 1998. |
[Hor87] | J. D. Horton A polynomial-time algorithm to find the shortest cycle basis of a graph. SIAM Journal on Computing Vol. 16, Issue 12, 1987. |
[Kav04] | T. Kavitha, K. Mehlhorn, D. Michail, K. Paluch. A faster algorithm for Minimum Cycle Basis of graphs. Proc. ICALP 2004, Turku, Finland, 2004. |
[V04] | Berthold Vöcking. Crashkurs Lineare Programmierung. Vorlesungsnotizen, 2004. |