2012-03-07 3 views
2

グラフ分析ライブラリやフレームワーク、C++やJavaの方が良いと推測しています。私は良いグラフ/複雑なネットワークライブラリ

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

このWebページでは、いくつかの可能な解決策を提供し、いくつかのグラフライブラリを発見した:

•C++ - 最も実行可能な解決策は、ブーストグラフライブラリおよびパラレルブーストグラフライブラリのように見えます。私はMTGLも見ていますが、Cray XMTのような大規模なマルチスレッドハードウェアアーキテクチャに向けて傾いています。最後に、LEMONを私のリストに追加しました。 •CグラフとSNAP(Small-World Network Analysis and Partitioning);後者は、SMPシステムでの並列処理にOpenMPを使用します。 •Java - まだパラレルライブラリーが見つかりませんでしたが、JGraphTとおそらくJUNGが非並列空間のコンテンダーをリードしています。 •Python - igraphとNetworkXは最も固いオプションのように見えますが、どちらも並列ではありません。以前はBGL用のPythonバインディングがありましたが、現在はサポートされていません。 2005年の最後のリリースは今や古くなったように見えます。

が、私は私自身のニーズに基づいて使用すべきかわからないです:

  1. 良いデータ構造とアルゴリズム。複雑なネットワークの特性を分析することができます。
  2. スケーラブル:私は
  3. 複雑なネットワークは、それ自体で製造することができる百万のノードとエッジとのグラフ/ネットワークの
  4. 缶分析を探すために私の時間を節約するために、良くなることに私のアルゴリズムを変更して実装することができます本当の複雑なネットワーク。

分析機能とスケーラビリティが私の主な関心事です。誰もが推薦を持っていますか?どんな提案も役に立ちます。

答えて

0

私はnetworkxを使用しています。これはJungと同様に完全に動作します。あなたのデータがメモリ内にある場合、これらの2つはうまく動作しますが、私はそれらの両方で問題がありますが、永続性の欠如です(XMLファイルとアップロード/データベースにダウンロードできますが、メモリのサイズに対するグラフのサイズ)。

最近、私はneo4j(そしてさまざまなアドオン)でこれを回避しています。無制限に拡張することはできませんが、データが300億ノード以下であれば、ストレージエンジンとしては本当に速く、他のコア(ワーカー)を使ってグラフを並行して分析できます。彼らが本当に速い方法について多くのパフォーマンス文書がありますが、私はテストケースではないので、これらのタイプのテストには通常同意しませんので、ダウンロードして(neo4j.orgで無料)、あなた自身でそれを判断することをお勧めします。

+0

ありがとうございました@learningJava、neo4jは複雑なネットワークの分析機能が不足しているようです。私はそれを他のいくつかのツールと組み合わせることができます – Willwang

+0

私はあなたの特定の問題が何であるか正確にはわかりませんが、https://github.com/tinkerpop/gremlin/wikiを見てみると、neo4jがさまざまなanayticsを非常に迅速に行うのを助けるようです。私はneo4jが好きです。なぜなら、大規模な相互関係のあるノードを処理する効率が高いからです。ほとんどのデータベースはそれをしません。そして、残念なことに、neo4jは今のところ主要なプレイヤーにすぎないようです。 –

関連する問題