# 02-713 Algorithms & Data Structures (for Scientists)

Many of these lectures are based on your book Algorithm Design by Kleinberg and Tardos. See it for more detail.

# Tentative Schedule:

1Case Study: Minimum Spanning tree
• Big ideas: Distinction between Problems and Algorithms
• Prim's Minimum spanning tree algorithm
• Graphs, linked lists, arrays, structures
• Priority queues, d-Heaps
AD Ch. 1, 2.5, 4.5, 3.1
2
• Intro to Python
• Kruskal's MST algorithm
• Union-Find data structures
3Graph Algorithms I
• Depth-first search, stacks
• Topological sorting
• Bipartite testing
4Graph Algorithms II
• Shortest Path (Dijkstra's algorithm)
• Shortest Paths (Bellman Ford)
• Large-scale heuristic search with A*
5Divide and Conquer Algorithms
• Big idea: Recursion & Self-similarity
• Finding closest pair of points
• Mergesort
• Counting inversions
• Solving Big-Oh recurrences
6Dictionary Data Structures
• Splay trees
7Dynamic Programming Algorithms
• Big idea: parameterized self-similarity
• Subset Sum
• Sequence Alignment
• RNA Folding
8More Dynamic Programming Algorithms
• Segmented least squares
• Matrix Multiplication
• Optimal Binary Search trees
• Local alignment
9Network Flow Algorithms
• Big idea: Reduction
• Network flow and matching
• Using network flow to solve non-flow problems
• Circulation with demands
10Linear and Integer Programming Algorithms
• The linear and integer programming problems
• Network flows with weights and other extensions
• Other applications of linear and integer programming
11NP-completeness
• Big idea: Turning proofs of impossibility into programming
• Theory of P, NP, NP-completeness, and the P=NP question
• Proof of NP-hardness of SAT, Coloring, TSP
12Summary
• Summary

"AD" indicates sections in the Algorithm Design textbook.