preferential_attachment#
- preferential_attachment(G, ebunch=None)[source]#
Compute the preferential attachment score of all node pairs in ebunch.
Preferential attachment score of
u
andv
is defined as\[|\Gamma(u)| |\Gamma(v)|\]where \(\Gamma(u)\) denotes the set of neighbors of \(u\).
- Parameters:
- Ggraph
NetworkX undirected graph.
- ebunchiterable of node pairs, optional (default = None)
Preferential attachment score will be computed for each pair of nodes given in the iterable. The pairs must be given as 2-tuples (u, v) where u and v are nodes in the graph. If ebunch is None then all nonexistent edges in the graph will be used. Default value: None.
- Returns:
- piteriterator
An iterator of 3-tuples in the form (u, v, p) where (u, v) is a pair of nodes and p is their preferential attachment score.
- Raises:
- NetworkXNotImplemented
If
G
is aDiGraph
, aMultigraph
or aMultiDiGraph
.- NodeNotFound
If
ebunch
has a node that is not inG
.
References
[1]D. Liben-Nowell, J. Kleinberg. The Link Prediction Problem for Social Networks (2004). http://www.cs.cornell.edu/home/kleinber/link-pred.pdf
Examples
>>> G = nx.complete_graph(5) >>> preds = nx.preferential_attachment(G, [(0, 1), (2, 3)]) >>> for u, v, p in preds: ... print(f"({u}, {v}) -> {p}") (0, 1) -> 16 (2, 3) -> 16 ----
Additional backends implement this function
- parallelA networkx backend that uses joblib to run graph algorithms in parallel. Find the nx-parallel’s configuration guide here
The edge pairs are chunked into
pairs_chunks
and then the preferential attachment for allpairs_chunks
is computed in parallel overn_jobs
number of CPU cores.- Additional parameters:
- get_chunksstr, function (default = “chunks”)
A function that takes in a list of all the edges (or ebunch) as input and returns an iterable
pairs_chunks
. The default chunking is done by slicingebunch
inton_jobs
number of chunks.
[Source]