spanner#

spanner(G, stretch, weight=None, seed=None)[source]#

返回具有给定伸展度的给定图的稀疏图。

图 G = (V, E) 的伸展度为 t 的稀疏图是一个子图 H = (V, E_S),其中 E_S 是 E 的子集,并且 H 中任意一对节点之间的距离最多是 G 中节点之间距离的 t 倍。

Parameters:
GNetworkX 图

一个无向简单图。

stretchfloat

稀疏图的伸展度。

weight对象

用作距离的边属性。

seed整数,random_state,或 None(默认)

随机数生成状态的指示器。 参见 Randomness

Returns:
NetworkX 图

具有给定伸展度的给定图的稀疏图。

Raises:
ValueError

如果给定的伸展度小于 1。

Notes

此函数实现了 Baswana 和 Sen 的稀疏图算法, 参见 [1]。

该算法是一个随机化的拉斯维加斯算法:期望的运行时间是 O(km),其中 k = (stretch + 1) // 2,m 是 G 中的边数。返回的图始终是具有指定伸展度的给定图的稀疏图。对于加权图,稀疏图中的边数是 O(k * n^(1 + 1 / k)),其中 k 如上定义,n 是 G 中的节点数。对于无权图,边数是 O(n^(1 + 1 / k) + kn)。

References

[1] S. Baswana, S. Sen. 一种简单且线性时间随机化算法,用于在加权图中计算稀疏图。 Random Struct. Algorithms 30(4): 532-563 (2007).