spanner#

spanner(G, stretch, weight=None, seed=None)[源代码]#

返回给定图具有给定拉伸度的 spanner。

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

参数:
GNetworkX 图

一个无向简单图。

stretchfloat

spanner 的拉伸度。

weightobject

用作距离的边属性。

seed整数、random_state 或 None(默认)

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

返回:
NetworkX 图

给定图具有给定拉伸度的 spanner。

引发:
ValueError

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

注解

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

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

参考文献

[1] S. Baswana, S. Sen. A Simple and Linear Time Randomized Algorithm for Computing Sparse Spanners in Weighted Graphs. Random Struct. Algorithms 30(4): 532-563 (2007)。