Does anyone know a good Java library for graph comparing by searching maximal common subgraph isomorphism to get information about their similarity? I do not want to compare graphs based on node labels. Or is there any other way how to topologically compare graphs with good Java libraries? Now I am using library SimPack and it is useful but I need something more. Any suggestions will be very helpful.
After some browsing, I have found C++ code implementing several matching algorithms (Shmidt-Druffel, Ullman, VF, VF2) without need for edge or node labeling. SimPack uses the Valiente algorithm, which seems to be (I have found no good description) attributed-graph specific. If you rewrite this in Java, or write a JNI library to interface with it, please make it public.
See http://amalfi.dis.unina.it/graph/db/vflib-2.0
A good review of the state of the art can be found in a paper by the authors of the above code: "Thirty years of graph matching in pattern recognition"
You might get some answers from this thread http://stackoverflow.com/questions/51574/good-java-graph-algorithm-library
A couple Java Graph Libraries are: Graph Visualisation Library JGraph
Java Graph Algorithm Library JGraphT
If neither work you'll probably want to arrange graphs using a structure like below and run the algorithm on it.
public class Node<T>
{
public T NodeData;
public List<Edge> edges;
}
public class Edge
{
public Node<S> Source;
public Node<D> Destination;
public int weight;
}