将有序的权重列表划分为大约相等权重的{N}个子列表

时间:2015-10-03 20:13:42

标签: algorithm partitioning

假设我有一个有序的权重列表,其长度为M.我想将此列表划分为N个有序的非空子列表,其中每个子列表中权重的总和尽可能彼此接近。最后,列表的长度将始终大于或等于分区数。

例如:

时代幻想的读者想要在N = 90天内阅读整个时间轮系列。她想每天阅读大约相同数量的单词,但她不想在两天内打破一章。显然,她也不想也不按顺序阅读。该系列共有M章,她有一个单词计数列表。

她可以使用什么算法来计算最佳阅读时间表?

在这个例子中,权重可能不会有太大变化,但我所寻求的算法应该足够通用,以处理变化很大的权重。

至于我认为最优的,我会说,如果选择两个或三个分区之间的重量不同,那么从平均值开始的少量会比一个分区变化很大。或者换句话说,如果这意味着她可以避免阅读比平均值更多或更少的一千个单词,甚至一次,她宁愿有几天读取比平均数字更多或更少的单词。我的想法是使用这样的东西来计算任何给定解决方案的分数:

让W_1,W_2,W_3 ...... w_N为每个分区的权重(通过简单地对其元素的权重求和来计算)。 令x为列表的总权重,除以其长度M. 然后得分将是总和,其中我从1到N(X - w_i)^ 2

所以,我认为我知道一种评分每种解决方案的方法。问题是,除了蛮力之外,最小化得分的最佳方法是什么?

非常感谢任何正确方向的帮助或指示!

1 个答案:

答案 0 :(得分:1)

正如#34;相关"中的第一个条目暗示的那样。在这个页面的右栏,你可能正在寻找一个"最小的粗糙字包装"算法