Note

This is the documentation for the current state of the development branch of rustworkx. The documentation or APIs here can change prior to being released.

rustworkx.directed_barabasi_albert_graph#

directed_barabasi_albert_graph(n, m, seed=None, initial_graph=None)#

Generate a random graph using Barabási–Albert preferential attachment

A graph is grown to $n$ nodes by adding new nodes each with $m$ edges that are preferentially attached to existing nodes with high degree. All the edges and nodes added to this graph will have weights of None. For the purposes of the extension algorithm all edges are treated as weak (meaning directionality isn’t considered).

The algorithm performed by this function is described in:

A. L. Barabási and R. Albert “Emergence of scaling in random networks”, Science 286, pp 509-512, 1999.

Parameters:
  • n (int) – The number of nodes to extend the graph to.

  • m (int) – The number of edges to attach from a new node to existing nodes.

  • seed (int) – An optional seed to use for the random number generator

  • initial_graph (PyDiGraph) – An optional initial graph to use as a starting point. star_graph() is used to create an m node star graph to use as a starting point. If specified the input graph will be modified in place.

Returns:

A PyDiGraph object

Return type:

PyDiGraph