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