random_geometric_graph#

random_geometric_graph(n, radius, dim=2, pos=None, p=2, seed=None, *, pos_name='pos')[源代码]#

返回一个在 dim 维单位立方体内的随机几何图。

随机几何图模型将 n 个节点均匀随机地放置在单位立方体中。如果两个节点之间的距离至多为 radius,则它们由边连接。

当 SciPy 可用时,使用 KDTree 确定边。这使得时间复杂度从 \(O(n^2)\) 降低到 \(O(n)\)

参数:
nint 或 iterable

节点数量或节点的 iterable

radius: float

距离阈值

dimint, 可选

图的维度

posdict, 可选

一个以节点为键,节点位置为值的字典。

pfloat, 可选

使用哪种 Minkowski 距离度量。p 必须满足条件 1 <= p <= infinity

如果未指定此参数,则使用 \(L^2\) 度量(欧几里得距离度量),即 p = 2。这不应与 Erdős-Rényi 随机图的 p 混淆,后者代表概率。

seedinteger, random_state, 或 None (默认)

随机数生成状态的指示符。参见 随机性

pos_namestring, 默认=”pos”

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

返回:

一个随机几何图,无向且无自环。每个节点都有一个节点属性 'pos',用于存储该节点在欧几里得空间中的位置,该位置由 pos 关键字参数提供,或者如果未提供 pos,则由本函数生成。

说明

这使用 k-d 树构建图。

可以使用 pos 关键字参数指定节点位置,以便您可以为位置创建任意分布和域。

例如,使用均值为 (0, 0),标准差为 2 的二维高斯分布作为节点位置

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

参考资料

[1]

Penrose, Mathew, Random Geometric Graphs, Oxford Studies in Probability, 5, 2003。

示例

创建一个包含二十个节点的随机几何图,如果节点间距离至多为 0.1,则它们之间有边连接

>>> G = nx.random_geometric_graph(20, 0.1)