geographical_threshold_graph#
- geographical_threshold_graph(n, theta, dim=2, pos=None, weight=None, metric=None, p_dist=None, seed=None, *, pos_name='pos', weight_name='weight')[source]#
返回一个地理阈值图。
地理阈值图模型在矩形域中随机均匀放置 \(n\) 个节点。每个节点 \(u\) 被分配一个权重 \(w_u\)。如果满足以下条件,两个节点 \(u\) 和 \(v\) 通过边连接起来:
\[(w_u + w_v)p_{dist}(r) \ge \theta\]其中
r
是u
和v
之间的距离,p_dist
是r
的任意函数,而 \( \theta \) 是阈值参数。p_dist
用于在决定节点是否应连接时,对它们之间的距离赋予权重。p_dist
越大,相距r
的节点越有可能连接,反之亦然。p_dist
最初被设想为一种概率密度函数,给出相距度量距离r
的两个节点连接的概率。这里的实现允许更任意的p_dist
定义,无需对应有效的概率密度函数。scipy.stats
包实现了许多概率密度函数以及自定义概率密度定义的工具,可以使用 scipy.stats 分布的.pdf
方法。如果p_dist=None
(默认值),则使用指数函数 \(r^{-2}\)。- 参数:
- nint 或 iterable
节点数或节点的可迭代对象
- theta: float
阈值
- dimint, 可选
图的维度
- posdict
节点位置,以节点为键的元组字典。
- weightdict
节点权重,以节点为键的数字字典。
- metricfunction
向量(表示为列表或元组)上的度量函数。这必须是一个接受两个列表(或元组)作为输入并产生一个数字作为输出的函数。该函数还必须满足度量的四个要求。具体来说,如果 \(d\) 是函数,\(x\)、\(y\) 和 \(z\) 是图中的向量,则 \(d\) 必须满足:
\(d(x, y) \ge 0\),
\(d(x, y) = 0\) 当且仅当 \(x = y\),
\(d(x, y) = d(y, x)\),
\(d(x, z) \le d(x, y) + d(y, z)\).
如果未指定此参数,则使用欧几里德距离度量。
- p_distfunction, 可选
用于在决定节点是否应连接时,对它们之间的距离赋予权重的任意函数。
p_dist
最初被设想为一种概率密度函数,给出相距度量距离r
的两个节点连接的概率。这里的实现允许更任意的p_dist
定义,无需对应有效的概率密度函数。scipy.stats
包实现了许多概率密度函数以及自定义概率密度定义的工具,可以使用 scipy.stats 分布的.pdf
方法。如果p_dist=None
(默认值),则使用指数函数 \(r^{-2}\)。- seed整数,random_state,或 None (默认)
随机数生成状态的指示器。参阅 随机性。
- pos_name字符串, 默认=”pos”
返回图中表示节点在二维坐标中位置的节点属性名称,默认为“pos”。
- weight_name字符串, 默认=”weight”
返回图中表示节点权重的节点属性名称,默认为“weight”。
- 返回:
- Graph
一个随机地理阈值图,无向且无自环。
每个节点都有一个节点属性
pos
,存储该节点在欧几里德空间中的位置,由pos
关键字参数提供,或者,如果未提供pos
,则由该函数生成。类似地,每个节点都有一个节点属性weight
,存储该节点的权重,由参数提供或由函数生成。
注意
如果未指定权重,则从速率参数为 \(\lambda=1\) 的指数分布中随机抽取分配给节点。要指定不同分布的权重,请使用
weight
关键字参数>>> import random >>> n = 20 >>> w = {i: random.expovariate(5.0) for i in range(n)} >>> G = nx.geographical_threshold_graph(20, 50, weight=w)
如果未指定节点位置,则从均匀分布中随机分配。
参考文献
[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
示例
使用
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)