如何将一个集合分成K个子集,使得子集中元素的和最小

How to divide a set into K subsets such that the sum of the elements in the subsets are minimal?

本文关键字:集中 元素 子集 一个 集合      更新时间:2023-10-16

我正在学习DP,在阅读平衡分区算法时遇到了这个问题。在这个算法中,我们可以将一个列表分成两个列表,使得这些列表的元素之和相等。但是如果我需要K个列表并且需要它们有一个最小和呢?我想修改平衡分区算法来解决这个问题,但我实际上找不到这样做的方法。

设S为{1,1,5},则K = 2时的最优解为{1,1},{5}。

提示吗?

一个简单的算法是:

sort S in descending order
for each element in S:
    put it into the partition with the smallest sum

在您的示例(K=2)中,这会将5放入第一个分区,将1 s放入第二个分区。