我需要联合起来绘制图形,也就是说,创建一个由图形边缘和节点的并集组成的新图形(不重复)。在JUNG中是否有可用的实现,或者我自己这样做了吗?
答案 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));
默认忽略重复项(如果您想知道添加是否有效,请检查返回值)。