man*_*nsu 61
摘要:
Joe*_*dge 40
查看JGraphT是一个非常简单而强大的Java图形库,它做得非常好,为了减轻任何混淆,与JGraph不同.一些示例代码:
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);
Run Code Online (Sandbox Code Playgroud)
kop*_*por 14
Apache Commons提供commons-graph.在http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/下, 可以检查来源.示例API使用也在SVN中.有关已实现算法的列表,请参阅https://issues.apache.org/jira/browse/SANDBOX-458,并与Jung,GraphT,Prefuse,jBPT进行比较
Google Guava如果您只需要良好的数据结构.
JGraphT是一个图形库,其中实现了许多算法并且(在我的观点中)具有良好的图形模型.Helloworld示例.许可证:LGPL + EPL.
JUNG2也是一个BSD许可的库,其数据结构类似于JGraphT.它提供了JGraphT目前缺少的布局算法.最近的提交是从2010年开始的,包hep.aida.*
是LGPL(通过colt库,由JUNG导入).这可以防止JUNG被用于ASF和ESF旗下的项目中.也许应该使用github fork并删除该依赖项.提交f4ca0cd正在镜像最后一次CVS提交.当前提交似乎删除了可视化功能.提交d0fb491c添加了一个.gitignore
.
Prefuse使用矩阵结构存储图形,这对于稀疏图形而言不是内存有效的.许可证:BSD
Eclipse Zest内置了图形布局算法,可以独立于SWT使用.请参阅org.eclipse.zest.layouts.algorithms.使用的图形结构是Eclipse Draw2d之一,其中节点是显式对象,而不是通过泛型注入(在Apache Commons Graph,JGraphT和JUNG2中发生).
确信Graph可以简单地表示为:
class Node {
int value;
List<Node> adj;
}
Run Code Online (Sandbox Code Playgroud)
并实现大多数你自己感兴趣的算法.如果您在图表上的某些练习/学习会话中遇到这个问题,那么这是最好的库.;)
对于大多数常见算法,您也可以更喜欢邻接矩阵:
class SparseGraph {
int[] nodeValues;
List<Integer>[] edges;
}
Run Code Online (Sandbox Code Playgroud)
或某些操作的矩阵:
class DenseGraph {
int[] nodeValues;
int[][] edges;
}
Run Code Online (Sandbox Code Playgroud)