Neue Startseite: Difference between revisions

From Alda
Jump to navigationJump to search
(Skript bis letzen Kap. minimiert)
No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
==== Vorlesung Algorithmen und Datenstrukturen ====
(Diese Varianten erfahren eventuell noch ein paar Modifikationen, falls der Professor die Neugestaltung der Startseite akzeptiert.
Bitte schreibt auf der Seite "diskussion" (zweiter Tab auf der Seite), wie euch einzelne Varianten gefallen und welche Änderungen gewünscht werden.)


Dr. Ullrich Köthe, Universität Heidelberg, Sommersemester 2012


Die Vorlesung findet '''Dienstags''' und '''Donnerstags''' jeweils um 14:15 Uhr in INF 227 (KIP), HS 2 statt.
[[mögliche neue Startseite - Variante 1]]


===Organisation===
[[mögliche neue Startseite - Variante 2]]
*[[Klausur und Nachprüfung]]
*[[Leistungsnachweise]]
*[[Übungsbetrieb]]
*[[Prüfungsvorbereitung]]
*[[Literatur]]


===Gliederung der Vorlesung===
[[mögliche neue Startseite - Variante 3]] (noch nicht fertig)
 
<!------------->
# [[Einführung]] (17.4.2012) - [[Gliederung der Vorlesung#Einführung|(detailliertere Beschreibung)]]
#* Def. von Algorithmen & Datenstrukturen, Geschichte // Fundamentale Algo. & Dat. // Python-Grundlagen
<!------------->
# [[Container]] (19.4.2012) - [[Gliederung der Vorlesung#Container|(detailliertere Beschreibung)]]
#* Anforderungen von Alg. an Container // Einteilung der Container // Grundleg. Container // Sequenzen & Intervalle (Ranges)
<!------------->
# [[Sortieren]] (24. und 26.4.2012) - [[Gliederung der Vorlesung#Sortieren|(detailliertere Beschreibung)]]
#* Spez. des Sortierprob. // Selection, Insertion, Merge & Quick Sort und seine Varianten // Vergl. der Anz. der ben. Schritte // Laufzeitmessung in Python
<!------------->
# [[Korrektheit]] (3. und 8.5.2012) - [[Gliederung der Vorlesung#Korrektheit|(detailliertere Beschreibung)]]
#* Def. von Korrektheit, Alg.-Spezifikation // Korrektheitsbew. vs. Test. // Vor- & Nachbed., Inv., Programming by contract // test, execution paths, unit test, exceptions & Ausnahmebehandlung in Python
<!------------->
# [[Effizienz]] (10. und 15.5.2012) - [[Gliederung der Vorlesung#Effizienz|(detailliertere Beschreibung)]]
#* Laufzeit & Optimierung // Laufzeit vs. Komplexität // Landausym. (O-, <math>\Omega</math>- & <math>\Theta</math>-Notation), Komplexitätsklassen // Bester, schlechtester, durchschn. Fall // Amorti. Komplexität
<!------------->
# [[Suchen]] (22. und 24.5.2012)  - [[Gliederung der Vorlesung#Suchen|(detailliertere Beschreibung)]]
#* Lin. -, Binäre Suche in sort. Arrays // Medianproblem // Suchbäume, balancierte Bäume // selbst-balancierende Bäume, Rotationen // Komplex. der Suche
<!------------->
# [[Prioritätswarteschlangen]] (29.5.2012) - [[Gliederung der Vorlesung#Prioritätswarteschlangen|(detailliertere Beschreibung)]]
#* Heap-Datenstruktur // Einfüge- und Löschoperat. // Heapsort // Kompl. des Heaps
<!------------->
# [[Hashing und assoziative Arrays]] (31.5.und 5.6.2012) - [[Gliederung der Vorlesung#Hashing und assoziative Arrays|(detailliertere Beschreibung)]]
#* Impl. assoz. Arrays mit Bäumen // Hashing & Hashfunktionen // Impl. assoz. Arrays als Hashtabelle mit lin. Verkettung bzw. mit offener Adressierung // Anwendung des Hashings zur String-Suche: Rabin-Karp-Algorithmus
<!------------->
# [[Iteration versus Rekursion]] (12.6.2012) - [[Gliederung der Vorlesung#Iteration versus Rekursion|(detailliertere Beschreibung)]]
#* Typen der Rekursion & ihre Umwandlung in Iteration // Auflösung rek. Formeln mittels Master- & Substitutionsmeth.
<!------------->
# [[Generizität]] (14.6.2012) - [[Gliederung der Vorlesung#Generizität|(detailliertere Beschreibung)]]
#* Abstrakte Datentypen, Typspezifikation // Required Interface vs. Offered Interface // Adapter & Typattribute, Funktoren // Bsp.: Alg. Konz. & Zahlendatentypen // Operator overloading in Python
<!------------->
# [[Graphen und Graphenalgorithmen]] (19. bis 28.6.2012) - [[Gliederung der Vorlesung#Graphen und Graphenalgorithmen|(detailliertere Beschreibung)]]
#* Einführung // Graphendatenstrukturen, Adjazenzlisten & Adjazenzmatrizen // Gerichtete & ungerichtete & vollständige & planare & duale Graphen // Pfade, Zyklen // Tiefen- & Breitensuche // Zusammenhang, Komponenten // Gewichtete Graphen // Minimaler Spannbaum // Kürzeste Wege, Best-first search (Dijkstra) // Most-Promising-first search (A*) // Problem des Handlungsreisenden, exakte Alg. (erschöpfende Suche, Branch-and-Bound-Methode) und Approx. // Erfüllbarkeitsprob., Darst. des 2-SAT-Prob.s 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 5.7.2012) - [[Gliederung der Vorlesung#Randomisierte Algorithmen|(detailliertere Beschreibung)]]
#* Zufallszahlen, Zyklenlänge, Pitfalls // Zufallszahlengeneratoren: linear congruential generator, Mersenne Twister // Randomisierte vs. determ. Alg. // Las Vegas vs. Monte Carlo Alg. // Bsp. für Las Vegas: Randomisiertes Quicksort // Bsp.e für Monte Carlo: Randomisierte Lösung des k-SAT Prob.  // RANSAC-Alg., Erfolgswahrsch., Vergleich mit analyt. Optimierung (Meth. der kleinsten Quadrate)
<!------------->
# [[Greedy-Algorithmen und Dynamische Programmierung]] (10. und 12.7.2012) - [[Gliederung der Vorlesung#Greedy-Algorithmen und Dynamische Programmierung|(detailliertere Beschreibung)]]
#* Prinzipien, Aufwandsred. in Entscheidungsbäumen // bereits bekannte Alg.: min. Spannbäume nach Kruskal, kürz. Wege nach Dijkstra // Bsp.: Interval Scheduling Prob. und Weighted Interval Sched. Prob. // Bew. der Optimalität beim Sched. Prob.: "greedy stays ahead"-Prinzip, Directed Acyclic Graph bei dyn. Programmierung
<!------------->
# [[NP-Vollständigkeit]] (17. und 19.7.2012) - [[Gliederung der Vorlesung#NP-Vollständigkeit|(detailliertere Beschreibung)]]
#* die Klassen P und NP // NP-Vollständigkeit & Problemreduktion
<!------------->
# Reserve und/oder Wiederholung (24. und 26.7.2012)
 
