¿Cómo obtengo el componente gigante de un gráfico NetworkX?

No sé si NetworkX ajustó recientemente uno de los métodos para ser un generador en lugar de devolver una lista, pero estoy buscando una buena (mejor, mejor) forma de obtener el GC de una gráfica.

Tengo un fragmento de trabajo en funcionamiento, pero muy ineficiente:

# G = nx.Graph() giant = sorted(nx.connected_component_subgraphs(G), key=len, reverse=True)[0] 

¿Hay alguna forma más limpia?

En networkx 1.9, connected_components_subgraphs devuelve un iterador (en lugar de una lista ordenada). Los valores generados por el iterador no están ordenados . Así que para encontrar el más grande, usa max :

 giant = max(nx.connected_component_subgraphs(G), key=len) 

La clasificación es O (n log n). Tomando el máximo es O (n).