This documents the development version of NetworkX. Documentation for the current release can be found here.


gn_graph(n, kernel=None, create_using=None, seed=None)[source]

Returns the growing network (GN) digraph with n nodes.

The GN graph is built by adding nodes one at a time with a link to one previously added node. The target node for the link is chosen with probability based on degree. The default attachment kernel is a linear function of the degree of a node.

The graph is always a (directed) tree.


The number of nodes for the generated graph.


The attachment kernel.

create_usingNetworkX graph constructor, optional (default DiGraph)

Graph type to create. If graph instance, then cleared before populated.

seedinteger, random_state, or None (default)

Indicator of random number generation state. See Randomness.



P. L. Krapivsky and S. Redner, Organization of Growing Random Networks, Phys. Rev. E, 63, 066123, 2001.


To create the undirected GN graph, use the to_directed() method:

>>> D = nx.gn_graph(10)  # the GN graph
>>> G = D.to_undirected()  # the undirected version

To specify an attachment kernel, use the kernel keyword argument:

>>> D = nx.gn_graph(10, kernel=lambda x: x ** 1.5)  # A_k = k^1.5