I don't know if NetworkX recently tweaked one of the methods to be a generator instead of returning a list, but I'm looking for a good (rather, better) way to get the GC of a graph.
I have a working, but really inefficient-looking, snippet down:
# G = nx.Graph()
giant = sorted(nx.connected_component_subgraphs(G), key=len, reverse=True)[0]
Is there a cleaner way?
A giant component is a connected component of a network that contains a significant proportion of the entire nodes in the network. Typically as the network expands the giant component will continue to have a significant fraction of the nodes.
In networkx 2.4, nx.connected_component_subgraphs()
is deprecated, so the following should work:
Gcc = sorted(nx.connected_components(G), key=len, reverse=True)
G0 = G.subgraph(Gcc[0])
G0 is the giant component.
In networkx 1.9, connected_components_subgraphs
returns an iterator (instead of a sorted list). The values yielded by the iterator are not in sorted order. So to find the largest, use max
:
giant = max(nx.connected_component_subgraphs(G), key=len)
Sorting is O(n log n). Taking the max is O(n).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With