通过搜索最大公共子图同构来获取有关其相似性的信息,有没有人知道用于图形比较的优秀Java库?我不想根据节点标签比较图表。或者有没有其他方法如何拓扑比较图形与良好的Java库?现在我正在使用库SimPack它很有用,但我还需要更多东西。任何建议都会非常有用。
答案 0 :(得分:3)
经过一番浏览后,我发现C ++代码实现了几种匹配算法(Shmidt-Druffel,Ullman,VF,VF2),无需边缘或节点标记。 SimPack使用Valiente算法,这似乎是(我没有找到很好的描述)属性图特定。如果你用Java重写它,或编写一个JNI库来与它接口,请公开。
请参阅http://amalfi.dis.unina.it/graph/db/vflib-2.0
上述代码的作者在一篇论文中可以找到对最新技术水平的好评:“Thirty years of graph matching in pattern recognition”
答案 1 :(得分:1)
您可以从此帖子中获得一些答案Good Java graph algorithm library?
一些Java图库是: 图表可视化库JGraph
Java图算法库JGraphT
如果两者都不起作用,你可能想要使用下面的结构排列图形并在其上运行算法。
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;
}