lukes_partitioning#
- lukes_partitioning(G, max_size, node_weight=None, edge_weight=None)[source]#
使用 Lukes 算法对加权树进行最优划分。
该算法对具有整数节点权重和浮点边权重的连通无环图进行划分。生成的簇使得每个簇中节点的总权重不超过 max_size,并且划分所切断的边的权重最小。该算法基于 [1]。
- 参数:
- GNetworkX 图
- max_sizeint
划分中所有节点的 node_weight 之和的最大权重
- edge_weightkey
用作权重的边数据键。如果为 None,则所有权重都设置为 1。
- node_weightkey
用作权重的节点数据键。如果为 None,则所有权重都设置为 1。数据必须为 int 类型。
- 返回:
- partitionlist
一个由节点集合组成的列表,表示划分的簇。
- 引发:
- NotATree
如果 G 不是树。
- TypeError
如果 node_weight 的任何值不是 int 类型。
参考文献
[1]Lukes, J. A. (1974). “Efficient Algorithm for the Partitioning of Trees.” IBM Journal of Research and Development, 18(3), 217–224.