Books & Videos

Table of Contents

  1. I

    1. Chapter 1 Algorithms Matter

      1. Understand the Problem
      2. Experiment if Necessary
      3. Side Story
      4. The Moral of the Story
      5. References
    2. Chapter 2 The Mathematics of Algorithms

      1. Size of a Problem Instance
      2. Rate of Growth of Functions
      3. Analysis in the Best, Average, and Worst Cases
      4. Performance Families
      5. Mix of Operations
      6. Benchmark Operations
      7. One Final Point
      8. References
    3. Chapter 3 Patterns and Domains

      1. Patterns: A Communication Language
      2. Algorithm Pattern Format
      3. Pseudocode Pattern Format
      4. Design Format
      5. Empirical Evaluation Format
      6. Domains and Algorithms
      7. Floating-Point Computations
      8. Manual Memory Allocation
      9. Choosing a Programming Language
      10. References
  2. II

    1. Chapter 4 Sorting Algorithms

      1. Overview
      2. Insertion Sort
      3. Median Sort
      4. Quicksort
      5. Selection Sort
      6. Heap Sort
      7. Counting Sort
      8. Bucket Sort
      9. Criteria for Choosing a Sorting Algorithm
      10. References
    2. Chapter 5 Searching

      1. Overview
      2. Sequential Search
      3. Binary Search
      4. Hash-based Search
      5. Binary Tree Search
    3. Chapter 6 Graph Algorithms

      1. Overview
      2. Depth-First Search
      3. Breadth-First Search
      4. Single-Source Shortest Path
      5. All Pairs Shortest Path
      6. Minimum Spanning Tree Algorithms
      7. References
    4. Chapter 7 Path Finding in AI

      1. Overview
      2. Depth-First Search
      3. Breadth-First Search
      4. A*Search
      5. Comparison
      6. Minimax
      7. NegMax
      8. AlphaBeta
      9. References
    5. Chapter 8 Network Flow Algorithms

      1. Overview
      2. Maximum Flow
      3. Bipartite Matching
      4. Reflections on Augmenting Paths
      5. Minimum Cost Flow
      6. Transshipment
      7. Transportation
      8. Assignment
      9. Linear Programming
      10. References
    6. Chapter 9 Computational Geometry

      1. Overview
      2. Convex Hull Scan
      3. LineSweep
      4. Nearest Neighbor Queries
      5. Range Queries
      6. References
  3. III

    1. Chapter 10 When All Else Fails

      1. Variations on a Theme
      2. Approximation Algorithms
      3. Offline Algorithms
      4. Parallel Algorithms
      5. Randomized Algorithms
      6. Algorithms That Can Be Wrong, but with Diminishing Probability
      7. References
    2. Chapter 11 Epilogue

      1. Overview
      2. Principle: Know Your Data
      3. Principle: Decompose the Problem into Smaller Problems
      4. Principle: Choose the Right Data Structure
      5. Principle: Add Storage to Increase Performance
      6. Principle: If No Solution Is Evident, Construct a Search
      7. Principle: If No Solution Is Evident, Reduce Your Problem to Another Problem That Has a Solution
      8. Principle: Writing Algorithms Is Hard—Testing Algorithms Is Harder
  4. IV

    1. Appendix A Benchmarking

      1. Statistical Foundation
      2. Hardware
      3. Reporting
      4. Precision
  1. About the Authors

  2. Colophon