带重排的整数分区

时间:2014-01-14 17:21:19

标签: algorithm

我知道“算法设计手册”中充分讨论了“没有重新排列的整数分区”的问题:

“问题:没有重新排列的整数分区 输入:非负数的排列S {s1,... 。 。 ,sn}和整数k。输出:将分区S分成k个或更少的范围,以最小化所有范围的最大总和,而无需重新排序任何数字。“

示例:对以下内容进行分区: 100 200 300 400 500 | 600 700 | 800 900

重整整数的可能性有什么问题?任何链接/参考都会有所帮助。感谢

1 个答案:

答案 0 :(得分:0)

如果您能够重新排列元素,则基本上有一个 set 作为输入,这是bin packing problem的变体。

2个范围的特殊情况称为partition problem,您需要找到S1,S2的子集S,以便sum(S1) = sum(S2) s.t. S1 [union] S2 = SS1 [intersection S2 = {}

不幸的是,这些问题是NP-Complete,并且没有已知的多项式解决方案,但有一个dynamic programming pseudo-polynomial one