views:

339

answers:

2

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.

+1  A: 

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"

tucuxi
I still hope there exists good library in Java.
A: 

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;
}
mikek3332002