Contents
Part One: Iterative Algorithms and Loop Invariants
- Iterative Algorithms: Measures of Progress and Loop Invariants
- Examples Using More-of-the-Input Loop Invariants
- Abstract Data Types
- Narrowing the Search Space: Binary Search
- Iterative Sorting Algorithms
- Euclid's GCD Algorithm
- The Loop Invariant for Lower Bounds
Part Two: Recursion
- Abstractions, Technique, and Theory
- Some Simple Examples of Recursive Algorithms
- Recursion on Trees
- Recursive Images
- Parsing with Context-Free Grammars
Part Three: Optimization Problems
- Definition of Optimization Problems
- Graph Search Algorithms
- Network Flows and Linear Programming
- Greedy Algorithms
- Recursive Backtracking
- Dynamic Programming Algorithms
- Examples of Dynamic Programming
- Reductions and NP-Completeness
- Randomized Algorithms
Part Four: Appendix
- Existential and Universal Quantifiers
- Time Complexity
- Logarithms and Exponentials
- Asymptotic Growth
- Adding-Made-Easy Approximations
- Recurrence Relations
- A Formal Proof of Correctness
Part Five: Exercise Solutions
Conclusion
Citation
- [HTTAA] Edmonds J. How to think about algorithms. Cambridge ; New York: Cambridge University Press; 2008. 448 p.