kernighan_lin_bisection#

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

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

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

Parameters:
GNetworkX图

图必须是无向的。

partition元组

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

max_iterint

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

weight

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

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

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

Returns:
partition元组

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

Raises:
NetworkXError

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

References

[1]

Kernighan, B. W.; Lin, Shen (1970). “一种用于图分割的有效启发式程序。” 贝尔系统技术期刊 49: 291–307. Oxford University Press 2011.