How To Think About Algorithms

Contents

  • Introduction

Part One: Iterative Algorithms and Loop Invariants

  1. Iterative Algorithms: Measures of Progress and Loop Invariants
  2. Examples Using More-of-the-Input Loop Invariants
  3. Abstract Data Types
  4. Narrowing the Search Space: Binary Search
  5. Iterative Sorting Algorithms
  6. Euclid's GCD Algorithm
  7. The Loop Invariant for Lower Bounds

Part Two: Recursion

  1. Abstractions, Technique, and Theory
  2. Some Simple Examples of Recursive Algorithms
  3. Recursion on Trees
  4. Recursive Images
  5. Parsing with Context-Free Grammars

Part Three: Optimization Problems

  1. Definition of Optimization Problems
  2. Graph Search Algorithms
  3. Network Flows and Linear Programming
  4. Greedy Algorithms
  5. Recursive Backtracking
  6. Dynamic Programming Algorithms
  7. Examples of Dynamic Programming
  8. Reductions and NP-Completeness
  9. Randomized Algorithms

Part Four: Appendix

  1. Existential and Universal Quantifiers
  2. Time Complexity
  3. Logarithms and Exponentials
  4. Asymptotic Growth
  5. Adding-Made-Easy Approximations
  6. Recurrence Relations
  7. 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.