0

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

4

1 に答える 1

0

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

//与えられたグラフg1、g2
グラフg=新しい[適切なグラフの実装]
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));

重複は黙って無視されます(追加が効果を発揮したかどうかを知りたい場合は、戻り値を確認してください)。

于 2011-08-23T21:32:51.830 に答える