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]模型将
n个节点均匀随机地放置在维度为dim的单位立方体中。两个节点之间的距离dist,通过p-闵可夫斯基距离度量计算,如果节点之间的计算距离度量值不超过radius,则以概率p_dist连接,否则不连接。当SciPy可用时,使用KDTree确定彼此距离在
radius内的边。这将从时间复杂度从 \(O(n^2)\) 降低到 \(O(n)\) 。- Parameters:
- nint 或 iterable
节点数量或节点迭代器
- radius: float
距离阈值
- dimint, 可选
图的维度
- posdict, 可选
一个以节点为键,节点位置为值的字典。
- pfloat, 可选
使用哪种闵可夫斯基距离度量。
p必须满足条件1 <= p <= 无穷大。如果未指定此参数,则使用 \(L^2\) 度量(欧几里得距离度量),p = 2。
这不应与埃尔德什-雷尼随机图的
p混淆,后者表示概率。- p_distfunction, 可选
一个概率密度函数,计算通过闵可夫斯基距离度量计算的两个节点之间的连接概率。概率密度函数
p_dist必须是任何接受度量值作为输入并输出0-1之间的单个概率值的函数。scipy.stats 包实现了许多概率分布函数和自定义概率分布定义的工具[2],并且可以在这里使用 scipy.stats 分布的 .pdf 方法。如果未提供概率函数p_dist,则默认函数是具有速率参数 \(\lambda=1\) 的指数分布。- seedinteger, random_state, 或 None (默认)
随机数生成状态的指示器。 参见 Randomness 。
- pos_namestring, 默认=”pos”
返回图中表示节点在2D坐标中位置的节点属性的名称。
- Returns:
- Graph
一个无向且无自环的软随机几何图。 每个节点都有一个
'pos'节点属性,存储该节点在欧几里得空间中的位置,该位置由pos关键字参数提供,或者如果未提供pos,则由该函数生成。
Notes
这使用 k-d 树来构建图。
pos关键字参数可用于指定节点位置,以便您可以创建任意分布和域的位置。例如,要使用均值为 (0, 0) 和标准差为 2 的 2D 高斯分布的节点位置
可以使用 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)
References
[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/doc/scipy/reference/tutorial/stats.html
Examples
默认图:
G = nx.soft_random_geometric_graph(50, 0.2)
自定义图:
在100个均匀分布的节点上创建一个软随机几何图,其中节点以从速率参数 \(\lambda=1\) 的指数分布计算的概率连接,如果它们的欧几里得距离不超过0.2。