如何在JUNG中统一两张图?

时间:2011-08-23 17:50:06

标签: graph union jung

我需要联合起来绘制图形,也就是说,创建一个由图形边缘和节点的并集组成的新图形(不重复)。在JUNG中是否有可用的实现,或者我自己这样做了吗?

1 个答案:

答案 0 :(得分: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));

默认忽略重复项(如果您想知道添加是否有效,请检查返回值)。