Datenstrukturen und Algorithmen (MuA)
Aktuell
Modulinformationen
- Modul I.2.2: Datenstrukturen und Algorithmen
- V4 + Ü2 + ZÜ1 SWS (Kontaktzeit)
- 8 ECTS-Credits (Workload)
Für weiterführende Informationen siehe auch den Eintrag im Modulhandbuch.
Inhaltsangabe
Algorithmen bilden die Grundlage jeder Hardware und Software: Ein Schaltkreis setzt einen Algorithmus in Hardware um, ein Programm macht einen Algorithmus "für den Rechner verstehbar". Algorithmen spielen daher eine zentrale Rolle in der Informatik. Wesentliches Ziel des Algorithmenentwurfs ist die (Ressourcen-) Effizienz, d.h. die Entwicklung von Algorithmen, die ein gegebenes Problem möglichst schnell oder mit möglichst geringem Speicherbedarf lösen.
Untrennbar verbunden mit effizienten Algorithmen sind effiziente Datenstrukturen, also Methoden, große Datenmengen im Rechner so zu organisieren, dass Anfragen wie Suchen, Einfügen und Löschen aber auch komplexere Anfragen effizient beantwortet werden können.
Die in dieser Veranstaltung vorgestellten Entwurfs- und Analysemethoden für effiziente Algorithmen und Datenstrukturen, sowie die grundlegenden Beispiele wie Sortierverfahren, dynamische Suchstrukturen und Graphenalgorithmen gehören zu den Grundlagen für Algorithmenentwicklung und Programmierung in weiten Bereichen der Informatik.
Inhaltliche Gliederung:
- Einführung (Rechenmodelle, Effizienzmaße, Beispiele)
- Analysetechniken (Invarianten, Rekurrenzgleichungen)
- Sortieralgorithmen (Insertion-Sort, Merge-Sort, Quick-Sort, Heap-Sort, Counting-Sort)
- Datenstrukturen (Verkette Listen, Bäume, Graphen, Dynamische Suchstrukturen, Suchbäume, Balancierung von Suchbäumen, Hashing)
- Graphenalgorithmen (Tiefen- und Breitensuche, Kürzeste Wege, Minimale Spannbäume)
- Entwurfsparadigmen (Inkrementelle Entwicklung, Teile-und-Herrsche, Greedy Algorithmen, Dynamische Programmierung)
Prüfung
Es werden im Anschluss an die Vorlesung zwei Klausurtermine angeboten.
1. Klausur:
Datum: Dienstag, 05.08.2008
Ort: Sporthalle!!!
Beginn: 09:00 Uhr s.t. (Dauer: 3 Stunden)
Klausur als PDF
2. Klausur
Datum: Mittwoch, 01.10.2008
Ort: C1 + C2 + P1.101
Beginn: 09:00 Uhr
Ende: 12:00 Uhr
Termine
-
Vorlesung:
Tag Zeit Raum Dozent Mo 11:00-13:00 G Robert Elsässer Fr 11:00-13:00 G Robert Elsässer
-
Zentralübung:
Gruppe Tag Zeit Raum Tutor ZÜ Do 13:00-14:00 Audimax Robert Elsässer
-
Übungsgruppen:
Sie müssen sich über Ihren StudInfo{flex}-Zugang zu den Übungen anmelden. Das System wurde am 07.04.2008 kurz vor 13:00 Uhr freigeschaltet. Kurz vor 16:00 Uhr wurde die maximale Anzahl von Teilnehmern in einer Gruppe von 27 auf 30 erhöht. Am 08.04.2008 um 9:20 Uhr wurde die maximale Anzahl von Teilnehmern in jeder Gruppe auf 32 erhöht. Am 13.04.2008 um 18:20 Uhr wurde die Anzahl der Plätze in jeder Übungsgruppe auf 34 erhöht.
Gruppe Tag Zeit Raum Tutor Ü1 Mo 07:00-09:00 E2.310 Marcus Märtens Ü2 Mo 14:00-16:00 D1.312 Marcel Brand Ü3 Mo 14:00-16:00 N3.206 Manuel Hüster Ü4 Mo 14:00-16:00 E2.316 Sebastian Kniesburges Ü5 Mo 16:00-18:00 J2.331 Sebastian Kniesburges Ü6 Mo 16:00-18:00 E2.310 Marcel Ackermann Ü7 Di 09:00-11:00 H4 Max Drees Ü8 Di 16:00-18:00 E2.310 Sebastian Goschin Ü9 Di 16:00-18:00 N3.206 Henning Meyerhenke Ü10 Mi 07:00-09:00 E2.310 Carsten Rösnick Ü11 Mi 14:00-16:00 E2.310 Henning Meyerhenke Ü12 Do 09:00-11:00 E2.316 Jürgen Kaiser Ü13 Do 16:00-18:00 D1.312 Manuel Hüster Ü14 Fr 14:00-16:00 E2.310 Marcel Ackermann
Newsgroup
Die Informatik-Rechnerbetreuung (IRB) hat zu der Vorlesung eine Newsgroup für die Studierenden zur Diskussion zur Verfügung gestellt. Die Organisatoren der Veranstaltung haben keinen Einfluss auf Inhalt und Gestaltung dieser Newsgroup. Bei technischen Problemen können wir Ihnen nicht helfen, wenden sie sich bitte an postmaster@upb.de.
Wichtig: Von unserer Seite aus werden niemals offizielle Ankündigungen in dieser Newsgroup veröffentlicht. Alle offiziellen Informationen befinden sich auf dieser Webseite.
Skript
Die Vorlesung orientiert sich in Notation und Aufbau an dem Grundlagenbuch "Introduction to Algorithms" von Cormen, Leiserson, Rivest und Stein (2. Auflage).
Zur Nacharbeit und Vertiefung wird die unten angegebene Literatur empfohlen.
Folien
Hier erscheint im Laufe des Semesters die Folien-Präsentation der einzelnen Vorlesungen. Bitte beachten Sie, dass diese nur zur Unterstützung der Vorlesung gedacht sind und keinen selbsterklärenden Charakter besitzen. Ein alleiniges Lernen an Hand dieser Folien kann den Besuch der Vorlesung und die Lektüre der angegebenen Literatur nicht ersetzen und wird im Allgemeinen zum Bestehen der Prüfung nicht ausreichen.
Die Literaturangaben [CLRS 2nd] beziehen sich immer auf Cormen, Leiserson, Rivest, Stein, "Introduction to Algorithms", 2. Auflage. Jedoch verfügen auch die anderen Grundlagenbücher i.d.R. über Abschnitte zu den behandelten Inhalten.
| Vorlesung | Folien (als PDF) | Literatur |
|---|---|---|
| 07.04.2008 | Einleitung, Pseudocode, Invarianten, Laufzeitanalyse, Groß-O-Notation | [CLRS 2nd]: Seite 3-22, 41-50, 184-185 |
| 11.04.2008 |
Inkrementelle Algorithmen, Insertion-Sort, Divide & Conquer Algorithmen, Merge-Sort |
[CLRS 2nd]: Seite 15-18, 23-25 [CLRS 2nd]: Seite 28-36 |
| 14.04.2008 | Average-Case Analyse, Elementare Wahrscheinlichkeitstheorie | [CLRS 2nd]: Seite 1100-1109 |
| 18.04.2008 | Quick-Sort, Master Theorem | [CLRS 2nd]: Seite 145-158, 62-74 |
| 21.04.2008 | Heaps, Heap-Sort | [CLRS 2nd]: Seite 127-138 |
| 25.04.2008 | Heaps, Heap-Sort | [CLRS 2nd]: Seite 127-138 |
| 28.04.2008 | Untere Schranke für Vergleichssortierer, Counting-Sort | [CLRS 2nd]: Seite 165-170 |
| 02.05.2008 | Korrektheit von Counting Sort, ADTs und Datenstrukturen | [CLRS 2nd]: Seite 165-170 |
| 05.05.2008 | Stacks, Queues, Listen, Bäume, Binäre Suchbäume | [CLRS 2nd]: Seite 197-209, 214-216, 253-264 |
| 09.05.2008 | AVL-Bäume | [Ottmann, Widmeyer]: Seite 260-272 |
| 16.05.2008 | Hashtabellen | [CLRS 2nd]: Seite 221-232, 237-245 |
| 19.05.2008 | Hashtabellen | [CLRS 2nd]: Seite 221-322, 237-245 |
| 23.05.2008 |
Elementare Graphalgorithmen, Breitensuche | [CLRS 2nd]: Seite 525-538 |
| 26.05.2008 | Tiefensuche | [CLRS 2nd]: Seite 540-549 |
| 30.05.2008 | Topologisches Sortieren, Kürzeste Wege | [CLRS 2nd]: Seite 549-551, 580-583 |
| 06.06.2008 | Kürzeste Wege, Algorithmus von Dijkstra, Transitive Hülle | [CLRS 2nd]: Seite 584-587, 595-599, 632-633 |
| 09.06.2008 | Transitive Hülle, Minimale Spannbäume | [CLRS 2nd]: Seite 632-633, 561-563 |
| 13.06.2008 |
Algorithmus von Prim und Kruskal, Disjunkte Vereinigungsmengen | [CLRS 2nd]: Seite 563-573, 498-503 |
| 16.06.2008 |
Algorithmus von Kruskal, Union-Find, All Pairs Shortest Path | [CLRS 2nd]: Seite: 503-504, 620-621, 629-630 |
| 20.06.2008 |
All Pairs Shortest Path, Divide and Conquer, Matrix Multiplikation | [CLRS 2nd]: Seite 630-632, 735 |
| 23.06.2008 | Matrix Multiplikation | [CLRS 2nd]: Seite 735-741 |
| 27.06.2008 | Gierige Algorithmen, Schedulingprobleme | [CLRS 2nd]: Seite |
| 30.06.2008 | Mehr-Prozessor Scheduling, Interval Scheduling | [Kleinberg, Tardos]: Seite 115-121 |
| 04.07.2008 | Datenkompression | [CLRS 2nd]: Seite 385-391 |
| 07.07.2008 | Dynamische Programmierung, Längste gemeinsame Teilfolge | [CLRS 2nd]: Seite: 323-324, 350-355 |
| 11.07.2008 | Subset Sum | [Kleinberg, Tardos]: Seite: 266-272 |
| 14.07.2008 | Rucksack-Problem | [Kleinberg, Tardos]: Seite: 266-272 |
| 18.07.2008 | Zusammenfassung | [CLRS 2nd]: |
Aufgaben
Hier erscheinen im Laufe des Semesters die Übungen zur Vertiefung des Lehrstoffes. Im Rahmen der Zentralübung werden jede Woche die meisten Aufgaben besprochen.
| Übung (als PDF) | Ausgewählte Musterlösungen (als PDF) |
|---|---|
| 1. Übung | 1. Musterlösung |
| 2. Übung | 2. Musterlösung |
| 3. Übung | 3. Musterlösung |
| 4. Übung | 4. Musterlösung |
| 5. Übung | 5. Musterlösung |
| 6. Übung | 6. Musterlösung |
| 7. Übung | 7. Musterlösung |
| 8. Übung | 8. Musterlösung |
| 9. Übung | 9. Musterlösung |
| 10. Übung | 10. Musterlösung |
| 11. Übung | 11. Musterlösung |
Wir fordern Sie ausdrücklich auf, in kleinen Gruppen (2-4 Personen) gemeinsam die Vorlesung nachzuarbeiten und die Übungen zu bearbeiten. Für den Lernerfolg (und den Spaß am Studieren) ist das sehr förderlich. Sie dürfen Ihre Übungen auch in solchen Gruppen abgeben. Übungszettel, bei welchen jedoch mehr als 4 Personen angegeben sind, werden mit 0 Punkten gewertet.
Bonuspunkte
Durch aktive Mitarbeit in den Übungen haben Sie die Möglichkeit, ihre in der abschließenden Prüfung erreichte Note wie folgt zu verbessern:
- Erreichen Sie mindestens 50% der Punkte der Übungsaufgaben, so verbessert sich die Note der Prüfung um 1/3 (ein Notenschritt).
- Erreichen Sie mindestens 75% der Punkte der Übungsaufgaben, so verbessert sich die Note der Prüfung um 2/3 (zwei Notenschritte).
- Erreichen Sie mindestens 90% der Punkte der Übungsaufgaben, so verbessert sich die Note der Prüfung um 3/3 (drei Notenschritte).
- Eine Verbesserung über die Note 1,0 (sehr gut) hinaus ist nicht möglich.
- WICHTIG: Eine Verbesserung der Prüfungsnote 5,0 (nicht bestanden) ist nicht möglich.
Literatur
- Cormen, Leiserson, Rivest, Stein: "Introduction to Algorithms",
MIT Press / McGraw-Hill, 2nd ed., ISBN: 0-262-53196-8 - Cormen, Leiserson, Rivest: "Algorithmen - Eine Einführung",
Oldenburg, ISBN: 3-486-27515-1 - Kleinberg, Tardos: "Algorithm Design"
Addison-Wesley, ISBN: 0-321-29535-8 - Sedgewick: "Algorithms in Java (parts 1-4)",
Addison-Wesley, ISBN: 0-201-36120-5 - Ottmann, Widmeyer: "Algorithmen und Datenstrukturen",
Spektrum Akademischer Verlag, ISBN: 3-321-29535-8



