2010-01-28 123 views
7

用于使用图形(边缘/节点)作为数据结构的良好Java API有哪些?用于图形/网络数据结构的Java API的列表

请在评论中为此维基添加对类似SO问题的引用。请直接编辑此wiki条目中的列表。请添加您添加的项目的摘要说明作为答案(每个答案一个项目)。

+0

类似:http://stackoverflow.com/questions/745048/looking-for-a-simple-java-api-for-creating-graphs-edges-nodes – harschware 2010-01-28 03:40:55

回答

4

JUNG - Java通用网络/图形框架 - 是一种软件库,为可以表示为图形或网络的数据建模,分析和可视化提供通用的可扩展语言。

4

JGraphT - JGraphT是一个免费的Java图形库,提供数学图论的对象和算法。 JGraphT支持各种类型的图形,包括:

  • 有向图和无向图。
  • 图形与加权/不加权/标记或任何用户定义的边缘。
  • 各种边缘多样性选项,包括:简单图,多图,伪图。
  • 不可修改图 - 允许模块提供对内部图的“只读”访问。
  • 可监听图形 - 允许外部监听器跟踪修改事件。
  • 在其他图上自动更新子图视图的子图。
  • 上述图表

的所有组合物(需要Java 1.6)

+0

JGraph似乎是为了可视化。 – harschware 2010-01-28 15:31:02

+0

我编辑删除JGraph作为不适合和Jung如前所述。现在遵循每个答案格式的一个API ......感谢@Kaleb Brasee的原始帖子。 – harschware 2010-01-28 15:50:52

2

JDSL - JDSL是数据结构库中的Java。它的Java接口和实现基本的数据结构和算法类,如集合:

  • 序列,树木,优先级队列,搜索树,哈希表
  • 排序和搜索算法
  • 图遍历,最短路径,最小生成树

(JDSL似乎并不支持泛型)

6

我在网上为我的MS论文搜索了很多Java Graph Library。 我建议你以下框架:

  1. GraphStream:它有非常简单的API,它是大量的算法。它提供了许多图形结构(定向,无向,多图形等)和许多可视化工具。
  2. JUNG:这个框架已经存在了一段时间,所以它具有强大且经过充分测试的特性。 最后一个版本是在2010年,所以语法比较陈旧。

这两个框架都有很多算法和可视化工具。

如果你关心内存和性能,并且你只需要图形数据结构(没有算法,没有可视化),我会建议AuroraGraphManager,这是我实现的图形数据结构和我的论文的一部分。我上面提出的框架对我来说并不合适,因为我必须处理相当大的图形(高达3亿条边)。

希望它有帮助!