Может кто-нибудь объяснить, что делает этот nx.connected_components ()? - PullRequest
0 голосов
/ 06 января 2019

Я получил некоторый код от git, и я пытался понять его, вот часть этого, я не понял вторую строку этого кода

G = nx.Graph(network_map)  # Graph for the whole network
components = list(nx.connected_components(G))

Что делает эта функция connected_components? Я просмотрел документацию и не смог ее правильно понять.

1 Ответ

0 голосов
/ 06 января 2019

nx.connected_components(G) вернет "Генератор наборов узлов, по одному для каждого компонента G" . Генератор в Python позволяет выполнять ленивый перебор значений (т. Е. Генерировать следующий элемент только при необходимости).

В документации приведен следующий пример:

>>> import networkx as nx
>>> G = nx.path_graph(4)
>>> nx.add_path(G, [10, 11, 12])
>>> [len(c) for c in sorted(nx.connected_components(G), key=len, reverse=True)]
[4, 3]

Давайте пройдем через это:

G = nx.path_graph(4) - создать ориентированный граф 0 -> 1 -> 2 -> 3

nx.add_path(G, [10, 11, 12]) - добавить к G: 10 -> 11 -> 12

Итак, теперь G - это граф с двумя связными компонентами.

[len(c) for c in sorted(nx.connected_components(G), key=len, reverse=True)] - перечислить размеры всех подключенных компонентов в G от самого большого до самого маленького. Результат [4, 3], поскольку {0, 1, 2, 3} имеет размер 4, а {10, 11, 12} имеет размер 3.

Итак, просто резюмируем - в результате получается генератор (ленивый итератор) для всех связанных компонентов в G, где каждый связанный компонент представляет собой просто набор узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...