[[Übungsaufgaben]]
 
(im PDF Format). Die Abgabe erfolgt am angegebenen Tag bis 14:00 Uhr per Email an den jeweiligen Übungsgruppenleiter. Bei Abgabe bis zum folgenden Montag 11:00 Uhr werden noch 50% der erreichten Punkte angerechnet. Danach wird die Musterlösung freigeschaltet.
 
# [[Media:Übung-1.pdf|Übung]] (Abgabe 24.4.2012) und [[Media:Uebung-1-Musterloesung.pdf|Musterlösung]]
#* Python-Tutorial // Sieb des Eratosthenes // Wert- und Referenzsemantik
#* Dynamisches Array
# [[Media:Uebung-2.pdf|Übung]] (Abgabe 3.5.2012) und [[Media:Uebung-2-Musterloesung.pdf|Musterlösung]]
#* Sortieren: Implementation und Geschwindigkeitsvergleich (Diagramme in Abhängigkeit von der Problemgröße) // Entwicklung eines Gewinnalgorithmus für ein Spiel
#* Bonus: Dynamisches Array mit verringertem Speicherverbrauch
# [[Media:Uebung-3.pdf|Übung]] (Abgabe 10.5.2012) und [[Media:Uebung-3-Musterlösung.pdf|Musterlösung]]
#* Experimente zur Effektivität von Unit Tests // Bestimmung von Pi mit dem Algorithmus von Archimedes // Deque-Datenstruktur: Vor- und Nachbedingungen der Operationen, Implementation und Unit Tests
# [[Media:Uebung-4.pdf|Übung]] (Abgabe '''Montag''' 21.5.2012) <!------------ und [[Media:Musterloesung_4.pdf|Musterlösung]] ---->
#* Theoretische Aufgaben zur Komplexität // Amortisierte Komplexität von array.append() // Optimierung der Matrizenmultiplikation
# [[Media:Uebung-5.pdf|Übung]] (31.5.2012) <!------ und [[Media:muster_blatt5.pdf|Musterlösung]] ----> // Implementation und Analyse eines Binärbaumes // Anwendung: einfacher Taschenrechner
<!------------
# [[Media:Übung-6.pdf|Übung]] (Abgabe 5.6.2012) und [[Media:muster_blatt6.pdf|Musterlösung]]
#* Treap-Datenstruktur: Verbindung von Suchbaum und Heap // Anwendung: Worthäufigkeiten (Dazu benötigen Sie das File  [http://klimt.iwr.uni-heidelberg.de/mip/people/ukoethe/download/die-drei-musketiere.txt die-drei-musketiere.txt]. Die Zeichenkodierung in diesem File ist Latin-1.) // Suche mit linearer Komplexität
<!------------
# [[Media:Übung-7.pdf|Übung]] (Abgabe 12.6.2012) und [[Media:muster_blatt7.pdf|Musterlösung]]
#* Übungen zu Rekursion und Iteration: Fakultät, Koch-Schneeflocke, Komplexität rekursiver Algorithmen, Umwandlung von Rekursion in Iteration
<!------------
# [[Media:Übung-8.pdf|Übung]] (Abgabe 19.6.2012) und [[Media:muster_blatt8.pdf|Musterlösung]]
#* Elementare Graphenaufgaben: Aufstellen von Adjazenzmatrizen und Adjazenzlisten, planare Graphen // Übungen zur Generizität: Sortieren mit veränderter Ordnung, Iterator für Tiefensuche
<!------------
# [[Media:Übung-9.pdf|Übung]] (Abgabe 26.6.2012)
#* Fortgeschrittene Graphenaufgaben: Erzeugen einer perfekten Hashfunktion, Routenplaner (Dazu benötigen Sie das File  [http://klimt.iwr.uni-heidelberg.de/mip/people/ukoethe/download/entfernungen.txt entfernungen.txt]. Die Zeichenkodierung in diesem File ist Latin-1.)
<!------------
# [[Media:Übung-10.pdf|Übung]] (Abgabe 3.7.2012) und [[Media:loesung_blatt10.pdf|Musterlösung]] sowie schöne [[Media:ballungsgebiete.pdf|Visualisierung der Ballungsgebiete]] von Thorben Kröger
#* Fortgeschrittene Graphenaufgaben 2: Clusterung mittels minimaler Spannbäume, Problem des Handelsreisenden (Eine <font color=red>neue Version</font> der Datei [http://klimt.iwr.uni-heidelberg.de/mip/people/ukoethe/download/entfernungen.txt entfernungen.txt] ist verfügbar. Dank an Sven Ebser, Joachim Schleicher und Thorben Kröger für Hilfe bei der Verbesserung der Datei.)
<!------------
# [[Media:Übung-11.pdf|Übung]] (Abgabe 10.7.2012)
#* Erfüllbarkeitsproblem, Anwendung: Heim- und Auswärtsspiele im Fussball (Dazu benötigen sie das File [http://klimt.iwr.uni-heidelberg.de/mip/people/ukoethe/download/bundesliga-paarungen-08-09.txt bundesliga-paarungen-08-09.txt].) // Randomisierte Algorithmen: RANSAC für Kreise (Dazu benötigen sie das File [http://klimt.iwr.uni-heidelberg.de/mip/people/ukoethe/download/noisy-circles.txt noisy-circles.txt].)
<!-------------
# [[Media:Übung-12.pdf|Übung]] (<font color=red>Achtung: Abgabe bereits am Mittwoch, 16.7.2012</font>)
#* Greedy-Algorithmen und Dynamische Programmierung
<!---------------->
 
[[Sonstiges]]

Latest revision as of 17:53, 27 May 2012

(Diese Varianten erfahren eventuell noch ein paar Modifikationen, falls der Professor die Neugestaltung der Startseite akzeptiert. Bitte schreibt auf der Seite "diskussion" (zweiter Tab auf der Seite), wie euch einzelne Varianten gefallen und welche Änderungen gewünscht werden.)


mögliche neue Startseite - Variante 1

mögliche neue Startseite - Variante 2

mögliche neue Startseite - Variante 3 (noch nicht fertig)