好的图形/复杂网络库

时间:2012-03-07 13:55:05

标签: algorithm graph complex-networks

我正在寻找图形分析库或框架的好建议,更好的C ++或java。我找到了一些图库,

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

此网页提供了一些可能的解决方案:

•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年的最后一个版本现在看起来很陈旧。

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

  1. 良好的数据结构和算法。它可以分析复杂网络的属性。
  2. 可扩展:我可以修改并实现我的算法
  3. 可以分析具有百万个节点和边缘的图/网络
  4. 复杂的网络本身可以产生更好,节省我的时间来寻找真正复杂的网络。
  5. 分析功能和可扩展性是我主要关注的问题。有没有人有建议。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

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

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