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_distr 的任意函数,\(\theta\) 是阈值参数。 p_dist 用于在决定节点是否应该连接时给距离赋予权重。 p_dist 越大,相距 r 的节点越容易被连接,反之亦然。

Parameters:
nint 或 iterable

节点数量或节点迭代器

thetafloat

阈值

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}\)

seedinteger, random_state, 或 None(默认)

随机数生成状态的指示器。 参见 Randomness

pos_namestring, 默认=”pos”

返回图中表示节点在二维坐标中位置的节点属性名称。

weight_namestring, 默认=”weight”

返回图中表示节点权重的节点属性名称。

Returns:
Graph

一个随机的地理阈值图,无向且无自环。

每个节点都有一个 pos 节点属性,存储该节点在欧几里得空间中的位置,由 pos 关键字参数提供或由该函数生成。类似地,每个节点都有一个 weight 节点属性,存储该节点的权重,由提供或生成。

Notes

如果未指定权重,则从速率参数 \(\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)

如果未指定节点位置,则从均匀分布中随机分配。

References

[1]

Masuda, N., Miwa, H., Konno, N.: 具有小世界和无标度特性的地理阈值图。 物理评论 E 71, 036108 (2005)

[2]

米兰 Bradonjić, Aric Hagberg 和 Allon G. Percus, 地理阈值图中的巨型组件和连通性, 在网络图算法和模型(WAW 2007)中, Antony Bonato 和 Fan Chung(编辑),第 209–216 页,2007

Examples

使用 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)