Skip to main content
`Ctrl`+`K`

# dual_barabasi_albert_graph

dual_barabasi_albert_graph(n, m1, m2, p, seed=None, initial_graph=None, *, create_using=None)

  Returns a random graph using dual Barabási–Albert preferential attachment

  A graph of \(n\) nodes is grown by attaching new nodes each with either \(m_1\) edges (with probability \(p\)) or \(m_2\) edges (with probability \(1-p\)) that are preferentially attached to existing nodes with high degree.

  Parameters:
    n int

      Number of nodes

    m1 int

      Number of edges to link each new node to existing nodes with probability \(p\)

    m2 int

      Number of edges to link each new node to existing nodes with probability \(1-p\)

    p float

      The probability of attaching \(m_1\) edges (as opposed to \(m_2\) edges)

    seed integer, random_state, or None (default)

      Indicator of random number generation state. See Randomness.

    initial_graph Graph or None (default)

      Initial network for Barabási–Albert algorithm. A copy of `initial_graph` is used. It should be connected for most use cases. If None, starts from an star graph on max(m1, m2) + 1 nodes.

    create_using Graph constructor, optional (default=nx.Graph)

      Graph type to create. If graph instance, then cleared before populated. Multigraph and directed types are not supported and raise a `NetworkXError`.

  Returns:
    G Graph
  Raises:
    NetworkXError

      If `m1` and `m2` do not satisfy `1 <= m1,m2 < n`, or `p` does not satisfy `0 <= p <= 1`, or the initial graph number of nodes m0 does not satisfy m1, m2 <= m0 <= n.

  References

  [1]

  14. Moshiri “The dual-Barabasi-Albert model”, arXiv:1810.10538.