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)

Blatt 3
Blatt 4

 


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.

       © Burchard v. Braunmühl / Xizhong Zheng