With sample problems and mathematical proofs demonstrating the correctness of each algorithm, this book is ideal as a textbook for classroom study, but its reach doesn't end there. The authors do a fine job at explaining each algorithm. (Reference sections on basic mathematical notation will help readers bridge the gap, but it will help to have some maths background to appreciate the full achievement of this handsome hardcover volume.) Every algorithm is presented in pseudo-code, which can be implemented in any computer language, including C/C++ and Java. This ecumenical approach is one of the book's strengths. When it comes to sorting and common data structures, from basic linked list to trees (including binary trees, red-black and B-trees), this title really shines with clear diagrams that show algorithms in operation. Even if you glance over the mathematical notation here, you can definitely benefit from this text in other ways.
The book moves forward with more advanced algorithms that implement strategies for solving more complicated problems (including dynamic programming techniques, greedy algorithms, and amortised analysis). Algorithms for graphing problems (used in such real-world business problems as optimising flight schedules or flow through pipelines) come next. In each case, the authors provide the best from current research in each topic, along with sample solutions.
This text closes with a grab bag of useful algorithms including matrix operations and linear programming, evaluating polynomials and the well-known Fast Fourier Transformation (FFT) (useful in signal processing and engineering). Final sections on "NP-complete" problems, like the well-known traveloling salesmen problem, show off that while not all problems have a demonstrably final and best answer, algorithms that generate acceptable approximate solutions can still be used to generate useful, real-world answers.
Throughout this text, the authors anchor their discussion of algorithms with current examples drawn from molecular biology (like the Human Genome project), business, and engineering. Each section ends with short discussions of related historical material often discussing original research in each area of algorithms. In all, they argue successfully that algorithms are a "technology" just like hardware and software that can be used to write better software that does more with better performance. Along with classic books on algorithms (like Donald Knuth's three-volume set, The Art of Computer Programming), this title sets a new standard for compiling the best research in algorithms. For any experienced developer, regardless of their chosen language, this text deserves a close look for extending the range and performance of real-world software. --Richard Dragan
From the Publisher
The first edition became the standard reference for professionals and a widely used text in universities worldwide. The second edition features new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming, as well as extensive revisions to virtually every section of the book. In a subtle but important change, loop invariants are introduced early and used throughout the text to prove algorithm correctness. Without changing the mathematical and analytic focus, the authors have moved much of the mathematical foundations material from Part I to an appendix and have included additional motivational material at the beginning.
About the Author
Charles E. Leiserson is Professor of Computer Science and Engineering at the Massachusetts Institute of Technology.
Ronald L. Rivest is Andrew and Erna Viterbi Professor of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology.
Clifford Stein is Professor of Industrial Engineering and Operations Research at Columbia University.