有人对图形算法的Java库有很好的经验吗?我试过JGraph,发现它还行,谷歌中有很多不同的。有哪些是人们在实际生产代码中成功使用或推荐的?

澄清一下,我不是在寻找一个生成图形/图表的库,我在寻找一个有助于图算法的库,例如最小生成树,Kruskal的算法节点,边等。理想情况下,它在一个漂亮的Java OO API中具有一些良好的算法/数据结构。


当前回答

http://neo4j.org/是一个包含许多图算法的图数据库,并且比大多数内存库具有更好的伸缩性。

其他回答

相信一个图可以简单地表示为:

class Node {
   int value;
   List<Node> adj;
}

实现大部分你自己感兴趣的算法。如果您在一些关于图形的练习/学习过程中遇到了这个问题,那么这是最好的库。,)

对于大多数常见算法,你也可以选择邻接矩阵:

class SparseGraph {
  int[] nodeValues;
  List<Integer>[] edges;     
}

或者一些运算的矩阵:

class DenseGraph {
  int[] nodeValues;
  int[][] edges;     
}

如果你喜欢图形算法,JDSL (Java中的数据结构库)应该足够好了——http://www.cs.brown.edu/cgc/jdsl/

http://neo4j.org/是一个包含许多图算法的图数据库,并且比大多数内存库具有更好的伸缩性。

在一个大学项目中,我摆弄了yWorks的yFiles,发现它有很好的API。

java中的教学图算法实现可以在这里找到(由教授Sedgewick等人): http://algs4.cs.princeton.edu/code/

我是在coursera上参加这些优秀的算法课程时被介绍给他们的(也由Sedgewick教授教授):

https://www.coursera.org/course/algs4partI

https://www.coursera.org/course/algs4partII