Features
- Cover Type: Hard Cover with 450 pages
- Published by: Springer
- Edition: 1st Edition October 28, 2002
- Written in: English
- ISBN 10 Number: 3540435506
- ISBN 13 Number: 978-3540435501
-
Book Dimensions:
9.4 x 6.5 x 1.2 inches
- Weighs: 1.9 pounds
Product Review
From the reviews:
"The main theme of this (research) monograph on graph algorithms is the isomorphism problem (for trees and graphs). Algorithms are both described on an intuitive basis and presented (and discussed) in detail using Knuth’s literate programming style (C++, using the LEDA library). Besides offering an introduction to an interesting and important subject (with applications, e.g., in biology and chemistry), it also is a valuable (and unified) reference to material previously only available in research papers." (P. Schmitt, Monatshefte für Mathematik, Vol. 142 (4), 2004)
"The book goes beyond classical graph problems and addresses algorithmic problems with practical applications. … will have a great potential in the hands of a dedicated teacher who is both willing and capable of using the software. Because much of the material in the book was previously only available in specialized research literature, this book will be very valuable also for researchers of algorithmic graph theory. This richly illustrated book has an extensive bibliography and several appendices describing the software." (Matti Vuorinen, Zentralblatt MATH, Vol. 1007, 2003)
Product Description
Graph algorithms is a well-established subject in mathematics and computer science. Beyond classical application fields, like approximation, combinatorial optimization, graphics, and operations research, graph algorithms have recently attracted increased attention from computational molecular biology and computational chemistry. Centered around the fundamental issue of graph isomorphism, this text goes beyond classical graph problems of shortest paths, spanning trees, flows in networks, and matchings in bipartite graphs. Advanced algorithmic results and techniques of practical relevance are presented in a coherent and consolidated way. This book introduces graph algorithms on an intuitive basis followed by a detailed exposition in a literate programming style, with correctness proofs as well as worst-case analyses. Furthermore, full C++ implementations of all algorithms presented are given using the LEDA library of efficient data structures and algorithms. Numerous illustrations, examples, and exercises, and a comprehensive bibliography support students and professionals in using the book as a text and source of reference
Reader ReviewsI'm pleased with the text in this book; the descriptions are almost all clear, and reading through the book gives me insight into some more interesting problems in trees and graphs. The high points of the book are its treaments of tree and graph isomorphism, but I also found the discussions of non-traditional traversal algorithms on trees and graphs very interesting. The author discussions leaf-first, breadth-first, and depth-first traversals and provides algorithms for their implementation. Many of the algorithms include correctness proofs. These topics alone made the book worth its to me. A deep academic book that costs less than $50 is nearly unheared-of. Unfortunately, there are two flaws that make the book hard to use. In a nutshell, the author expects the reader to buy into a couple of pretty invasive and expensive propositions. First, the author decided to use literate programming for all of his presented algorithms and code fragments. This isn't so bad, since literate programming is about documenting code. If you suppose that the author wrote the code, then documented it, then calld it a book, using a tool like literate programming seems like a natural choice. But if you're not familiar with literate programming, it's a bit of a chore. The author's introduction to literate programming doesn't help with some of the questions even an experienced programmer might have wend reading the text. More practically, literate programming enforces operators that are different than most C/C++ developers are familiar with, and can cause confusion when reading the text. ^ is used, for example, to indicate a logical and, where C/C++ developers expect it to indicate a bitwise-exclusive or. While it's esay to eventually overcome such tricks of memory, I've been finding it hard to scan literate programs to find definitions and declarations. The author doesn't include a CD (and at this cover price, that is hard to fault) but also doesn't make his code available for download. His website includes a LEDA-based program that interactively demonstrates some algorithms, but doesn't include code for the algorithm his own books develops and discusses. The other decision made by the author, to the overwhelming inconvenience of this reader, is the reliance on the LEDA library for his samples and programs. The algorithms are understandable without the library, but a reader without access to LEDA doesn't benefit from any of the visualizations the author provides. , and several include In fact, the author spends about forty pages discussing LEDA and the characteristics of its implementation. Maybe researchers working on tree and graph algorithms all use LEDA and have ready access to it, but the literate programming code provided to for some of the algorithms isn't useful to readers who aren't familiar with LEDA, as researching the definitions and declarations themsleves becomes arduous. The bibliography is very diverse, with more than 380 entries and is well-cited throughout the book. Unfortunately, the author sometimes relies on the bibliography too much. On page 392, the author brings up "the so-called graph isopomorphism disease" without defining it himself; he instead relies on his bibliography entries to give the user any definition or background on the "disease". Unfortunately, the index received not nearly as much attention as the bibliography; neglecting whitespace, it's scarcely more than a single page long! The book appears to be something more than a research paper, but is written much like a research apper would be. The book probably also serves well for a class that teaches this subject, and assumes LEDA and literate programming as prerequisites. But as a commercial developer who's interested in applying advanced graph and tree algorithms to the work I'm doing, I found the book has limited its value by relying on LEDA and applying literate programming. All this said, I still feel it's appropriate to give the book four stars. The material covered is hard to find elsewhere, and with some effort I can overcome the LEDA and literate programming hurdles. Since I don't use LEDA or literate programming day-to-day, I'll have to overcome that unfamiliarity every time I pick up the book as a reference.