Effiziente Algorithmen I
Vorlesung und Übungen 4+2, WS
05/06
Säule: Grundlagen der Informatik
Priv. Doz. Dr. Xizhong Zheng
| Termine: |
Montags |
11.30-13.00 |
EHS 213 |
Vorlesung |
| |
Mittwochs |
11.30-13.00 |
EHS 214 |
Vorlesung |
| |
Freitags |
11.30-13.00 |
EHS 213 |
Übung
|
Anmelden
in LEHVIS
Modulbeschreibung
Prüfung
Mündliches Prüfungsgespräch im
zweiten Prüfungszeitraum des Wintersemesters (20.03.-01.04.2006).
Die konkreten Termine werden am Ende der Vorlesungszeit vergeben
(Termine in der ersten und in der zweiten Woche).
Termine: Dienstag,
21 März 2006, 10.00-17.00 oder Donnerstag, 30. März 2006,
10.00-17.00.
Bitte in die bereitliegenden Listen auf dem Sekretariat des
Lehrstuhls "Theoretische Informatik" (Ewald-Haase-Straße 12/13,
Raum 110) eintragen.
Übungsblätter (pdf-Version)
Es werden unterschiedliche Typen von Algorithmen
besprochen und die ihnen zugrunde liegenden Datenstrukturen
und Strategien. Von Bedeutung sind hierbei Korrektheitsbeweise,
die Aufwandsanalyse der Algorithmen sowie obere und untere Schranken
der zu lösenden Probleme.
-
Grundlagen, Datenstrukturen
-
die algorithmischen Methoden:
Greedy, Divide-and-Conquer, Balancing, Dynamisches Programmieren.
-
Beispiel Sortieren
-
Methoden der Aufwandsanalyse
-
Rekursionsgleichungen
-
Obere und untere Schranken
(Upper Bounds, Lower Bounds)
-
Graphenalgorithmen: Spannbäume,
kürzeste Pfade, Flüsse in Netzen.
-
Sortiernetzwerke
-
String matching
-
Union-Find-Algorithmus
(Beispiel für untere Schranke)
-
Arithmetische Algorithmen:
schnelle Matrizenmultiplikation und -inversion, schnelle
diskrete Fouriertransformation, Polynom- und Integermultiplikation,
Primzahltest.
-
Approximationsalgorithmen
-
Probabilistische Algorithmen
(Monte Carlo, Las Vegas)
Literatur
Es gibt eine Unzahl an Büchern über
Datenstrukturen und Algorithmen, aber auch eine Unzahl an Algorithmen
und algorithmischen Ideen, aus denen eine Auswahl zu treffen,
immer unbefriedigend bleibt, zumal dieses Gebiet keine einheitliche
Theorie darstellt, sondern von der Fülle der Einzelideen
lebt. So wollen wir hier nur einige Werke nennen, mit denen
man einen Anfang machen kann.
Donald E. Knuth: The Art of Computer Programming 1 - 3 ,
Addison-Wesley 1973.
Der Autor ist berühmt geworden, nicht zuletzt durch
dieses große Werk, an dem der Autor viele Jahre gearbeitet
hat, und das von manchen für die Bibel der Informatik gehalten
wird. Er ist auch der Schöpfer von TEX, einer Programmiersprache
für den Entwurf mathematischer Texte.
Kurt Mehlhorn: Effiziente Algorithmen, Teubner Studienbücher
Informatik 1977.
Dieses Taschenbuch hat der Autor vor seinem größeren
Werk unten geschrieben. Es ist klein und empfehlenswert.
Ellis Horowitz, Sartaj Sahni: Fundamentals
of Computer Algorithms, Computer Sciences Press, 1978
Ein altes, aber schönes und recht bekannt
gewordenes Buch, das nicht zu schwer zu lesen ist.
Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman: Data
Structures and Algorithms, Addison-Wesley 1983.
Ein schmaleres, aber ebenfalls gut geschriebenes Buch von
drei erfahrenen Autoren, die schon andere empfehlenswerte Bücher
geschrieben haben.
Kurt Mehlhorn: Data Structures and Algorithms 1 - 3,
Springer 1984.
Ein umfangreiches, ausführlich geschriebenes Werk, das
denen zu empfehlen ist, die mehr wissen wollen, als das, was
in dieser Vorlesung vorgestellt wird.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest:
Introduction to Algorithms, MIT-Press, McGraw-Hill
1989.
Ein sehr dickes und sehr ausführlich geschriebenes Buch
von drei renommierten Wissenschaftlern.
Thomas Ottman, Peter Widmayer: Algorithmen und Datenstrukturen,
Spektrum Akademischer Verlag, 1993.
Ein gut geschriebenes Buch, das vieles über Hashing,
Bäume, geometrische und Graphen-Algorithmen enthält.