有没有人对Graph算法的任何Java库有很好的经验。我试过JGraph,发现它没问题,而且google中有很多不同的东西。有没有人实际使用生产代码或推荐?为了澄清,我不是在寻找一个产生图形/图表的图书馆,我正在寻找一个可以帮助图表算法的图表,例如最小生成树,克鲁斯卡尔算法节点,边缘等。理想情况下,良好的Java OO API中的算法/数据结构。好的Java图算法库?
回答
如果您使用JGraph,你应该给一个尝试JGraphT这是专为算法。它的一个特点是使用JGraph库进行可视化。它还在开发中,但非常稳定。我前段时间分析了JGraphT算法的复杂性。其中一些并不是最快的,但如果你要自己实现它们并需要显示你的图表,那么它可能是最好的选择。我非常喜欢使用它的API,当时我很快就要编写一个在图形上工作并在稍后显示的应用程序。
为了可视化,我们的小组在prefuse上取得了一些成功。我们扩展它来处理建筑地板和气泡图,并没有太多抱怨。他们有一个新的Flex工具包,名为Flare,它使用了非常相似的API。
更新: 我不得不同意评论,我们最终写了很多定制功能/解决prefuse限制。我不能说从头开始会更好,因为我们能够通过使用prefuse从第1天展示进步。另一方面,如果我们再次执行相同的任务,则可能会跳过prefuse,因为我们会更好地理解需求。
你对prefuse有什么个人想法?在我上一份工作中,一个项目开始使用它,但最终以90%以上的版本重新编写(并优化了,并增加了新功能)prefuse。 – 2008-09-09 11:33:22
如果你真的在寻找图表库,而不是为节点/边缘图库,我会建议在Big Faceless Graph库(BFG)上挥霍。它比JFreeChart更容易使用,看起来更好,运行速度更快,有更多的输出选项,真的没有比较。
您误解了这个问题:它是关于具有节点和边缘的那种图形,而不是那种有馅饼和条形的图形。 – amarillion 2011-10-20 10:55:19
JUNG是一个很好的可视化选项,也有一套相当不错的可用图形算法,包括随机图形创建,重新布线等几种不同的机制。我也发现它通常很容易扩展并在必要时进行调整。
包hep.aida。*是LGPL(http://acs.lbl.gov/software/colt/license.html)。这是通过马驹(http://jung.sourceforge.net/download.html)导入的。这可以防止JUNG被用于ASF和ESF的项目中。 也许应该使用github fork https:// github。com/rortian/jung2并删除该依赖项。 https://github.com/rortian/jung2/commit/f4ca0cdcd3312589cbb48de7350b84cbff6067b9是镜像最后的CVS提交。目前的提交似乎删除了可视化功能。 – koppor 2013-05-26 11:58:24
自2010年以来没有发布,我认为这个项目被放弃 – Yacino 2017-05-12 08:35:37
我不知道是否可以称之为生产就绪,但有jGABL。
退房JGraphT的,这是非常出色和,以消除任何混淆一个非常简单而强大的Java图形库,比JGraph不同。有些sample code:
UndirectedGraph<String, DefaultEdge> g =
new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
String v1 = "v1";
String v2 = "v2";
String v3 = "v3";
String v4 = "v4";
// add the vertices
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
g.addVertex(v4);
// add edges to create a circuit
g.addEdge(v1, v2);
g.addEdge(v2, v3);
g.addEdge(v3, v4);
g.addEdge(v4, v1);
这是一个伟大的演示在这里https://github.com/jgrapht/jgrapht/wiki/DirectedGraphDemo – 2016-02-17 23:54:38
JDSL(数据结构库中的Java)应该是足够好,如果你到图形算法 - http://www.cs.brown.edu/cgc/jdsl/
谢谢你,我从来没有遇到它。你在使用它吗? – 2009-02-24 09:31:13
摘要:
- JGraphT如果你更感兴趣的数据结构和算法。
- JGraph如果您的主要焦点是可视化。
- Jung,yWorks和BFG是人们尝试使用的其他东西。
- Prefuse是一个不是没有,因为必须重写大部分。
- Google Guava如果您只需要良好的数据结构。
- Apache Commons Graph。目前处于休眠状态,但为许多算法提供了实现。见https://issues.apache.org/jira/browse/SANDBOX-458对于实现的算法,也与荣格,GraphT,Prefuse相比列表,jBPT
尝试安纳斯的一个开源图形包这是很容易得到认真处理
http://neo4j.org/是一个图形数据库,它包含许多图形算法,并且比大多数内存库更好地扩展。
http://incubator.apache.org/hama/是一个关于Hadoop的分布式科学软件包,用于大规模矩阵和图形数据。
从http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html
JGraph提供一个功能强大的软件与图形(直接或undirect)工作。还生成Graphivz代码,您可以看到图形表示。您可以将自己的代码算法放入pakage中,例如:回溯代码。该包提供了一些算法:Dijkstra,backtracking minimun路径成本等。
Apache Commons offers commons-graph。在http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/之下,可以检查来源。示例API使用也是in the SVN。如果您只需要良好的数据结构,请参阅https://issues.apache.org/jira/browse/SANDBOX-458以获取已实现算法的列表,并与Jung,GraphT,Prefuse进行比较,jBPT
JGraphT是一个图表库,其中实现了很多算法,并且具有(在我的思想中)一个好的图模型。 Helloworld Example。许可证:LGPL + EPL。
JUNG2也是BSD许可的库,其数据结构类似于JGraphT。它提供了布局算法,目前在JGraphT中缺少。最近的提交是从2010年开始的,包hep.aida.*
是LGPL(通过colt library,其中is imported by JUNG)。这可以防止JUNG被用于ASF和ESF的项目中。也许应该使用github fork并删除该依赖关系。 Commit f4ca0cd正在镜像最后一次CVS提交。目前的提交似乎删除了可视化功能。 Commit d0fb491c增加了一个.gitignore
。
Prefuse使用矩阵结构存储图,该矩阵结构对于稀疏图不是有效的存储器。许可证:BSD
Eclipse Zest内置了图形布局算法,可以独立于SWT使用。见org.eclipse.zest.layouts.algorithms。所使用的图形结构是Eclipse Draw2d之一,其中Nodes are explicit objects并非通过泛型注入(如在Apache Commons Graph,JGraphT和JUNG2中发生的那样)。
教学图形算法的实现可以在这里找到(由教授塞奇威克等人。): http://algs4.cs.princeton.edu/code/
我被介绍给他们,而出席coursera这些特殊的算法课程(也由教授授课塞奇威克。 ):
这也是很好的确信,一个图可表示为:
class Node {
int value;
List<Node> adj;
}
并实现大多数您自己感兴趣的算法。如果你在图表的某个练习/学习环节的中间出现这个问题,这是最好的考虑。 ;)
你也可以喜欢邻接矩阵为最常见的算法:
class SparseGraph {
int[] nodeValues;
List<Integer>[] edges;
}
或矩阵的一些操作:
class DenseGraph {
int[] nodeValues;
int[][] edges;
}
- 1. 良好的图形算法库
- 2. 用于图论算法的Java库
- 3. 遗传算法的哪个Java库/库?
- 4. 良好的图遍历算法
- 5. java中的优化算法库
- 6. C#图形算法库
- 7. Java的算法
- 8. 好算法视频
- 9. 什么是最好的开源纯java计算机视觉库?
- 10. 更好库矩阵运算
- 11. 最好的分割算法
- 12. 最好的压缩算法
- 13. 用于比较图算法的Java
- 14. 用什么java库进行图算法演示?
- 15. Java中的良好数据透视表/数据表算法
- 16. Java和VTK中的良好路径最小化算法2D
- 17. MergeSort算法 - java
- 18. Java:有损图像压缩算法
- 19. 算法库
- 20. 使用Dijkstra算法和柠檬图库
- 21. 一个使用Jogl(并非Java2D)的Java的良好绘图库
- 22. 具有最小刻度的图表的好标签算法
- 23. 图算法来算
- 24. 最好的java连接的lib库?
- 25. 实现模运算的更好方法(算法问题)
- 26. 什么是算法必须研究,以使更好的算法
- 27. 更好的计算概率的方法?
- 28. Rails的:一个好的搜索算法
- 29. LZW或JBIG是更好的图像无损压缩算法吗?
- 30. 频繁项集最好的算法和图书馆
JGraph现在有一个分析包,包括一系列分析功能,http://jgraph.github.com/mxgraph/java/docs/index.html。 – David 2013-03-25 20:56:19