
A Java Library of Graph Algorithms and Optimization
by Hang T. LauBecause of its portability and platform-independence, Java is the ideal computer programming language to use when working on graph algorithms and other mathematical programming problems. Collecting some of the most popular graph algorithms and optimization procedures, A Java Library of Graph Algorithms and Optimization provides the source code for a library of Java
Overview
Because of its portability and platform-independence, Java is the ideal computer programming language to use when working on graph algorithms and other mathematical programming problems. Collecting some of the most popular graph algorithms and optimization procedures, A Java Library of Graph Algorithms and Optimization provides the source code for a library of Java programs that can be used to solve problems in graph theory and combinatorial optimization. Self-contained and largely independent, each topic starts with a problem description and an outline of the solution procedure, followed by its parameter list specification, source code, and a test example that illustrates the usage of the code.
The book begins with a chapter on random graph generation that examines bipartite, regular, connected, Hamilton, and isomorphic graphs as well as spanning, labeled, and unlabeled rooted trees. It then discusses connectivity procedures, followed by a paths and cycles chapter that contains the Chinese postman and traveling salesman problems, Euler and Hamilton cycles, and shortest paths. The author proceeds to describe two test procedures involving planarity and graph isomorphism. Subsequent chapters deal with graph coloring, graph matching, network flow, and packing and covering, including the assignment, bottleneck assignment, quadratic assignment, multiple knapsack, set covering, and set partitioning problems. The final chapters explore linear, integer, and quadratic programming. The appendices provide references that offer further details of the algorithms and include the definitions of many graph theory terms used in the book.
Product Details
- ISBN-13:
- 9781584887188
- Publisher:
- Taylor & Francis
- Publication date:
- 10/28/2006
- Series:
- Discrete Mathematics and Its Applications Series , #43
- Edition description:
- New Edition
- Pages:
- 386
- Product dimensions:
- 7.10(w) x 10.10(h) x 1.10(d)
Customer Reviews
Average Review:
Most Helpful Customer Reviews
![]() |
In my self-study on optimization topics, the program library of this book has been extremely helpful for me to readily compute solutions to many small size problems. Having such an extensive tool at hand is definitely valuable. I would not recommend this book to be used as a learning text on the subject, since it contains very minimal tutorial description.
|
![]() |
The book provides a convenient Java library of source code that is very useful for experimental and educational purposes in solving many typical problems on graph algorithms and optimization.
|
![]() |
This is an excellent library tool for solving small size exercise problems in textbooks.
|
![]() |
There are so many problems with this book, it's hard to know where to begin. So I don't come across as all and only negative, I will first give it credit for gathering together, at least in name a large number of graph processing algorithms. That said, here are the problems: The book is just a catalog of graph algorithms with poorly done documentation and even worse actual code. To wit: *Each algorithm is preceded by a very brief explanation of what it does and some of the issues involved. Suffice it to say that it's the sparsest and most minimal explanation imaginable if you don't already understand the issues involved, you probably won't after reading the short paragraph or two that precedes each algorithm / method. *There is but ONE class and every bit of functionality is contained in its own individual, single static method. This 'design' causes not a few of the methods to literally run to a thousand and more lines and contain dozens and dozens of 'cryptically named' member variables. So for instance, if you are interested in planarity testing, there's a 'method' called planarityTesting that takes four parameters and returns true or false. All well and good until you actually look at that method and see declared 51 , that's fifty-one, member variables. Each of these variables has poorly chosen names like, 'wkpathfind2' and 'store2' and 'store3' and of course 'store4' and 'sortptr1' and 'sortptr2'. I thought this tactic of vowel-conserving naming of variables went out with the 8 + 3 DOS naming convention. At any rate, the cryptic naming scheme combined with the lack of javadoc combine to render each variable's purpose completely opaque. This makes it all but impossible to relate the code to the underlying graph theory. Then comes the code. Imagine a thousand and more lines, literally page after page after page of streaming code, all one single method, manipulating these cryptic variables in virtually uncommented ways. That is pretty much what you get with this book. One algorithm after another after another. I would say the following: 1' the author codes as if from another time. There is NO object-oriented design to this code whatsoever. None. Zero. Zip. 2'The methods are hundreds or thousands of lines of what amounts to undocumented symbol manipulation. There is small chance to learn anything from this book with respect to relating the code to graph theory. 3' I can say that, having implemented many of the algorithms in this book myself prior to buying this book, the book has contributed nothing to my understanding and further, that already understanding the issues surrounding many of these methods, that is being a qualified reader, is NOT sufficient to allow the reader to follow and understand the algorithms. 4 If you only want to use the 'static' methods to return a value or ascertain some property of a graph and you don't care to understand how it works or why it works, then perhaps you'll be happy with this book, but then , why not release the object code as blackbox library? If the code was never meant to be read, and there is no attempt at explaining graph theory as it relates to the code, then what of value is left for the reader? 5 Finally, if the purpose of the book is deliver a good 'black-box' library, readers should know that the actual implementation of the graph 'object' chosen in this book makes will make that problematic. The book uses an adjacency matrix to represent the graph, a well known data structure in graph theory. Unfortunately, this data structure has the following well-known problem: it is only suitable for the rare instance of dense graphs. The runtime performance and memory demands of this data structure make it unsuitable to any but very very small graphs. Most graphs are neither very very small nor very very dense, 'as dense is defined in graph theory', and for that reason almost all graph drawing packages opt f
|