Goodrich and Tamassia: Algorithm Design – Foundations, Analysis and Internet
... An example for the design of algorithms: fast multiplication of integers,.
Course summary: Data Structures and Algorithms (FS 2012) Below you find the topics discussed in the Data Structures and Algorithms lecture held in spring 2012, along with suggested readings in English. Please note that not every topic is discussed at the same level as in the german book accompanying the lecture. Literature • Ahuja, Magnanti, and Orlin: Network Flows, Prentice-Hall, 1993. ISBN 978-0-13617549-0 • Cormen, Leiserson, Rivest, and Stein: Introduction to Algorithms, 3rd ed., MIT Press, 2009. ISBN 978-0-262-03384-8 (recommended text) • Goodrich and Tamassia: Algorithm Design – Foundations, Analysis and Internet Examples, Wiley & Sons, 2001. ISBN 978-0-471-38365-9 • de Berg, Cheong, van Kreveld, and Overmars: Computational Geometry – Algorithms and Applications, Springer, 3rd ed., 2008. ISBN 978-3-540-77973-5 • Skiena: The Algorithm Design Manual, Springer, 2nd ed., 2008. ISBN 978-1-84800069-8 • Wolsey: Integer Programming, Wiley & Sons, 1998. ISBN 978-0-471-28366-9 Topics 23.2.2012 Introduction and algorithm design. Role of algorithms in computer science. An example for the design of algorithms: fast multiplication of integers, Karatsuba/Ofman 1962. Uniform cost model. Growth of functions: big O notation, Omega, Theta. [Cormen, Ch. 1 – 3] 24.2.2012 Algorithm design by induction. Maximum subarray problem: na¨ıve algorithm, precomputation of prefix sums, divide-and-conquer, linear scan. [Cormen, Ch. 4.1] 1.3.2012 Sorting (and searching) I: elementary sorting methods. Bubblesort, selection sort, insertion sort, odd-even transposition sort. Linear search, binary search, interpolation search, lower bounds. Recursive mergesort. [Cormen, Ch. 2, Problem 2.2-2, 2.3-5, 2-2] 2.3.2012 Sorting II: Quicksort. Lower bound for sorting. Quicksort and key comparisons: Best case, worst case. Movements, worst case. Additional memory: linear, logarithmic (if recursion on smaller part), constant. Randomized Quicksort and analysis. Lower bound: decision tree, average height of a leaf in a binary tree. [Cormen, Ch. 7, 8.1] 8.3.2012 Sorting III: Heapsort. Radixsort. Heapsort, implicit representation of the heap, creating a heap in linear time. Radix exchange sort. [Cormen, Ch. 6, 8.3] 9.3.2012 Computing the median. Randomized computation of the median. Computing the median in linear time. [Cormen, Ch. 9]
1
15.3.2012 Data structures for dictionaries. Binary search trees. AVL trees. [Cormen, Ch. 12.1 – 12.3 & Goodrich, Ch. 3.2] 16.3.2012 AVL Trees and amortized analysis. AVL-Trees: insertion, deletion. Amortized analysis of the insert operation. [Goodrich, Ch. 3.2] 22.3.2012 Hashing I. Hash tables, hash functions, universal hashing. Collision resolution by chaining. [Cormen, Ch. 11.1 – 11.3] 23.3.2012 Hashing II. Open hashing, probing. Cuckoo hashing. [Cormen, Ch. 11.4 – 11.5] 29.3.2012 Self-organizing linear lists. competitive analysis.
Self-organizing linear lists, move-to-front rule, [Cormen, Problem 17-5]
30.3.2012 Optimal search trees. Optimal search trees, construction with dynamic programming. Self-organizing search trees: move-to-root rule, splay trees. [Cormen, Ch. 15.5 & Goodrich, Ch. 3.4] 5.4.2012 Dynamic programming I. Longest common subsequence. Matrix chain multiplication. Matrix multiplication by Strassen. Subset sum problem. [Cormen, Ch. 4.2, 15.2 – 15.4, 35.5] 19.4.2012 Dynamic programming II. Knapsack problem, FPTAS. [Vazirani, Ch. 8.1 – 8.2] 20.4.2012 Backtracking, Branch and bound. Backtracking with examples: n queens, Sat. Branch and bound with examples: Maxsat, Knapsack, Tsp. [Skiena, Ch. 7.1 & Wolsey, Ch. 7.1 – 7.2] 26.4.2012 Graph algorithms I. Data structures for graphs. Graph traversal: BFS and DFS. Reflexive and transitive closure. Topological sorting. [Cormen, Ch. 22.1 – 22.4] 27.4.2012 Graph algorithms II. Minimal spanning trees: introduction, greedy algorithms, Kruskal’s algorithm with union find structure. [Cormen, Ch. 23] 3.5.2012 Graph algorithms III. Minimal spanning trees with Prim/Dijkstra. Fibonacci Heaps. [Cormen, Ch. 19, 23] 4.5.2012 Graph algorithms IV. Shortest paths from a single source. Algorithms of Dijkstra, Bellman-Ford. All pairs shortest paths. Matrix multiplication by iterative squaring. Algorithm of Floyd-Warshall. Algorithm of Dijkstra with graph transformation. [Cormen, Ch. 24, 25] 10.5.2012 Graph algorithms V: Flows in networks I. Augmenting path algorithm by FordFulkerson. Max-flow min-cut theorem. Capacity scaling. [Cormen, Ch. 26.1 – 26.2] 11.5.2012 Graph algorithms VI: Flows in networks II. Shortest augmenting path algorithms, O(m2 n) algorithm by Edmonds-Karp, O(mn2 ) algorithm by Dinic. Matchings in bipartite graphs. Hall’s theorem. [Ahuja, Ch. 7.5 & Cormen, Ch. 26.2 – 26.3, Problem 26.3-4] 2
18.5.2012 Geometric algorithms I. Convex hull of points in the plane: Jarvis, Graham, linear scan. Intersection of orthogonal line segments: Check for intersection, report all intersection points, count all intersection points. [Cormen, Ch. 33.1 – 33.3 & deBerg, Ch. 1.1 – 1.2] 24.5.2012 Geometric algorithms II. Intersection of arbitrarily oriented line segments: checking and reporting. Intersection of axis-parallel rectangles, 2-dimensional range trees. [deBerg, Ch. 5.3] 25.5.2012 Geometric algorithms III. Intersection of axis-parallel rectangles using segment trees, tile trees or interval trees. Pair of nearest neighbors in a point set: scan, geometric divide and conquer. [Cormen, Ch. 33.4 & deBerg, Ch. 10.1 – 10.3] 31.5.2012 Geometric algorithms IV and external memory structures. Geometric divide and conquer: intersection of orthogonal line segments. External memory structures: B-Trees. [Cormen, Ch. 18] 1.6.2012 External memory structures. Dynamic hashing: Linear and extendible hashing. Gridfile.
3