Algorithms and Data Structures
Core Course, 4+2
Basic Information
Lectures: | Monday + Wednesday, 16:15 - 18:00, E1.3 HS002 |
Lecturers: | Karl Bringmann and Erik Jan van Leeuwen |
First lecture: | 26 October 2016 |
Assistant: | Andreas Schmid |
Tutorials: | Thursday 14-16, E1.4 021, Tobias |
Thursday 14-16, E1.4 023, Aruni | |
Thursday 16-18, E1.4 021, Philip | |
Thursday 16-18, E1.4 023, Bhaskar | |
Friday 14-16, E1.4 021, Malte | |
Friday 14-16, E1.4 023, Paresh | |
First tutorial: | 3 November 2016 |
Credits: | 9 |
Prerequisites: | The course requires basic knowledge in algorithms and data structures as covered by the introductory course "Grundzüge von Algorithmen und Datenstrukturen". |
Language: | The language of the course is English. |
News
- On the following dates the tutorial groups in room 021 have to move to room 024: 03, 04, 17, 18, 24, and 25 November
- You may view your midterm exam papers on Thursday, 5. January 13:30-14:30 in room 305, MPI-Inf
Mailing List
To get news about the lecture, please subscribe to the following mailing list. Note that this is non-binding and does not replace the official registration according to your study program.
Contents
Data Structures (hashing, union-find, etc.), graph algorithms (shortest path, matching, flow, etc.), optimization techniques (divide-and-conquer, approximation algorithms, etc.), analysis techniques (amortized analysis, recurrences, average-case analysis, etc.), computational geometry (convex hull, segment tree, etc.), strings and polynomials. See the module description for more details.
Exams
Your final grade will be determined by your performance on a midterm exam, final exam, and repeat exam. The final grade is determined as the better of 0.4*midterm + 0.6*final, 0.4*midterm + 0.6*repeat, final, and repeat. Admittance to the exams requires active participation in the course (at least 50% of the points on the first 6 exercise sheets for the midterm, and at least 50% of the total points on all exercise sheets for the final and repeat exam).
Midterm: 14 December 2016, 16:15-18:15, E2.2 Günter-Hotz lecture hall
Final: 1 March 2017, 13:15-16:00, E2.2 Günter-Hotz lecture hall
Repeat: 12 April 2017, 13:15-16:00, E2.2 Günter-Hotz lecture hall
Exercise sheets
- Exercise 01 due Oct 31, 2016
- Exercise 02 due Nov 7, 2016
- Exercise 03 due Nov 14, 2016
- Exercise 04 due Nov 21, 2016
- Exercise 05 due Nov 28, 2016
- Exercise 06 due Dec 5, 2016
- Exercise 07 due Dec 12, 2016
- Exercise 08 due Jan 09, 2017
- Exercise 09 due Jan 16, 2017
- Exercise 10 due Jan 23, 2017
- Exercise 11 due Jan 30, 2017
- Exercise 12 due Feb 6, 2017
- Exercise 13 due Feb 13, 2017
Schedule
Lecture | Teacher | Topic |
26 Oct | EJvL | Introduction (RAM machine model, big-O notation, data structures). See additional material below and [MS] Sect. 2.1+2.2. |
31 Oct | KB | Randomized Algorithms I (randomized RAM model, quicksort, rank select). See [MS] Sect. 5.4 for quicksort, [GKP] Sect. 1+2 for background on recurrences. |
02 Nov | KB | Randomized Algorithms II (randomized search trees, treaps). See additional material below. |
07 Nov | EJvL | Greedy algorithms (interval scheduling, minimum lateness scheduling). [KT] Sect. 4.1+4.2. |
09 Nov | EJvL | Divide and conquer (recurrences, Akra&Bazzi). [CLRS] Chap. 4 and additional material below. |
14 Nov | KB | Strings I (dynamic programming: longest common subsequence, string matching: Rabin-Karp fingerprinting). [CLRS] Sect. 15.4+32.2. |
16 Nov | KB | Strings II (string matching: Rabin-Karp continued, (Knuth-)Morris-Pratt). [CLRS] Sect. 32.2+32.4. |
21 Nov | KB | Strings III (tries, suffix trees, comparison of string matching solutions). [CR] Sect. 5. |
23 Nov | EJvL | Graphs I (intro, shortest paths I: BFS and Dijkstra). [Sch] Sect 1.1, 1.2 (also [KT] Sect 4.4). See additional material below. |
28 Nov | EJvL | Graphs II (shortest paths II: Bellman-Ford, Floyd-Warshall, Johnson). [Sch] Sect 1.3. [CLRS] Sect. 25.2, 25.3. [MS] Sect 10.7. |
30 Nov | EJvL | Graphs III (matching I: intro, bipartite unweighted). [Sch] 3.2, 3.4. |
05 Dec | EJvL | Graphs IV (matching II: bipartite weighted, general unweighted). [Sch] 3.5, 5.2. |
07 Dec | EJvL | Graphs V (cuts & flow I: intro, max-flow min-cut, Ford-Fulkerson). [Sch] 4.2, 4.3. (See also [KT] 7.1, 7.2 or [CLRS] 26.1, 26.2) |
12 Dec | EJvL | Graphs VI (cuts & flow II: max-flow min-cut, Ford-Fulkerson, Dinits). [Sch] 4.2, 4.3, 4.4 (See also [KT] 7.1, 7.2, 7.3 or [CLRS] 26.1, 26.2) |
14 Dec | EJvL | Midterm (Günter-Hotz lecture hall) |
02 Jan | KB | Canceled |
04 Jan | KB | Polynomials I (polynomial multiplication I: Karatsuba's algorithm, integer arithmetic via reduction to polynomials) [MS] 1.5, [CLRS] 30 |
09 Jan | KB | Polynomials II (polynomial multiplication II: Toom-Cook) [MS] 1.5, [CLRS] 30 |
11 Jan | KB | Polynomials III (polynomial multiplication III: Fast Fourier Transform, application: sliding window hamming distance) [CLRS] 30 |
16 Jan | EJvL | Data Structures I (amortized analysis & union-find). [CLRS] 17.1-3, 21.1. See also additional material below. |
18 Jan | EJvL | Data Structures II (union-find). [CLRS] 21.2, 21.3, 21.4. |
23 Jan | EJvL | Data Structures III (hollow heaps). See additional material below. |
25 Jan | EJvL | Data Structures IV (dictionaries, splay trees, red-black trees). |
30 Jan | EJvL | Data Structures V (cuckoo hashing). See additional material below. |
01 Feb | KB | Geometry I (introduction to computational geometry: representations, primitives, robustness, degeneracies; convex hull algorithms). [BKOS] 1.1-1.2 |
06 Feb | KB | Geometry II (orthogonal range searching in 1D and 2D, segment trees). [BKOS] 5.1, 5.3, 10.3 |
08 Feb | KB | Geometry III (sweep line algorithms for Klee's measure and line intersection, 2-dimensional linear programming). [BKOS] 2.1, 4.1-4.4 |
13 Feb | KB | Geometry IV (more on linear programming, Voronoi diagrams). [BKOS] 7.1-2 |
15 Feb | KB | Appetizer (subset sum algorithm). See additional material below. |
Literature
Most books are provided in the library's "Semesterapparat". The course will not follow a particular book.
- [MS] K. Mehlhorn, P. Sanders: Algorithms and Data Structures - The Basic Toolbox, Springer, 2008 (ISBN: 9783540779773)
- [CLRS] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms - Second Edition, McGraw-Hill, 2001 (ISBN: 0262531968)
- [KT] J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2005 (ISBN: 0-321-29535-8)
- [Meh] K. Mehlhorn, Data Structures and Algorithms, Vols. 1-3, Springer Verlag, 1984
- [Koz] D. Kozen, The Design and Analysis of Algorithms, Springer Verlag, 1991
- [GKP] R. Graham, D. E. Knuth, O. Patashnik, Concrete Mathematics, Addison-Wesley, 1994
- [CR] M. Crochemore, W. Rytter, Text Algorithms, Oxford University Press, 1994
- [Sch] A. Schrijver, A Course in Combinatorial Optimization, 2013 (see pdf link in additional material)
- [BKOS] M. de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf, Computational Geometry, Springer Verlag, 2000
Additional Material
Lecture 1: Data Structures and Simple Operations
Lecture 3: Randomized Search Trees
Lecture 5: Proof of the Akra & Bazzi theorem as presented in class, by Kurt Mehlhorn. See also the notes on the Akra & Bazzi theorem by Tom Leighton.
Lecture 9-14: A Course in Combinatorial Optimization (free pdf)
Lecture 9: Six degrees of separation, Kevin Bacon number, Erdös number, How Facebook computes its separation number
Lecture 20: Experiments on Union-Find Algorithms (also references many variants)
Lecture 22: Hollow heaps
Lecture 24: Cuckoo hashing: "Cuckoo Hashing" by Pagh & Rodler, and "An Overview of Cuckoo Hashing" by Charles Chen
Lecture 29: Subset Sum Algorithm