有人对图形算法的Java库有很好的经验吗?我试过JGraph,发现它还行,谷歌中有很多不同的。有哪些是人们在实际生产代码中成功使用或推荐的?
澄清一下,我不是在寻找一个生成图形/图表的库,我在寻找一个有助于图算法的库,例如最小生成树,Kruskal的算法节点,边等。理想情况下,它在一个漂亮的Java OO API中具有一些良好的算法/数据结构。
有人对图形算法的Java库有很好的经验吗?我试过JGraph,发现它还行,谷歌中有很多不同的。有哪些是人们在实际生产代码中成功使用或推荐的?
澄清一下,我不是在寻找一个生成图形/图表的库,我在寻找一个有助于图算法的库,例如最小生成树,Kruskal的算法节点,边等。理想情况下,它在一个漂亮的Java OO API中具有一些良好的算法/数据结构。
当前回答
查看蓝图:
蓝图是属性图数据模型的接口、实现、实现和测试套件的集合。蓝图类似于JDBC,但用于图形数据库。在TinkerPop开源软件堆栈中,蓝图作为基础技术用于:
管道:一个惰性的数据流框架
Gremlin:一种图遍历语言
框架:对象到图的映射器
熔炉:一个图形算法包
Rexster:图形服务器
其他回答
在可视化方面,我们小组取得了一些成功。我们扩展了它来处理建筑地板和气泡图,它没有太多抱怨。他们也推出了一个新的Flex工具包,叫做Flare,它使用了非常相似的API。
更新: 我不得不同意这个评论,我们最终写了很多自定义功能/围绕prefuse限制工作。我不能说从头开始会更好,因为我们能够从第一天开始使用prefuse来演示进度。另一方面,如果我们正在做相同东西的第二个实现,我可能会跳过prefuse,因为我们会更好地理解需求。
在一个大学项目中,我摆弄了yWorks的yFiles,发现它有很好的API。
试试Annas吧,它是一个开源的图形包,很容易掌握
http://annas.googlecode.com
查看蓝图:
蓝图是属性图数据模型的接口、实现、实现和测试套件的集合。蓝图类似于JDBC,但用于图形数据库。在TinkerPop开源软件堆栈中,蓝图作为基础技术用于:
管道:一个惰性的数据流框架
Gremlin:一种图遍历语言
框架:对象到图的映射器
熔炉:一个图形算法包
Rexster:图形服务器
Apache Commons提供了Commons -graph。在http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/下可以查看源代码。SVN中也有API使用示例。参见https://issues.apache.org/jira/browse/SANDBOX-458获得实现的算法列表,并与Jung, GraphT, Prefuse, jBPT进行比较
谷歌番石榴如果你只需要好的数据结构。
JGraphT是一个实现了许多算法的图库,并且(在我看来)有一个很好的图模型。Helloworld例子。许可:LGPL + EPL。
JUNG2 is also a BSD-licensed library with the data structure similar to JGraphT. It offers layouting algorithms, which are currently missing in JGraphT. The most recent commit is from 2010 and packages hep.aida.* are LGPL (via the colt library, which is imported by JUNG). This prevents JUNG from being used in projects under the umbrella of ASF and ESF. Maybe one should use the github fork and remove that dependency. Commit f4ca0cd is mirroring the last CVS commit. The current commits seem to remove visualization functionality. Commit d0fb491c adds a .gitignore.
Prefuse使用矩阵结构存储图,这对于稀疏图来说内存效率不高。许可:BSD
Eclipse Zest内置了图形布局算法,可以独立于SWT使用。看到org.eclipse.zest.layouts.algorithms。所使用的图结构是Eclipse Draw2d中的一个,其中节点是显式对象,而不是通过泛型注入的(这发生在Apache Commons graph、JGraphT和JUNG2中)。