Как получить гигантский компонент графика 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).