02-713 Algorithms & Data Structures (for Scientists)

Spring 2014

Lecture Slides

  1. Introduction, our goals, example problems
  2. Minimum Spanning Tree & Prim's algorithm
  3. MST Data Structures: Graphs and Heaps
  4. Approximate Metric TSP
  5. Kruskal's MST, Union-Find data structures [mst.py]
  6. Clustering with minimum spanning trees [Slim-tree paper]
  7. Asymptotic Analysis (2 classes) [additional MIT video lecture]
  8. Depth-first search & Breadth-first search
  9. Bipartite Testing & Topological Sort
  10. Dijkstra's Algorithm for Shortest Paths
  11. A* search algorithm & TSP [Example A* Run] [Example Dijkstra Run]
  12. Bellman-Ford: Shortest Paths with Negative Weights
  13. Divide & Conquer and Counting Inversions
  14. Closest Points in the Plane
  15. Matrix Multiplication via Strassen's Algorithm (and Karatsuba's integer multiplication)
  16. Splay trees (2 classes) [demo]
  17. Dynamic Programming: Subset Sum
  18. Sequence Alignment [demo]
  19. RNA Folding
  20. Segmented Least Squared, Matrix Chain Multiplication, Optimal Binary Search Trees [extra example dynamic programming problems]
  21. Linear space sequence alignment
  22. Suffix Trees (2 classes)
  23. Network Flow & Max-flow/mincut (2 classes)
  24. Matching
  25. Image segmentation
  26. Extensions to network flow & Airline Scheduling
  27. Linear Programming
  28. P, NP, and NP-hardness reductions (3 classes)
  29. NP-hardness results (3SAT, Hamiltonian path, TSP, coloring)
  30. More NP-hardness proofs (3DM)
  31. Randomized algorithms: Metropolis and Global Minimum Cut
  32. Randomized closest pair of points
  33. Class Summary