2011-08-23 9 views
0

私は結合したいグラフを作成する必要があります。つまり、グラフのエッジとノードの両方の組み合わせで構成される新しいグラフを作成します(繰り返しなし)。 JUNGでの使用可能な実装がありますか、それとも独自に実装していますか?JUNGで2つのグラフを結合するには?

答えて

0

ありJUNGでそのための実装はありませんが、それは、グラフ、頂点、およびエッジが同じタイプであると仮定したコードのおよそ6行です:

 
// given Graph g1, g2 
Graph g = new [appropriate Graph implementation] 
for (V v : Collections.union(g1.getVertices(), g2.getVertices())) { 
    g.addVertex(v); 
} 
for (E e : g1.getEdges()) { 
    g.addEdge(e, g1.getEndpoints(e)); 
} 
for (E e : g2.getEdges()) { 
    g.addEdge(e, g2.getEndpoints(e)); 
} 

あなたは追加の頂点をスキップすることができます孤立した頂点がない場合(すなわち、入射エッジのない頂点) addEdge()はインシデントの頂点を追加します。

グラフが向けられている場合は、重複は無視され

g.addEdge(e, g1.getSource(e), g1.getDest(e));

に上記を変更したいと思う(あなたは追加の効果があったかどうかを知りたい場合は、戻り値を確認してください) 。

+0

ありがとうございますが、今は別の疑問があります。グラフの巨大な接続コンポーネントを取得する方法はありますか、またはWeakComponentClustererクラスを使用して、巨大なクラスターを見つけるためにすべてのクラスターを反復処理する必要がありますか? – Paulo

+0

あなたの2番目の質問は、http://stackoverflow.com/questions/7182052/jung-how-to-get-the-giant-connected-component-of-a-graphで回答されています。 –

関連する問題