graphscope.nx.generators.geometric.random_geometric_graph

graphscope.nx.generators.geometric.random_geometric_graph(n, radius, dim=2, pos=None, p=2, seed=None)[源代码]

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

随机几何图模型将n个节点均匀随机地放置在单位立方体中。如果两个节点之间的距离不超过radius,则这两个节点通过一条边连接。

当SciPy可用时,使用KDTree确定边的关系。这将时间复杂度从$O(n^2)$降低到$O(n)$。

Parameters:
  • n (int可迭代对象) – 节点数量或可迭代的节点集合

  • radius (float) – 距离阈值

  • dim (int, optional) – 图的维度

  • pos (dict, 可选) – 一个以节点为键、节点位置为值的字典。

  • p (float, optional) –

    指定使用的闵可夫斯基距离度量。p 必须满足条件 1 <= p <= infinity

    如果未指定此参数,则默认使用\(L^2\)度量 (欧几里得距离度量),即 p = 2。 请注意不要将其与Erdős-Rényi随机图中的p混淆,后者表示概率。

  • seed (integer, random_state, or None (default)) - 随机数生成状态的指示器。 参见随机性

Returns:

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

Return type:

Graph

示例

创建一个包含20个节点的随机几何图,其中如果节点之间的距离不超过0.1,则通过边连接:

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

备注

这使用了一个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)

参考文献