Как получить гигантский компонент графика NetworkX?
Я не знаю, недавно Ли NetworkX изменил один из методов, чтобы быть генератором, а не возвращать список, но я ищу хороший (скорее, лучший) способ получить GC графика.
У меня есть рабочий, но действительно неэффективный, фрагмент вниз:
# G = nx.Graph()
giant = sorted(nx.connected_component_subgraphs(G), key=len, reverse=True)[0]
есть ли более рациональный способ?
1 ответов
В networkx 1.9, connected_components_subgraphs
возвращает итератор (вместо отсортированного списка). Значения, полученные итератором, являются не в отсортированном порядке. Поэтому, чтобы найти самый большой, используйте max
:
giant = max(nx.connected_component_subgraphs(G), key=len)
сортировка O (N log n). Максимальное значение - O (n).