geographical_threshold_graph¶
-
geographical_threshold_graph(n, theta, alpha=2, dim=2, pos=None, weight=None, metric=None)[source]¶ Returns a geographical threshold graph.
The geographical threshold graph model places
nnodes uniformly at random in a rectangular domain. Each nodeuis assigned a weight \(w_u\). Two nodesuandvare joined by an edge if\[w_u + w_v \ge \theta r^{\alpha}\]where
ris the distance betweenuandv, and \(\theta\), \(\alpha\) are parameters.Parameters: n (int or iterable) – Number of nodes or iterable of nodes
theta (float) – Threshold value
alpha (float, optional) – Exponent of distance function
dim (int, optional) – Dimension of graph
pos (dict) – Node positions as a dictionary of tuples keyed by node.
weight (dict) – Node weights as a dictionary of numbers keyed by node.
metric (function) – A metric on vectors of numbers (represented as lists or tuples). This must be a function that accepts two lists (or tuples) as input and yields a number as output. The function must also satisfy the four requirements of a metric. Specifically, if d is the function and x, y, and z are vectors in the graph, then d must satisfy
- d*(*x, y) ≥ 0,
- d*(*x, y) = 0 if and only if x = y,
- d*(*x, y) = d*(*y, x),
- d*(*x, z) ≤ d*(*x, y) + d*(*y, z).
If this argument is not specified, the Euclidean distance metric is used.
Returns: A random geographic threshold graph, undirected and without self-loops.
Each node has a node attribute
'pos'that stores the position of that node in Euclidean space as provided by theposkeyword argument or, ifposwas not provided, as generated by this function. Similarly, each node has a node attribute'weight'that stores the weight of that node as provided or as generated.Return type: Examples
Specify an alternate distance metric using the
metrickeyword argument. For example, to use the “taxicab metric” instead of the default Euclidean metric:>>> dist = lambda x, y: sum(abs(a - b) for a, b in zip(x, y)) >>> G = nx.geographical_threshold_graph(10, 0.1, metric=dist)
Notes
If weights are not specified they are assigned to nodes by drawing randomly from the exponential distribution with rate parameter \(\lambda=1\). To specify weights from a different distribution, use the
weightkeyword argument:>>> import random >>> n = 20 >>> w = {i: random.expovariate(5.0) for i in range(n)} >>> G = nx.geographical_threshold_graph(20, 50, weight=w)
If node positions are not specified they are randomly assigned from the uniform distribution.
References
[1] Masuda, N., Miwa, H., Konno, N.: Geographical threshold graphs with small-world and scale-free properties. Physical Review E 71, 036108 (2005) [2] Milan Bradonjić, Aric Hagberg and Allon G. Percus, Giant component and connectivity in geographical threshold graphs, in Algorithms and Models for the Web-Graph (WAW 2007), Antony Bonato and Fan Chung (Eds), pp. 209–216, 2007