【发布时间】:2017-11-13 11:24:53
【问题描述】:
我遇到了一个我似乎无法解决的问题。这不是那么容易解释,所以我会尽力而为:
我已经排序了一大堆值:
[ 2, 8, 26, ..., 1456, 1879, ..., 7812, 9614, ..., 20 408, 26 584 ]
我有 8 个容量无限的空“筒仓”(有点像一个数组)。
我的目标是用我所有的价值观填充这些孤岛,以使它们尽可能平衡。 当我说“平衡”时,我的意思是我希望筒仓中所有值的总和几乎彼此相等。
例如,如果我的筒仓 1 的总和为 52 000,而我的筒仓 8 的总和为 30 000,那就不好了。如果可能的话,我宁愿有 41 000 和 43 500 这样的东西。
我已经完成了轮循,但它似乎不够精确,因为我的筒仓之间存在很大差异。 我也查了 bin-packing,但它似乎不适合我。
感谢您提供的任何帮助或建议!
【问题讨论】:
-
建议:从后面开始,在离最大值最远的silo中添加一个数字。重复。
-
这是en.wikipedia.org/wiki/Partition_problem 的变体(NP 完全),您可以在那里查找各种近似算法(在“近似算法方法”块中)。
-
谢谢大家的帮助!我现在就看看你的想法/链接!
-
谢谢大家的回答! Manfred Radlwimmer 的回答终于成功了!
标签: c# arrays algorithm load-balancing