The Algorithm Design Manual Corrected Edition
Use the Amazon App to scan ISBNs and compare prices.
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
- ASIN : 0387948600
- Publisher : Springer; Corrected edition (November 14, 1997)
- Language : English
- Hardcover : 486 pages
- ISBN-10 : 9780387948607
- ISBN-13 : 978-0387948607
- Item Weight : 8.8 ounces
- Dimensions : 7.25 x 1.25 x 9.5 inches
- Best Sellers Rank: #1,218,518 in Books (See Top 100 in Books)
- Customer Reviews:
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
Overall, I found that when confronted to real world problems, the "Algorithm Design Manual" was a better resource than other Algorithm books. This is why I'm recommending it to software engineers out there. It seems to be written for people working with algorithms to solve problems, rather than as a support for an academic course.
On the negative side: I find the resource catalog to be exhaustive but somewhat shallow. As I'm getting older and slower, some things are not as obvious as they used to be. For example, I was quite unable to derive how to use Voronoi diagrams to perform nearest neighbour search, although it is supposed to be "a simple matter".
The first part of the book is on techniques, and covers the basics of modeling algorithms along with "Big Oh" notation, data structures and sorting, dynamic programming, graph algorithms, combinational search, and the concept of intractibility. What makes this section of the book particularly interesting are the author's "war stories" that talk about real world applications of the ideas discussed in each chapter.
Part two of the book, "Resources", is an extensive catalog of algorithmic problems organized by type. For each problem mentioned, the book includes a problem description and discussion, possible implementations, and other algorithmic problems that are related to this one. In the implementation section for each algorithm, the author demonstrates the kinds of questions that the reader should ask when designing his or her own implementation. The C, C++, Fortran, and Pascal code for all algorithm implementations mentioned is on the accompanying CD rather than in the book itself, which helps make the book more compact.
This book is a very good introduction to the methods of algorithm analysis and design, and an encyclopedic reference on many different types of algorithms. Highly recommended.
Aside from this, the book has several features to recommend it:
(1) There are "war stories" scattered throughout the text. These are special sections that describe the author's experience working with algorithmic problems "in the field". These are particularly interesting because the present false starts and failures along the way to the final solution. This is a nice change from the standard model of simply presenting algorithms and proving them correct.
(2) Unlike others, such as the popular Cormen, Lieserson, Rivest and Stein text -- which is a bit advanced for beginning study -- this really is an introduction to algorithms. It is quite suitable for, say, undergradutes who have taken a couple of basic CS courses.
(3) Chapter 8 is a 250-page "Catalog of Algorithmic Problems". Here, you will find descriptions of hundreds of standard formulations for algorithmic problems along with the basic solution approaches, and -- this is what really sets it apart -- pointers to implementations of these algorithms. This is part of the overall emphasis of the book: that of understanding standard algorithms in order to avoid "reinventing the wheel".
Overall, I recommend this book for people with some programming experience that would like to take their work to the next level. Hardcore computer scientists (especially those with a more theoretical bent) may also benefit from this book, but should consider it a supplement to one of the more advanced texts, such as the above-mentioned CLRS.