2011-08-23 325 views
0

我必須要統一圖形,即創建一個由圖形的邊和節點(不重複)聯合組成的新圖。在JUNG中有沒有可用的實現,或者我自己有這樣的實現嗎?如何在JUNG中合併兩張圖?

回答

0

沒有對於在JUNG的實現,但它是大約六行代碼假設圖表,頂點和邊緣是同類型的:

 
// 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

你的第二個問題在http://stackoverflow.com/questions/7182052/jung-how-to-get-the-giant-connected-component-of-a-graph –