Before I start this project I would like to do a little research into what is currently out there in terms of usable libraries and support tools for graphs. I can see that graphs will be very useful in my professional career, however, I don't at this time have any experience using a library or even a GUI to manage graphs.
Graphviz - Graph Visualization Software (Made by AT&T research labs)
JGraph - (commerical) - The Java Open Source Graph Drawing Component
Programming libraries for Java
JGraphT - (LGPL) free Java graph library, works with JGraph for visualization.
JUNG - the Java Universal Network/Graph Framework--is a software library that provides a common and extendible language for the modeling, analysis, and visualization of data that can be represented as a graph or network.
Programming Libraries for C++/C
The Boost Graph Library - C++ library for graphs (All of the authors were last reported to be at Indiana University).
The Parallel Boost Graph Library - Parallel and Distributed Graph Computation C++ libraries modeled after BGL (also developed at Indiana University)
GOBLIN: (LGPL) A C++ Graph Object Library for Network Programming Problems
GTL - (Closed license) The C++ Graph Template library
PIGALE - (GPL) C++ PIGALE includes both a graph algorithm library, a graph editor, and graph drawing library.
Programming libraries for C#
QuickGraph: (zlib/png) A 100% C# graph library with Graphviz Support. (modeled after the boost graph interfaces)
Misc stuff relating to Graphs
GraphML - A XML markup language for graphs.
Documentation and/or tutorials
CodeGuru: Discover the Network Search Capabilities of the Boost ...
A Boost Graph Library Tutorial - sample chapter is excerpted from The Boost Graph Library: User Guide and Reference Manual, by Jeremy Siek
Since the project orginally called for a Java applet, I decided I would write the project using the JGraphT project with JGraph for visualization. I'm developing the software inside the NetBeans IDE as before, however, this time I had to do some fancy overriding for the custom panel drawing. [Override panel in NetBeans] and [Drawing on a JPanel]
Documentation Used to Build Project
JGraph User Guide
JavaDocs for JGraphT
Design and Analysis of Computer Algorithms
Data Structures and Algorithms with Object-Oriented Design Patterns in Java
Using timers in Swing Applications
Asked question about doing things with edges.
Update Feb 21st: Now that I'm head deep in JGraph development, I really wish I would have used the boost libraries. The JGraph libraries are not documented very well and there is little example code to do anything. I spent A LOT of time just doing simple visualization stuff that I could have implemented myself using the canvas. I'm a bit disappointed in the whole thing. However, I would like to finish this project. I'm almost there... (course you never know how bad it is going to be when interfacing to someone else's code). I hope that you are understanding in this delay, my family and I have been sick and I really was TRYing to do above and beyond the call of duty.....I won't be in class today as I am very sick. I've posted what I've got on the website now.
< Prev Next >