karypis Lab ( http://glaros.dtc.umn.edu/gkhome/metis/metis/overview )によって実装されている METIS のような有名なグラフ パーティション アルゴ ツールがあることは知っています。
しかし、Neo4jに保存されているグラフを分割する方法はありますか? または、Neo4j のデータをダンプし、METIS 入力形式に合わせてノードとエッジの形式を手動で変換する必要がありますか?
karypis Lab ( http://glaros.dtc.umn.edu/gkhome/metis/metis/overview )によって実装されている METIS のような有名なグラフ パーティション アルゴ ツールがあることは知っています。
しかし、Neo4jに保存されているグラフを分割する方法はありますか? または、Neo4j のデータをダンプし、METIS 入力形式に合わせてノードとエッジの形式を手動で変換する必要がありますか?
新しくて興味深いアルゴリズムに関しては、これは決して網羅的でも最先端でもありませんが、私が最初に見る場所は次のとおりです。
特定のアルゴリズム: DiDiC (Distributed Diffusive Clustering) - 論文で一度使用しました ( Partitioning Graph Databases )
特定のアルゴリズム: EvoCut「進化するセットを使用してローカルでスパース カットを見つける」 - Microsoft のローカル確率的アルゴリズム -これらの論文に関連する
一般的なアルゴリズム ファミリー:階層グラフ クラスタリング
高レベルから:
ノート:
一般的な制限- いくつかのクラスタリング アルゴリズムが行うこと:
過去に METIS と Neo4j を個別に使用していたので、Neo4j から METIS ファイルを生成するツールを知りません。そうは言っても、そのようなツールを作成するのは簡単な作業であり、コミュニティへの大きな貢献になるはずです。
METIS を Neo4j と統合する別の方法として、JNI を介して C++ から METIS を Neo4j に接続する方法があります。ただし、トランザクション、同時実行などを処理する必要があるため、これはより複雑になります。
グラフを分割するというより一般的な問題については、合理的な努力をすれば、より知られている単純なアルゴリズムのいくつかを実装することは十分に可能です。