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\) 必须满足

  1. \(d(x, y) \ge 0\),

  2. \(d(x, y) = 0\) 当且仅当 \(x = y\) 时成立,

  3. \(d(x, y) = d(y, x)\),

  4. \(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)