thresholded_random_geometric_graph#
- thresholded_random_geometric_graph(n, radius, theta, dim=2, pos=None, weight=None, p=2, seed=None, *, pos_name='pos', weight_name='weight')[source]#
在单位立方体中返回一个阈值随机几何图。
阈值随机几何图[1]模型将
n
个节点均匀随机地放置在dim
维单位立方体中。每个节点u
被赋予权重\(w_u\)。当两个节点u
和v
之间的p
-Minkowski距离小于或等于最大连接距离radius
,并且它们的权重之和\(w_u\) + \(w_v\)大于或等于阈值参数theta
时,它们之间通过一条边连接。当SciPy可用时,使用KD树来确定距离在
radius
范围内的边。这将时间复杂度从\(O(n^2)\)降低到\(O(n)\)。- 参数:
- nint 或 iterable
节点数量或节点的可迭代对象
- radius: float
距离阈值
- theta: float
阈值
- dimint,可选
图的维度
- posdict,可选
以节点为键,节点位置为值的字典。
- weightdict,可选
以节点为键,节点权重为值的数字字典。
- pfloat,可选 (默认为 2)
使用哪种Minkowski距离度量。
p
必须满足条件1 <= p <= infinity
。如果未指定此参数,则使用\(L^2\)度量(欧几里得距离度量),即p = 2。
这不应与表示概率的Erdős-Rényi随机图中的
p
混淆。- seed整数, random_state, 或 None (默认)
随机数生成状态的指示符。参见随机性。
- pos_namestring, 默认为“pos”
在返回的图中表示节点二维坐标位置的节点属性名称。
- weight_namestring, 默认为“weight”
在返回的图中表示节点权重的节点属性名称。
- 返回:
- 图
一个阈值随机几何图,无向且无自环。
每个节点都有一个节点属性
'pos'
,用于存储该节点在欧几里得空间中的位置,该位置由pos
关键字参数提供,如果未提供pos
,则由本函数生成。类似地,每个节点都有一个节点属性'weight'
,用于存储该节点的权重,该权重由用户提供或由函数生成。
注意
这使用了k-d树来构建图。
pos
关键字参数可用于指定节点位置,以便您可以为位置创建任意分布和域。例如,使用均值为 (0, 0)、标准差为 2 的二维高斯分布作为节点位置
如果未指定权重,则通过从参数为\(\lambda=1\)的指数分布中随机抽取来分配给节点。要指定来自不同分布的权重,请使用
weight
关键字参数::
>>> import random >>> import math >>> n = 50 >>> pos = {i: (random.gauss(0, 2), random.gauss(0, 2)) for i in range(n)} >>> w = {i: random.expovariate(5.0) for i in range(n)} >>> G = nx.thresholded_random_geometric_graph(n, 0.2, 0.1, 2, pos, w)
参考文献
示例
默认图
G = nx.thresholded_random_geometric_graph(50, 0.2, 0.1)
自定义图
创建一个包含50个均匀分布节点的阈值随机几何图,当节点的权重之和(权重从参数为5的指数分布中抽取)大于等于theta = 0.1且它们的欧几里得距离小于等于0.2时,节点之间通过边连接。