扳手#
- spanner(G, stretch, weight=None, seed=None)[源代码]#
返回具有给定拉伸的给定图形的扳手。
图G=(v,e)的一个带拉伸t的扳手是子图H=(v,e_s),这样e_s是e的一个子集,h中任意一对节点之间的距离最多是g中节点之间距离的t倍。
- 参数
- G网络X图表
一个无向的简单图。
- stretch浮动
扳手的伸展。
- weight对象
要用作距离的边属性。
- seed整数、随机状态或无(默认)
随机数生成状态的指示器。见 Randomness .
- 返回
- 网络X图表
具有给定拉伸的给定图形的扳手。
- 加薪
- ValueError
如果给定的拉伸小于1。
笔记
此函数通过baswana和sen实现扳手算法,请参见 [1] .
该算法是一种随机拉斯维加斯算法:预期运行时间为o(k m),其中k=(Stretch+1)//2,m是g中的边数。返回的图始终是给定图中具有指定拉伸的扳手。对于加权图,扳手中的边数为o(k*n^(1+1/k)),其中k定义如上,n是g中的节点数。对于未加权图,边数为o(n^(1+1/k)+k n)。
工具书类
[1] S.Baswana,S.Sen.一种简单的线性时间随机算法,用于计算加权图中的稀疏扳手。随机结构。算法30(4):532-563(2007)。