当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX stoer_wagner用法及代码示例


本文简要介绍 networkx.algorithms.connectivity.stoerwagner.stoer_wagner 的用法。

用法:

stoer_wagner(G, weight='weight', heap=<class 'networkx.utils.heaps.BinaryHeap'>)

使用 Stoer-Wagner 算法返回加权最小边切割。

使用Stoer-Wagner 算法确定连通图的最小边切割。在加权情况下,所有权重必须为非负数。

算法的运行时间取决于所使用的堆类型:

堆类型

运行时间

二进制堆

\(O(n (m + n) \log n)\)

斐波那契堆

\(O(nm + n^2 \log n)\)

配对堆

\(O(2^{2 \sqrt{\log \log n}} nm + n^2 \log n)\)

参数

GNetworkX 图

图的边应该有一个由下面的权重参数命名的属性。如果此属性不存在,则认为边具有单位权重。

weightstring

边的权重属性的名称。如果该属性不存在,则假定为单位重量。默认值:‘weight’。

heap

算法中使用的堆类型。它应该是MinHeap 的子类或实现兼容的接口。

如果要使用库存堆实现,尽管渐近运行时间较慢,但对于没有优化属性访问的 Python 实现(例如 CPython),建议使用 BinaryHeap 而不是 PairingHeap。对于具有优化属性访问的 Python 实现(例如 PyPy),PairingHeap 提供更好的性能。默认值:BinaryHeap

返回

cut_value整数或浮点数

最小切割中边的权重之和。

partition一对节点列表

定义最小割的节点分区。

抛出

NetworkXNotImplemented

如果图是有向图或多重图。

NetworkXError

如果图形的节点少于两个、未连接或具有negative-weighted 边。

例子

>>> G = nx.Graph()
>>> G.add_edge("x", "a", weight=3)
>>> G.add_edge("x", "b", weight=1)
>>> G.add_edge("a", "c", weight=3)
>>> G.add_edge("b", "c", weight=5)
>>> G.add_edge("b", "d", weight=4)
>>> G.add_edge("d", "e", weight=2)
>>> G.add_edge("c", "y", weight=2)
>>> G.add_edge("e", "y", weight=3)
>>> cut_value, partition = nx.stoer_wagner(G)
>>> cut_value
4

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.connectivity.stoerwagner.stoer_wagner。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。