kernighan_lin_bisection#

kernighan_lin_bisection(G, partition=None, max_iter=10, weight='weight', seed=None)[源]#

使用 Kernighan-Lin 算法将图划分为两个块。

该算法通过迭代交换节点对来减少两个集合之间的边割,从而将网络划分为两个集合。选择节点对的依据是 Kernighan-Lin 算法的修改形式 [1],它独立地移动节点,在两边交替以保持二分平衡。

参数:
GNetworkX 图

图必须是无向的。

partition元组

包含初始划分的一对可迭代对象。如果未指定,则使用随机平衡划分。

max_iterint

在放弃之前尝试交换以寻找改进的最大次数。

weight

用作权重的边数据键。如果为 None,则所有权重都设置为一。

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

随机数生成状态的指示器。参见 随机性。仅当 partition 为 None 时使用。

返回:
partition元组

表示二分划分的一对节点集合。

抛出:
NetworkXError

如果 partition 不是图中节点的有效划分。

参考文献

[1]

Kernighan, B. W.; Lin, Shen (1970). “An efficient heuristic procedure for partitioning graphs.” Bell Systems Technical Journal 49: 291–307. Oxford University Press 2011.