back to teaching page



CS 217: Algorithm Design and Analysis, Fall 2016

Jiaotong University


Time: every Wednesday; Thursdays in weeks 3-8 and 10,12,14,16; always 10:00 - 11:40. Location:下院109
Teacher: Dominik Scheder. Teaching Assistant: To be announced.
Textbook: Algorithms by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani
Presentations: A list of suggested topics.
Material: This is mostly a blackboard class, but here is some material.

Grading: 40% final exam, 30% homework, 30% presentation. The stundents will form groups of size 4-5. Homework will be handed in by every group. Every group will give one 30 minutes presentation on a technical topic during the semester. For topics, you can contact me but are also welcome to come up with your own suggestion.

Contents and Goals: Contents of this class are: Classical algorithms and algorithmic design paradigms (e.g. divide and conquer, greedy algorithms, dynamic programming); maximum flow and minimum cut; Linear programming (duality, simplex, applications). We will also discuss some important data structures and how to use them in algorithms. Depending on the time frame, we will teach more advanced topics like randomized, approximation, exponential, and streaming algorithms. We will devote ample time to: (i) the path from a basic idea to the final algorithm; (ii) proofs of correctness; (iii) running time analysis.
Goals: Deep understanding of the mathematical strcuture underlying the algorithms we treat in class. Ability to apply learned methods and paradigms to new problems.

Date

Week

#

Content

Wedesday, September 28, 2016

Week 3

Introdcution, administrative stuff. Euclid's algorithm. Running time, exact running time. Fibonacci number, linear recurrences; recursive and dynamic programming algorithm or Fibonacci numbers.

Friday, September 30, 2016

Week 3

Computing Fibonacci numbers (maybe modulo k) via fast matrix multiplication. Homework 1 handed out on September 30; it is due October 9 by email to me or the teaching assistant

Wednesday, October 5, 2016

Week 4

No class. Happy National Holiday!

Friday, October 7, 2016

Week 4

No class. Happy National Holiday!

Sunday, October 9, 2016

Week 4

Mergesort, worst case and best case; quicksort, worst case and expected case. Indicator variables Ai,j which are 1 if i is an ancestor of j.

Wednesday, October 12, 2016

Week 5

Mergesort, worst case and best case; quicksort, worst case and expected case. Indicator variables Ai,j which are 1 if i is an ancestor of j.

Friday, October 14, 2016

Week 5

Spanning trees in graphs. Kruskal's algorithm for finding the minimum spanning tree. Good edge sets, cut lemma. Keeping track of connected components: Union-Find data structures: naive list approach; "rename the smaller one" improvement.

Homework 2 handed out.

Wednesday, October 19, 2016

Week 6

Shortest path algorithms: breadth-first search and Dijkstra's algorithm. Longest paths in graphs. Longest paths in acyclic graphs. The randomized color coding technique.

Friday, October 21, 2016

Week 6

Flow networks. Network flows, cuts, residual networks.

Wednesday, October 26, 2016

Week 7

Maxflow-Mincut theorem. Ford-Fulkerson method and Edmonds-Karp algorithm.

Friday, October 28, 2016

Week 7

Improving Edmonds-Karp: Dinic algorithm finding paths in "O(n)" steps in a layered digraph. Dinic algorithm on unit capacity networks.

Homework 3 handed out.

Wednesday, November 2, 2016

Week 8

Matchings in bipartite graphs. Finding a maximum matching using maximum flow algorithms (e.g. Dinic' algorithm). Hall's Theorem.

Friday, November 4, 2016

Week 8

König's Theorem (maximum matching equals minimum vertex cover in bipartite graphs) and Dilworth's theorem on chains and antichains in partial orders.

Wednesday, November 9, 2016

Week 9

Introduction to linear programming. Feasible solutions, standard form, dualizations, weak LP duality.

Homework 4 handed out.

Wednesday, November 16, 2016

Week 10

How to dualize linear programs with equality constraints and unbounded variables.

Friday, November 18, 2016

Week 10

Integrality of the Matching LP and the Vertex Cover LP for bipartite graphs.

Wednesday, November 23, 2016

Week 11

Existence of optimal solutions for every bounded feasible linear program.

Wednesday, November 30, 2016

Week 12

Farkas Lemma (geometric version) and Strong LP Duality.

Friday, December 2, 2016

Week 12

Different versions of Farkas Lemma. Proof of Farkas Lemma by Fourier-Motzkin elimination.


Wednesday, December 7, 2016

Week 13

Reviewing Linear Programming. Introduction to streaming algorithms. Approximating the number of different elements.

Homework 5 handed out.


Wednesday, December 14, 2016

Week 14

Introduction to probability theory. Expectation and variance. Two-wise independence. Approximating the number of different elements in a data stream up to a factor of 6.

Friday, December 16, 2016

Week 14

Approximating the number of distinct elements in a data stream with arbitrary precision.

Wednesday, December 21, 2016

Week 15

Presentations:

  • Tarjan: Union-find data structure. Slides.
  • Paradox: Fibonacci heaps. Slides.

Wednesday, December 28, 2016

Week 16

Presentations:

  • AlphaGorithm: zero-sum games. Slides.
  • Static: Balanced Programming. Slides.

Friday, December 30, 2016

Week 16

Presentations:

  • Aha: 2-SAT. Slides.
  • Actors: Kuhn-Munkres algorithm and doubling. Slides.


back to teaching page