Course: Algorithms on Graphs. Click here to go back.

- Graph Basics
- Representing Graphs
- Exploring Graphs
- Connectivity
- Previsit and Postvisit Orderings
- Directed Acyclic Graphs
- Topological Sort
- Strongly Connected Components
- Computing Strongly Connected Components
- Most Direct Route
- Breadth-First Search
- Breadth-First Search (continued)
- Implementation and Analysis
- Proof of Correctness
- Proof of Correctness (continued)
- Shortest-Path Tree
- Reconstructing the Shortest Path
- Fastest Route
- Naive Algorithm
- Dijkstra's Algorithm: Intuition and Example
- Dijkstra's Algorithm: Implementation
- Dijkstra's Algorithm: Proof of Correctness
- Dijkstra's Algorithm: Running Time
- Currency Exchange
- Currency Exchange: Reduction to Shortest Paths

- Bellman-Ford Algorithm
- Bellman-Ford Algorithm: Proof of Correctness
- Negative Cycles
- Infinite Arbitrage
- Building a Network
- Greedy Algorithms
- Cut Property
- Kruskal's Algorithm
- Prim's Algorithm
- Programming Project: Introduction
- Bidirectional Search
- Six Handshakes
- Bidirectional Dijkstra
- Finding Shortest Path after Meeting in the Middle
- Computing the Distance
- A* Algorithm
- Performance of A*
- Bidirectional A*
- Potential Functions and Lower Bounds
- Landmarks (Optional)
- Highway Hierarchies and Node Importance
- Preprocessing
- Witness Search
- Query
- Proof of Correctness
- Node Ordering