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\]

其中 ruv 之间的距离,p_distr 的任意函数,而 \( \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\) 必须满足:

  1. \(d(x, y) \ge 0\),

  2. \(d(x, y) = 0\) 当且仅当 \(x = y\)

  3. \(d(x, y) = d(y, x)\),

  4. \(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)