Introduction to Analysis of Algorithms (CS4820)

Cornell University, Summer, 2010.

Annoucements

Schedule

What we have already covered

We will keep an updated schedule for what has been covered in the course on a lecture by lecture basis.

Dates Monday Tuesday Wednesday Thursday Friday
Week of 7/5-7/9 Introduction and stable matching.
Reading: Section 1.1. Review: Chapter 2 and 3.
Finished up stable matching. Some representative problems.
Reading: Section 1.1 and 1.2

Greedy algorithms. Interval scheduling.
Reading: Section 4.1.

Homework 1 out. Due on Friday 8:30.
Interval scheduling, and scheduling all intervals.
Reading: Section 4.1.

Started talking about minimizing lateness.
Reading: Section 4.2.
Minimizing lateness. Section 4.2.

Minimum spanning tree algorithms. Section 4.5 and 4.6.
Minimum spanning tree, Kruskal, Prim, Union-Find data structure, Clustering of maximum spacing.
Reading: Section 4.5, 4.6, 4.7.

Homework 2 out. Due on Tuesday at 8:30.
Week of 7/12-7/16 Dynamic programming. Weighted Interval Scheduling and Principles of Dynamic Programming.
Reading: Sections 6.1 and 6.2, and the handout on finding pj values for the jobs in Weighted Interval Scheduling.
Dynamic programming. Segmented least square problem. Sequence alignment.
Reading: Section 6.3 and 6.6.

Homework 3 is out. Due on Friday before class.
Dynamic programming:
  • RNA secondary structure.
  • Knapsack problem (with values as well as weights).
Reading: Section 6.5, 6.4.
Dynamic programming:
  • Shortest paths, Bellman-Ford algorithm.
Reading: Section 6.8.
Bellman-Ford algorithm, push and pull variants, Distance Vector Protocol.
Reading: Section 6.8 and 6.9.

Floyd-Warshall algorithm (not in the book). Have a look at this Wikipedia page.
Week of 7/19-7/23 Network flow
  • Definitions, and preliminaries.
Reading: Section 7.1, and handout on max-flow.
Augmenting path algorithm (Ford-Fulkerson), max-flow min-cut theorem.
Reading: Section 7.2.
Applications of max-flow.
  • Bipartite matching.
  • Project selection as to maximize the benefit from projects minus the cost of resources.
  • Baseball elimination.
Reading: Section 7.5, 7.6, 7.11, 7.12. (Note that the project selection problem we did in lecture was different from the one in Section 7.11.) Also have a look at two example of running of Ford-Fulkerson algorithm: a simple one, and a more complex one.
  • Application of max-flow, min-cut: Image Segmentation.
  • Extension to max-flow: general demands, and lower bounds on flows.
Reading: Section 7.10, 7.7.
Wrap up max-flow min-cut.
  • Survey design
  • Airline scheduling...
Start divide and conquer algorithms.
Reading: Section 7.8, 7.9, and 5.1.
Week of 7/26-7/30 Divide and conquer.
Reading: Section 5.1, 5.2.

Review session from 3--5.
Prelim (in class). Divide-and-Conquer. Finding closest pair of points in the plane.
Reading: 5.4.
Divide-and-Conquer. Integer multiplication and Fast Fourier Transform.
Reading: 5.5, 5.6.
Turing machines. Definitions. Language of a Turing machine. RE (recursively enumerable). R (recursive).
This material is not covered in the book. The instructor can refer you to some books about this material if you are interested. Please talk to the instructor.
Week of 8/2-8/6 Turing machines. Multi-tape and non-deterministic. Turing-recognizability. Turing-decidability. Diagonalization, non-RE languages, non-recursive languages. NP (non-deterministic polynomial time). P (deterministic polynomial time). Reductions. NP-completeness. Polynomial time reductions. 3SAT is NP-complete.
  • Independent Set (IS) is NP-complete.
  • 3-dimensional matching (3DM) is NP-complete.
Reading: Section 8.1, 8.2, 8.3, 8.6.
NP-completeness.
  • Vertex Cover.
  • 3-Coloring of Graphs.
Reading: Sections 8.1, 8.7.
NP-completeness.
  • Travling Salesman Problem and Hamiltonian Cycle.
  • Subset Sum Problem.
Reading: Sections 8.5, 8.8.
Week of 8/9-8/13 Cook-Levin Theorem.

Future schedule, tentative

Staff and office hours

For all emails, add cornell.edu after the @ sign.

Notes about office hours

Mailing lists

We have two mailing lists.

Lectures

Feedback on the course

If you have any comments about the course, feel free to contact the course staff, and please let us know your comments. We will try our best to make the course most useful and fun for you.

Homeworks

Some thoughts on homeworks in CS4820

Here are some thoughts on how to work on homeworks in CS 4820. These are just guidelines, but in our experience, they have been very helpful for good understanding and doing well in the course.

Prelim and final

Grading

Academic integrity

Basic course information

Prerequisites

The official prerequisites for the course are CS 280/2800 and 312/3110.

We will assume that everyone has seen the material in CS 2110, 3110, and 2800, and we will use it as necessary in 4820. This includes elementary data structures, sorting, and basic terminology involving graphs (including the concepts of depth-first search and breadth-first search). Some of these are reviewed in the text.

The lectures and homework involve the analysis of algorithms at a fairly mathematical level. We expect everyone to be comfortable reading and writing proofs at the level of CS 2800.

Text

The official text for the course is: This text is available at the Campus Store. Two copies are also on researve in the Engineering Library.

We will cover some topics that are outside of the book, and we will not cover all the topics in the book.

Other reference books that might be useful for some topics: