cfpq_data.graphs.generators.labeled_scale_free_graph#

labeled_scale_free_graph(n: int, *, alpha: float = 0.41, beta: float = 0.54, gamma: float = 0.05, delta_in: float = 0.2, delta_out: float = 0, labels: ~typing.Iterable[str] = 'abcd', choice: ~typing.Callable[[~typing.Iterable[str]], str] = <bound method Random.choice of <random.Random object>>, seed: int | None = None) MultiDiGraph[source]#

Returns a scale-free directed graph. With labeled edges.

Parameters:
  • n (integer) -- Number of nodes in graph.

  • alpha (float) -- Probability for adding a new node connected to an existing node chosen randomly according to the in-degree distribution.

  • beta (float) -- Probability for adding an edge between two existing nodes. One existing node is chosen randomly according the in-degree distribution and the other chosen randomly according to the out-degree distribution.

  • gamma (float) -- Probability for adding a new node connected to an existing node chosen randomly according to the out-degree distribution.

  • delta_in (float) -- Bias for choosing nodes from in-degree distribution.

  • delta_out (float) -- Bias for choosing nodes from out-degree distribution.

  • labels (Iterable[str]) -- Labels that will be used to mark the edges of the graph.

  • choice (Callable[[Iterable[str]], str]) -- Function for marking edges.

  • seed (integer, random_state, or None (default)) -- Indicator of random number generation state.

Examples

>>> from cfpq_data import *
>>> g = labeled_scale_free_graph(42, seed=42)
>>> g.number_of_nodes()
42
>>> g.number_of_edges()
81
Returns:

g -- A scale-free directed graph.

Return type:

MultiDiGraph

Notes

The sum of alpha, beta, and gamma must be 1.

References

[1]

B. Bollobás, C. Borgs, J. Chayes, and O. Riordan, Directed scale-free graphs, Proceedings of the fourteenth annual ACM-SIAM Symposium on Discrete Algorithms, 132--139, 2003.