Issue No. 05 - September/October (2009 vol. 11)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MCSE.2009.149
Algorithms—can't live without 'em; can't find 'em. Or, at any rate, can't find that one you want when you have a problem in mind and suspect that someone else long-ago published a solution. Here, then, are two books with very different approaches to this algorithm recall problem.
Encyclopedia of Algorithms is a massive book, organized alphabetically into some 400 entries, each two to three pages in length and written by individual authors. Standard section headings—such as "problem definition" and "key results"—impose some consistency, but editor-in-chief Ming-Yang Kao and 31 area editors have generally produced a hodge-podge that's highly variable in both level and quality. While some entries are marvelous summaries of an algorithmic area (such as the "Stable Marriage" entry), others (such as "Peptide De Novo Sequencing with MS/MS") seem to be little more than ads for commercial software based on one narrow piece of work.
Don't look to Encyclopedia of Algorithms for pseudo-code or as a how-to for simple implementations. It's much more in the lemma-lemma-theorem world of existence proofs and complexity bounds. At its best, however, it will send you off to the literature's foundational papers when you need something more practical.
A sad and avoidable deficiency in the book is its poor index. Inexplicably, many terms listed in each article's "keywords and synonyms" section aren't indexed, making it difficult to find exactly what you need. If you're interested in algorithms for energy-efficient, self-organizing networks, for example, you might have a hard time locating the article, which is indexed under "D" for "Degree-Bounded Planar Spanner with Low Weight" and "B" for "broadcast," but not "E" for energy, which is clearly the most useful.
As the preface states, the book will be updated regularly and evolve toward being primarily a searchable, Web-based resource. As such, it might well make a usable encyclopedia. However, as a book, now, it's fascinating to leaf through and occasionally rewarding to read in depth, but not very useful as a reference work.
O'Reilly's "in a nutshell" series has a well-deserved reputation for getting a lot of directly useful information into a manageable number of pages; Algorithms in a Nutshell is no exception. The book covers topics that are typically taught in a CS algorithms class, including sorting, searching, graph algorithms, and network flow. Key concepts are clearly stated, and it often lists pseudo-code for classic algorithms. Some topics include performance examples for model problems—sometimes in more detail than seems useful (think CS student term papers). The difference between this book and a standard textbook like Sedgewick's Algorithms, for example, is that this book expends no space on rigor, more space on code (generally C++), and is generally, well, "lite." If you somehow missed having a basic algorithms course and want to pick up a smattering, it's a perfectly good place to start.
In summary, while both these books are decent sources of algorithms, neither really solves the algorithm recall problem. We still need a good algorithm for that. Maybe it already exists, and we just need to find it.
William H. Press is Warren J. and Viola Mae Raymer Professor in Computer Science and Integrative Biology at the University of Texas, Austin. His most recent book is Numerical Recipes: The Art of Scientific Computing (3rd ed., Cambridge Univ. Press, 2007), which is full of algorithms. Contact him at firstname.lastname@example.org.