random_geometric_graph#
- random_geometric_graph(n, radius, dim=2, pos=None, p=2, seed=None, *, pos_name='pos')[source]#
返回一个在单位立方体中具有
dim
维度的随机几何图。随机几何图模型将
n
个节点均匀随机地放置在单位立方体中。如果两个节点之间的距离不超过radius
,则它们之间会有一条边连接。当 SciPy 可用时,使用 KDTree 来确定边。这将从 \(O(n^2)\) 降低时间复杂度到 \(O(n)\)。
- Parameters:
- nint 或 iterable
节点数量或节点迭代器
- radius: float
距离阈值
- dimint, 可选
图的维度
- posdict, 可选
一个以节点为键,节点位置为值的字典。
- pfloat, 可选
使用哪种 Minkowski 距离度量。
p
必须满足条件1 <= p <= 无穷大
。如果未指定此参数,则使用 \(L^2\) 度量(欧几里得距离度量),p = 2。 这不应与 Erdős-Rényi 随机图的
p
混淆,后者表示概率。- seedinteger, random_state, 或 None (默认)
随机数生成状态的指示器。 参见 Randomness 。
- pos_namestring, 默认=”pos”
返回图中表示节点在二维坐标中位置的节点属性名称。
- Returns:
- Graph
一个随机几何图,无向且无自环。 每个节点都有一个
'pos'
节点属性,用于存储该节点在欧几里得空间中的位置,该位置由pos
关键字参数提供,或者如果未提供pos
,则由该函数生成。
Notes
这使用 k-d 树来构建图。
pos
关键字参数可用于指定节点位置,因此您可以创建任意分布和位置域。例如,要使用均值为 (0, 0) 和标准差为 2 的 2D 高斯分布的节点位置:
>>> import random >>> n = 20 >>> pos = {i: (random.gauss(0, 2), random.gauss(0, 2)) for i in range(n)} >>> G = nx.random_geometric_graph(n, 0.2, pos=pos)
References
[1]Penrose, Mathew, Random Geometric Graphs, Oxford Studies in Probability, 5, 2003.
Examples
在二十个节点上创建一个随机几何图,其中如果节点之间的距离不超过 0.1,则它们之间会有边连接:
>>> G = nx.random_geometric_graph(20, 0.1)