waxman_graph#
- waxman_graph(n, beta=0.4, alpha=0.1, L=None, domain=(0, 0, 1, 1), metric=None, seed=None, *, pos_name='pos')[source]#
返回一个 Waxman 随机图。
Waxman 随机图模型将
n
个节点均匀随机地放置在一个矩形区域中。每对距离为d
的节点之间通过一条边的概率为\[p = \beta \exp(-d / \alpha L).\]此函数使用关键字参数
L
实现了两种 Waxman 模型。Waxman-1:如果未指定
L
,则将其设置为任意一对节点之间的最大距离。Waxman-2:如果指定了
L
,则从区间[0, L]
中均匀随机选择一对节点之间的距离。
- 参数:
- nint 或可迭代对象
节点数或节点的可迭代对象
- beta: float
模型参数
- alpha: float
模型参数
- Lfloat, 可选
节点之间的最大距离。如果未指定,则计算实际距离。
- domain由四个数字组成的元组, 可选
区域大小,以
(x_min, y_min, x_max, y_max)
形式的元组给出。- metric函数
一个数字向量(表示为列表或元组)上的度量。这必须是一个函数,接受两个列表(或元组)作为输入并产生一个数字作为输出。该函数还必须满足度量的四个要求。具体来说,如果 \(d\) 是该函数,并且 \(x\)、\(y\) 和 \(z\) 是图中的向量,那么 \(d\) 必须满足
\(d(x, y) \ge 0\),
\(d(x, y) = 0\) 当且仅当 \(x = y\) 时成立,
\(d(x, y) = d(y, x)\),
\(d(x, z) \le d(x, y) + d(y, z)\).
如果未指定此参数,则使用欧几里得距离度量。
- seed整数, random_state 或 None (默认)
随机数生成状态的指示器。参见 随机性。
- pos_name字符串, 默认值为“pos”
返回图中表示节点二维坐标位置的节点属性名称。
- 返回:
- 图
一个随机的 Waxman 图,无向且无自环。每个节点都有一个节点属性
'pos'
,存储此函数生成的节点在欧几里得空间中的位置。
注意
从 NetworkX 2.0 开始,参数 alpha 和 beta 与它们在概率分布中的通常角色对齐。在早期版本中,它们在表达式中的位置是相反的。为了尽量减少向后不兼容性,它们在调用序列中的位置也颠倒了。
参考文献
[1]B. M. Waxman, Routing of multipoint connections. IEEE J. Select. Areas Commun. 6(9),(1988) 1617–1622.
示例
使用
metric
关键字参数指定替代距离度量。例如,使用“出租车度量 (taxicab metric)”而不是默认的欧几里得度量 (Euclidean metric)>>> dist = lambda x, y: sum(abs(a - b) for a, b in zip(x, y)) >>> G = nx.waxman_graph(10, 0.5, 0.1, metric=dist)