2

我正在寻找关于图形分析库或框架的好的推荐,最好是 C++ 或 java。我找到了一些图形库,</p>

https://stackoverflow.com/questions/3010805/scalable-parallel-large-graph-analysis-library

这个网页给出了一些可能的解决方案:</p>

• C++——最可行的解决方案似乎是Boost Graph Library 和Parallel Boost Graph Library。我也在关注 MTGL,尽管它更倾向于像 Cray XMT 这样的大规模多线程硬件架构。最后,我已将 LEMON 添加到我的列表中以供考虑。• C - igraph 和 SNAP(小世界网络分析和分区);后者使用 OpenMP 在 SMP 系统上进行并行处理。• Java - 我在这里还没有发现并行库,但 JGraphT 和 JUNG 可能是非并行领域的主要竞争者。• Python - igraph 和 NetworkX 看起来是最可靠的选择,尽管两者都不是并行的。BGL 曾经有 Python 绑定,但现在不受支持;2005 年的最后一个版本现在看起来已经过时了。

但我不确定我应该根据自己的需要使用哪一个:</p>

  1. 良好的数据结构和算法。它可以分析复杂网络的属性。
  2. Scalable:我可以在上面修改和实现我的算法
  3. 可以分析具有数百万个节点和边的图/网络
  4. 复杂网络可以自己制作会更好,节省我寻找真正复杂网络的时间。

分析能力和可扩展性是我最关心的问题。有没有人有建议。任何建议都会有所帮助。

4

1 回答 1

0

我用过networkx,它和Jung 一样好用。如果您的数据在内存中,那么这两个工作得很好,但我对它们两个的问题是缺乏持久性(您可以将两者保存到 xml 文件并将其上传/下载到数据库,但没有数据库内分析限制图形的大小与内存的大小)。

最近我一直在玩 neo4j(和各种附加组件),它解决了这个问题。它不会无限扩展,但如果您的数据少于 320 亿个节点,那么它作为存储引擎的速度非常快,您可以使用其他内核(或工作机器)并行分析图形。有很多关于它们如何真正快速的性能文档,但我通常不同意这些类型的测试,因为它不是我的测试用例,所以我建议你下载它(在 neo4j.org 上免费)并自己判断。

于 2012-03-07T15:03:19.537 回答