Использование igraph
Я могу назначить уникальный идентификатор подключенного компонента для каждого узла:
import igraph
def tag_components(vertices, edges):
graph = igraph.Graph()
graph.add_vertices(vertices)
graph.add_edges(edges)
graph_tags = graph.clusters().membership
return graph_tags
print(tag_components([0,1,2,3,4,5], [[1,2],[2,4],[3,5]]))
Он выводит [0, 1, 1, 2, 1, 2]
, что означает, что 3 подключенных компонента проиндексированы 0
, 1
, 2
соответствует группам узлов [0]
, [1, 2, 4]
, [3, 5]
. Как я могу добиться того же результата, используя networkx?
Я ожидаю что-то вроде:
def tag_components_nx(vertices, edges):
G = nx.Graph()
G.add_nodes_from(vertices)
G.add_edges_from(edges)
...
return graph_tags
Обновление
У меня уже есть удовлетворительный ответ, и мне интересно, если networkx
имеет более сложные методы, чем connected_components
подходит для моей проблемы