To start using this project download or clone the repository. The jars included in the lib/
folder need
to be included in your projects classpath for it to be able to use the JUNG2 libraries, and the DOM4J to
parse graphml files. Some of the jars are dependencies of others which is why there are quite a few.
Please keep classes simple, and preferably static (this is not always possible and is up to me to enforce moving
forward with the other components of the system, see GraphML loader or PathBasedComponents). A class should
implement a few basic public methods which the users would be able to invoke. Classes should preferably be generic
for vertices and edges, however if your algorithm requires setting attributes for vertices or edges then you can use
<V extends Vertex, E extends Edge>
where Vertex and Edge are in the core.components
package. There
are no dependencies between classes in this library, except for the few interfaces that are implemented.
You can feel free to use any classes/methods within the library if they will help you implement your algorithm.
Therefore you should be free to create your algorithms without needing to rely on what has already been
developed. (Of course, you can use the generators to create random graphs to test your algorithm on, or
the graph loaders.) Try to include your algorithm in a package that is related to its functionality, or
you can create a new package if your algorithm does not fit with the provided packages.
If you need to develop an extension of the JUNG2 Graph class for your implementation you can implement
that and store the class in the core.components
package.
If you would like to visualize your algorithms you can implement a viewGraph
method in your class, similar
to what you can find in the Breadth/Depth First Search classes where you can customize the visualizer to
generate what is most appropriate for your algorithms. Extended visualizers can be included in the core.visualizer
package if you would like it to be available for more than a particular class.
A complete, up to date version of the Javadoc for this project has been generated which should explain how the provided algorithms work and their dependencies.
A complete Javadoc for JUNG2 can be found at http://jung.sourceforge.net/doc/api/
If you have any questions about how to use these libraries you can contact me by email at [email protected]
If you have any suggestions for improvements to this library I would always welcome the input, feel free to submit pull requests if you have made an improvement to the library. It would be much appreciated!