am 12. Juni 1999
Combinatorial algorithms are widely used in a diverse set of applications areas from engineering, the biological and physical sciences, mathematics and computation, economics, and so on. In addition to their applied nature, combinatorial algorithms often rely on sophisticated results in combinatorics and algebra and on clever data structures. This makes the task of introducing the multi-faceted world of combinatorial algorithms a difficult one.
Kreher and Stinson have written a modern text that addresses the subject systematically, and from a variety of viewpoints. Their text is engaging and accessible to a senior undergraduate student. Nevertheless, a researcher will also find the text informative and useful. It provides an excellent balance of mathematical background, algorithm development, and algorithm implementation. The book has been designed to support an undergraduate course, and provides further material to support a more intensive graduate level course. The text has well designed chapter notes and exercises; the presentation of the methods through description, pseudocode, and examples is particularly clear. However, it is the selection of topics that makes this text especially good.
Numerous strong texts on graph algorithms are concerned with the analysis of properties of graphs rather than the generation and search for combinatorial objects. Highly structured combinatorial objects, such as error-correcting codes or interconnection networks, are notoriously difficult to find via computational methods. The authors develop a powerful toolkit of algorithms for addressing generation and search problems. They start with simple tools and then use these along with some basic combinatorial mathematics to build quite sophisticated tools. The text provides enough information to develop and understand each of the algorithms presented, and enough pointers for the interested reader to find more.
This is an excellent book. I enjoyed reading it. More importantly, there is no doubt that an interesting course can be taught from this book at either the undergraduate or graduate level. There is enough flexibility in the choice of material and emphasis to support a course on mathematical aspects, algorithmic techniques, or applications.