|
|
| Line 1: |
Line 1: |
| − | == Vorlesung Algorithmen und Datenstrukturen == | + | UupFRF <a href="http://avdwvmkgsdna.com/">avdwvmkgsdna</a>, [url=http://djniwkhdfnuj.com/]djniwkhdfnuj[/url], [link=http://mojnvllmesvw.com/]mojnvllmesvw[/link], http://rhymaiiarndg.com/ |
| − | | |
| − | | |
| − | Dr. Ullrich Köthe, Universität Heidelberg, Sommersemester 2008
| |
| − | | |
| − | Die Vorlesung findet '''mittwochs''' um 11:15 Uhr in INF 227, HS 2 und '''donnerstags''' um 11:15 Uhr in INF 308, HS 2 statt.
| |
| − | | |
| − | === Klausur und Nachprüfung ===
| |
| − | | |
| − | Die '''Abschlussklausur''' findet am Mittwoch, dem 23.7.2008 von 10:00 bis 12:30 Uhr im HS1, INF 227 (KIP) statt. (Hinweis: Sie benötigen einen Lichtbildausweis, um sich bei der Klausur zu indentifizieren!)
| |
| − | | |
| − | * '''[[Media:Prüfungsteilnehmer.pdf|Liste der Studenten]], die sich verbindlich zur Klausur angemeldet und die notwendige Übungspunktzahl erreicht haben.'''
| |
| − | * '''[[Media:Ergebnis-Klausur-23-07-2008.pdf|Ergebnis der Klausur vom 23.7.2008]]''' (anonymisiert)
| |
| − | * '''Scheine''' können ab 1.9.2008 im Sekretariat Informatik bei Frau Tenschert abgeholt werden.
| |
| − | * Die '''Wiederholungsklausur''' findet am 1.10.2008 um 9:00 Uhr im Seminarraum des [http://hci.iwr.uni-heidelberg.de/contact.php HCI, Speyerer Str. 4], statt.
| |
| − | | |
| − | === Leistungsnachweise ===
| |
| − | Für alle Leistungsnachweise ist die erfolgreiche Teilnahme an den Übungen erforderlich. Für Leistungspunkte bzw. den Klausurschein muss außerdem die schriftliche Prüfung bestanden werden. Im einzelnen können erworben werden:
| |
| − | * ein benoteter Übungsschein (Magister mit Computerlinguistik im ''Nebenfach'', Physik Diplom)
| |
| − | * ein Klausurschein (Magister mit Computerlinguistik im ''Hauptfach'')
| |
| − | * ein Leistungsnachweis über 9 Leistungspunkte (B.A. Computerlinguistik - alte Studienordnung)
| |
| − | * ein Leistungsnachweis über 8 Leistungspunkte (B.Sc. Informatik, B.A. Computerlinguistik - neue Studienordnung)
| |
| − | * ein Leistungsnachweis über 7 Leistungspunkte (B.Sc. Physik).
| |
| − | | |
| − | === Übungsbetrieb ===
| |
| − | * Termine der Übungsgruppen:
| |
| − | ** Mo 11:00 - 13:00 Uhr, INF 350 (Otto-Meyerhof-Zentrum, Seiteneingang), Raum 014 (Tutor: Rahul Nair, [mailto:rnair(at)gmx(punkt)de rnair (at) gmx (punkt) de])
| |
| − | ** Di 11:00 - 13:00 Uhr, INF 350 (Otto-Meyerhof-Zentrum, Seiteneingang), Raum 014 (Tutor: Thomas Gerlach, [mailto:gerlach@kip.uni-heidelberg.de gerlach@kip.uni-heidelberg.de])
| |
| − | ** Mi 14:00 - 16:00 Uhr, '''neu: INF 327, Raum SR 5''' (Tutor: Christoph Sommer, [mailto:christoph.sommer@iwr.uni-heidelberg.de christoph.sommer@iwr.uni-heidelberg.de])
| |
| − | ** Do 14:00 - 16:00 Uhr, INF 294, Raum -113 (im Untergeschoss, Tutor: Daniel Kondermann, [mailto:daniel.kondermann@iwr.uni-heidelberg.de daniel.kondermann@iwr.uni-heidelberg.de])
| |
| − | * [[Main Page#Übungsaufgaben|Übungsaufgaben]] (Übungszettel mit Abgabetermin, Musterlösungen)
| |
| − | * [[Media:Punktestand.pdf|aktueller Punktestand]] (PDF, anonymisiert, so aktuell, wie von den Tutoren an mich übermittelt -- UK)
| |
| − | * Zur Klausur wird zugelassen, wer mindestens 50% der Übungspunkte erreicht. Außerdem muss jeder Teilnehmer eine Lösung (bzw. einen Teil davon) in der Übungsgruppe vorrechnen. Es gibt verschiedene Möglichkeiten, Zusatzpunkte zu erlangen (Bonusaufgaben, Anfertigung der Wiki-Seiten, gute Mitarbeit in den Übungen).
| |
| − | | |
| − | === Prüfungsvorbereitung ===
| |
| − | | |
| − | Zur Hilfe bei der Prüfungsvorbereitung hat Andreas Fay [http://de.neemoy.com/quizcategories/31/ Quizfragen] erstellt.
| |
| − | | |
| − | === Literatur ===
| |
| − | | |
| − | * R. Sedgewick: Algorithmen (empfohlen für den ersten Teil, bis einschließlich Graphenalgorithmen)
| |
| − | * J. Kleinberg, E.Tardos: Algorithm Design (empfohlen für den zweiten Teil, einschließlich Graphenalgorithmen)
| |
| − | * T. Cormen, C. Leiserson, R.Rivest: Algorithmen - eine Einführung (empfohlen zum Thema Komplexität)
| |
| − | * Wikipedia und andere Internetseiten (sehr gute Seiten über viele Algorithmen und Datenstrukturen)
| |
| − | | |
| − | === Gliederung der Vorlesung ===
| |
| − | <!------------->
| |
| − | # [[Einführung]] (9.4.2008)
| |
| − | #* Definition von Algorithmen und Datenstrukturen, Geschichte
| |
| − | #* Fundamentale Algorithmen: create, assign, copy, swap, compare etc.
| |
| − | #* Fundamentale Datenstrukturen: Zahlen, Container, Handles
| |
| − | #* Python-Grundlagen
| |
| − | <!------------->
| |
| − | # [[Container]] (10.4.2008)
| |
| − | #* Anforderungen von Algorithmen an Container
| |
| − | #* Einteilung der Container
| |
| − | #* Grundlegende Container: Array, verkettete Liste, Stack und Queue
| |
| − | #* Sequenzen und Intervalle (Ranges)
| |
| − | <!------------->
| |
| − | # [[Sortieren]] (16. und 17.4.2008)
| |
| − | #* Spezifikation des Sortierproblems
| |
| − | #* Selection Sort und Insertion Sort
| |
| − | #* Merge Sort
| |
| − | #* Quick Sort und seine Varianten
| |
| − | #* Vergleich der Anzahl der benötigten Schritte
| |
| − | #* Laufzeitmessung in Python
| |
| − | <!------------->
| |
| − | # [[Korrektheit]] (23. - 30.4.2008)
| |
| − | #* Definition von Korrektheit, Algorithmen-Spezifikation
| |
| − | #* Korrektheitsbeweise versus Testen
| |
| − | #* Vor- und Nachbedingungen, Invarianten, Programming by contract
| |
| − | #* Testen, Execution paths, Unit Tests in Python
| |
| − | #* Ausnahmen (exceptions) und Ausnahmebehandlung in Python
| |
| − | <!------------->
| |
| − | # [[Effizienz]] (30.4. - 14.5.2008)
| |
| − | #* Laufzeit und Optimierung: Innere Schleife, Caches, locality of reference
| |
| − | #* Laufzeit versus Komplexität
| |
| − | #* Landausymbole (O-Notation, <math>\Omega</math>-Notation, <math>\Theta</math>-Notation), Komplexitätsklassen
| |
| − | #* Bester, schlechtester, durchschnittlicher Fall
| |
| − | #* Amortisierte Komplexität
| |
| − | <!------------->
| |
| − | # [[Suchen]] (14. - 21.5.2008)
| |
| − | #* Lineare Suche
| |
| − | #* Binäre Suche in sortierten Arrays, Medianproblem
| |
| − | #* Suchbäume, balancierte Bäume
| |
| − | #* selbst-balancierende Bäume, Rotationen
| |
| − | #* Komplexität der Suche
| |
| − | <!------------->
| |
| − | # [[Prioritätswarteschlangen]] (28.5.2008)
| |
| − | #* Heap-Datenstruktur
| |
| − | #* Einfüge- und Löschoperationen
| |
| − | #* Heapsort
| |
| − | #* Komplexität des Heaps
| |
| − | <!------------->
| |
| − | # [[Hashing und assoziative Arrays]] (29.5.und 4.6.2008)
| |
| − | #* Implementation assoziativer Arrays mit Bäumen
| |
| − | #* Hashing und Hashfunktionen
| |
| − | #* Implementation assoziativer Arrays als Hashtabelle mit linearer Verkettung bzw. mit offener Adressierung
| |
| − | #* Anwendung des Hashing zur String-Suche: Rabin-Karp-Algorithmus
| |
| − | <!------------->
| |
| − | # [[Iteration versus Rekursion]] (5.6.2008)
| |
| − | #* Typen der Rekursion und ihre Umwandlung in Iteration
| |
| − | #* Auflösung rekursiver Formeln mittels Master-Methode und Substitutionsmethode
| |
| − | <!------------->
| |
| − | # [[Generizität]] (11.6.2008)
| |
| − | #* Abstrakte Datentypen, Typspezifikation
| |
| − | #* Required Interface versus Offered Interface
| |
| − | #* Adapter und Typattribute, Funktoren
| |
| − | #* Beispiel: Algebraische Konzepte und Zahlendatentypen
| |
| − | #* Operator overloading in Python
| |
| − | <!------------->
| |
| − | # [[Graphen und Graphenalgorithmen]] (12. bis 2.7.2008)
| |
| − | #* Einführung
| |
| − | #* Graphendatenstrukturen, Adjazenzlisten und Adjazenzmatrizen
| |
| − | #* Gerichtete und ungerichtete Graphen
| |
| − | #* Vollständige Graphen
| |
| − | #* Planare Graphen, duale Graphen
| |
| − | #* Pfade, Zyklen
| |
| − | #* Tiefensuche und Breitensuche
| |
| − | #* Zusammenhang, Komponenten
| |
| − | #* Gewichtete Graphen
| |
| − | #* Minimaler Spannbaum
| |
| − | #* Kürzeste Wege, Best-first search (Dijkstra)
| |
| − | #* Most-Promising-first search (A*)
| |
| − | #* Problem des Handlungsreisenden, exakte Algorithmen (erschöpfende Suche, Branch-and-Bound-Methode) und Approximationen
| |
| − | #* Erfüllbarkeitsproblem, Darstellung des 2-SAT-Problems durch gerichtete Graphen, stark zusammenhängende Komponenten
| |
| − | <!------------->
| |
| − | <!---#* Repetition--->
| |
| − | <!---#* Orthogonale Zerlegung des Problems--->
| |
| − | <!---#* Hierarchische Zerlegung der Daten (Divide and Conquer)--->
| |
| − | <!---#* Randomisierung--->
| |
| − | <!---#* Optimierung, Zielfunktionen--->
| |
| − | <!---#* Systematisierung von Algorithmen aus der bisherigen Vorlesung--->
| |
| − | <!------------->
| |
| − | <!---# [[Analytische Optimierung]] (25.6.2008)--->
| |
| − | <!---#* Methode der kleinsten Quadrate--->
| |
| − | <!---#* Approximation von Geraden--->
| |
| − | <!------------->
| |
| − | # [[Randomisierte Algorithmen]] (3. und 9.7.2008)
| |
| − | #* Zufallszahlen, Zyklenlänge, Pitfalls
| |
| − | #* Zufallszahlengeneratoren: linear congruential generator, Mersenne Twister
| |
| − | #* Randomisierte vs. deterministische Algorithmen
| |
| − | #* Las Vegas vs. Monte Carlo Algorithmen
| |
| − | #* Beispiel für Las Vegas: Randomisiertes Quicksort
| |
| − | #* Beispiele für Monte Carlo: Randomisierte Lösung des k-SAT Problems
| |
| − | #* RANSAC-Algorithmus, Erfolgswahrscheinlichkeit, Vergleich mit analytischer Optimierung (Methode der kleinsten Quadrate)
| |
| − | <!------------->
| |
| − | # [[Greedy-Algorithmen und Dynamische Programmierung]] (10. und 16.7.2008)
| |
| − | #* Prinzipien, Aufwandsreduktion in Entscheidungsbäumen
| |
| − | #* bereits bekannte Algorithmen: minimale Spannbäume nach Kruskal, kürzeste Wege nach Dijkstra
| |
| − | #* Beispiel: Interval Scheduling Problem und Weighted Interval Scheduling Problem
| |
| − | #* Beweis der Optimalität beim Scheduling Problem: "greedy stays ahead"-Prinzip, Directed Acyclic Graph bei dynamischer Programmierung
| |
| − | <!------------->
| |
| − | # [[NP-Vollständigkeit]] (16. und 17.7.2008)
| |
| − | #* die Klassen P und NP
| |
| − | #* NP-Vollständigkeit und Problemreduktion
| |
| − | <!------------->
| |
| − | <!-----# [[Quantum computing]] (17.7.2008)---->
| |
| | | | |
| | == Übungsaufgaben == | | == Übungsaufgaben == |