Как объединить два графика в JUNG?
Мне нужно объединить графы, которые я хочу объединить, то есть создать новый граф, состоящий из объединения ребер и узлов графа (без повторений). Есть ли реализация для этого в JUNG или я должен сделать это самостоятельно?
1 ответ
Решение
В JUNG нет реализации для этого, но речь идет о шести строках кода, предполагающих, что графы, вершины и ребра имеют одинаковые типы:
// заданный график g1, g2 График g = новый [соответствующая реализация Графика] for (V v: Collections.union(g1.getVertices(), g2.getVertices())) { g.addVertex(v); } для (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));
Дубликаты молча игнорируются (если вы хотите узнать, оказало ли добавление эффект, проверьте возвращаемое значение).