2012-03-07 49 views
2

我期待爲圖分析庫或框架提供良好的建議,更好的使用C++或java。我已經發現了一些圖形庫,好圖/複雜網絡庫

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

本網頁給出了一些可能的解決方案:

•C++ - 最可行的解決方案似乎是Boost Graph庫和並行加速圖形庫。我也在研究MTGL,儘管它傾向於像Cray XMT這樣的大型多線程硬件架構。最後,我已將LEMON添加到我的清單中供考慮。 •C - 圖和SNAP(小世界網絡分析和分區);後者在SMP系統上使用OpenMP進行並行處理。 •Java - 我還沒有在這裏找到並行庫,但JGraphT和JUNG可能是非平行空間中的領先競爭者。 •Python - igraph和NetworkX看起來像最穩定的選項,但都不是平行的。曾經有BGL的Python綁定,但現在不支持這些綁定; 2005年的最新版本現在看起來很陳舊。

,但我不知道我應該根據自己的需要使用哪一個:

  1. 良好的數據結構和算法。它可以分析複雜網絡的屬性。
  2. 可擴展性:我可以有600萬個節點來修改和實施就可以了我的算法圖/網絡
  3. 可以分析和邊緣
  4. 複雜網絡能夠通過自身產生的會更好,節省我的時間去尋找真正的複雜網絡。

分析功能和可擴展性是我最關心的問題。有沒有人有建議。任何建議都會有幫助。

回答

0

我已經使用了networkx,它和Jung一樣完美。如果你的數據在內存中比這兩項工作好,但是我遇到的問題是缺乏持久性(你可以將這兩個文件保存爲一個xml文件,並將其上傳/下載到數據庫,但是沒有限制數據庫內的分析圖形大小以內存大小)。

最近我一直在玩neo4j(以及各種附加組件),它可以解決這個問題。它不能無限擴展,但如果您的數據少於320億個節點,那麼它作爲存儲引擎的速度非常快,您可以使用其他內核(或工作機器)並行分析圖形。有很多關於它們如何快速運行的性能文檔,但我通常不會同意這些類型的測試,因爲它不是我的測試用例,所以我建議您下載它(在neo4j.org上免費下載)並自行判斷。

+0

謝謝@learningJava,neo4j似乎缺乏分析複雜網絡的功能。我是我可以將它與其他工具結合 – Willwang 2012-03-09 11:09:07

+0

我不完全確定你的具體問題是什麼,但看看https://github.com/tinkerpop/gremlin/wiki它似乎有助於neo4j很快做各種分析。我喜歡neo4j,因爲它在處理大多數數據庫不這樣做的大型相關節點方面的效率非常高,而且不幸的是,我們neo4j似乎只是迄今爲止的主要玩家。 – 2012-03-09 15:52:19