soft_random_geometric_graph#
- soft_random_geometric_graph(n, radius, dim=2, pos=None, p=2, p_dist=None, seed=None, *, pos_name='pos')[source]#
在单位立方体中返回一个软随机几何图。
软随机几何图[1]模型在维度为
dim
的单位立方体中均匀随机放置n
个节点。如果两个节点通过p
-Minkowski距离度量计算出的距离值dist
小于等于radius
,则它们以概率p_dist
通过一条边连接,否则不连接。当 SciPy 可用时,使用 KDTree 确定彼此距离在
radius
内的边。这可以将时间复杂度从\(O(n^2)\)降低到\(O(n)\)。- 参数:
- nint 或 iterable
节点数量或节点的可迭代对象
- radius: float
距离阈值
- dimint, 可选
图的维度
- posdict, 可选
一个字典,键为节点,值为节点的位置。
- pfloat, 可选
要使用的 Minkowski 距离度量。
p
必须满足条件1 <= p <= infinity
。如果未指定此参数,则使用 \(L^2\) 度量(欧几里得距离度量),即 p = 2。
这不应与 Erdős-Rényi 随机图中的
p
混淆,后者表示概率。- p_distfunction, 可选
一个概率密度函数,计算两个节点之间连接的概率,距离由 Minkowski 距离度量计算得出。概率密度函数
p_dist
必须是一个以度量值作为输入并输出一个介于 0-1 之间的概率值的函数。scipy.stats 包实现了许多概率分布函数以及用于自定义概率分布定义的工具[2],可以将 scipy.stats 分布的 .pdf 方法在此处使用。如果未提供概率函数p_dist
,默认函数是速率参数 \(\lambda=1\) 的指数分布。- seedinteger, random_state, 或 None (默认)
随机数生成状态的指示符。详见 随机性。
- pos_namestring, 默认值=”pos”
节点属性的名称,表示返回图中节点在二维坐标中的位置。
- 返回:
- 图
一个软随机几何图,无向且无自环。每个节点都有一个节点属性
'pos'
,存储该节点在欧几里得空间中的位置,该位置由pos
关键字参数提供,如果未提供pos
,则由该函数生成。
注意
这使用 k-d 树来构建图。
可以使用
pos
关键字参数指定节点位置,以便您可以为位置创建任意分布和域。例如,使用平均值为 (0, 0) 且标准差为 2 的二维高斯分布的节点位置
scipy.stats 包可用于定义概率分布,其中 .pdf 方法用作
p_dist
。>>> import random >>> import math >>> n = 100 >>> pos = {i: (random.gauss(0, 2), random.gauss(0, 2)) for i in range(n)} >>> p_dist = lambda dist: math.exp(-dist) >>> G = nx.soft_random_geometric_graph(n, 0.2, pos=pos, p_dist=p_dist)
参考
[1]Penrose, Mathew D. “Connectivity of soft random geometric graphs.” The Annals of Applied Probability 26.2 (2016): 986-1028.
[2]scipy.stats - https://docs.scipy.org.cn/doc/scipy/reference/tutorial/stats.html
示例
默认图
G = nx.soft_random_geometric_graph(50, 0.2)
自定义图
在 100 个均匀分布的节点上创建一个软随机几何图,其中如果节点的欧几里得距离最多为 0.2,则它们以速率参数 \(\lambda=1\) 的指数分布计算出的概率通过边连接。