This book serves as a manual on algorithm design, giving computer experts and students alike access to combinatorial algorithm technology. It uses a narrative to explain the principles of algorithms in a way that makes the information interesting and simple to understand.

I've found that the majority of professional programmers are ill-equipped to handle issues with algorithm design. It's unfortunate because one of the fundamentally useful technologies in computer science is the methodology of algorithm design.

Designing accurate, effective, and implementable algorithms for real-world issues necessitates expertise from two different knowledge bases:

- Techniques - Good algorithm designers understand several fundamental algorithm design techniques, including data structures, dynamic programming, depth-first search, backtracking, and heuristics. Perhaps the single most important design technique is modeling, the art of abstracting a messy real-world application into a clean problem suitable for algorithmic attacks.
- Resources - Good algorithm designers stand on the shoulders of giants. Rather than laboring from scratch to produce a new algorithm for every task, they can figure out what is known about a particular problem. Rather than re-implementing popular algorithms from scratch, they seek existing implementations to serve as a starting point. They are familiar with many classic algorithmic problems, which provide sufficient source material to model most any application.

This revised and updated second edition of a timeless blockbuster continues to debunk the "mystery" surrounding the creation, evaluation, and efficacy of algorithms. The book has improved on the extremely effective formula of the first edition and is now the standard textbook for any algorithm design course while continuing to hold its position as the top practical reference manual for algorithms.