one_exchange#

one_exchange(G, initial_cut=None, seed=None, weight=None)[source]#

计算图的节点划分及其对应的割值。

使用贪心的一交换策略来找到一个局部最大割及其值,该策略通过找到最佳节点(即对割值贡献最大的节点)添加到当前割中,并重复此过程直到无法再改进。

Parameters:
Gnetworkx 图

要找到最大割的图。

initial_cut集合

用作起点的割。如果未提供,算法从空割开始。

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

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

weight对象

用作权重的边属性键。如果未指定,边权重为1。

Returns:
cut_value标量

最大割的值。

partition节点集对

定义最大割的节点划分。

Raises:
NetworkXNotImplemented

如果图是有向的或是一个多重图。

Examples

>>> G = nx.complete_graph(5)
>>> curr_cut_size, partition = nx.approximation.one_exchange(G, seed=1)
>>> curr_cut_size
6
>>> partition
({0, 2}, {1, 3, 4})