These are some notes I've written about algorithms. They are heavily inspired by multiple textbooks: Algorithms by Dasgupta, Papadimitriou, and Vazirani; Algorithms by Erickson; Algorithm Design by Kleinberg and Tardos; and Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein. I recommend all of them.
You can get the whole thing here, or download individual chapters below. (Some chapters reference each other, but for the most part, every chapter is self-contained.)
- Chapter 1: Array Algorithms
- Chapter 2: Basic Graph Algorithms
- Chapter 3: Greedy Algorithms
- Chapter 4: Dynamic Programming
- Chapter 5: Shortest Paths
- Chapter 6: Flows and Cuts
- Chapter 7: Linear Programming
- Chapter 8: NP-Hardness
- Chapter 9: Approximation Algorithms
Please feel free to send me any feedback (even if it's only about a typo). My email address is "nusnivek [at] gmail [dot] com". You can also message me anonymously using this form.