2011-08-23 67 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 –

相关问题