Algorithm 尽可能均匀地拆分组

Algorithm 尽可能均匀地拆分组,algorithm,grouping,Algorithm,Grouping,我有n个小组。每组中的项目数为c1、…、cn。我需要将其分成k个大小相等的新组(+/-d%大小偏差),这样我就可以最小化每个新组中旧组的数量,即min[和(每个k中的c)] 你知道怎么做吗?也许是一些标准算法?对不起,我的问题含糊不清。我很乐意回答任何关于细节的问题 提前谢谢 让总人数为m。如果原始群体的规模大致相同,此简单程序应大致将任何新群体中相同旧群体的最大人数降至最低: 如果m/k是分数,那么一些新组将需要比其他组多1人。设e=m-四舍五入(m/k)*k。将会有更大的新群体,我们将(任

我有n个小组。每组中的项目数为c1、…、cn。我需要将其分成k个大小相等的新组(+/-d%大小偏差),这样我就可以最小化每个新组中旧组的数量,即min[和(每个k中的c)]

你知道怎么做吗?也许是一些标准算法?对不起,我的问题含糊不清。我很乐意回答任何关于细节的问题


提前谢谢

让总人数为m。如果原始群体的规模大致相同,此简单程序应大致将任何新群体中相同旧群体的最大人数降至最低:

  • 如果m/k是分数,那么一些新组将需要比其他组多1人。设e=m-四舍五入(m/k)*k。将会有更大的新群体,我们将(任意)首先选择
  • 安排人员,使旧组形成行,并且行“左对齐”。行的顺序以及每行中的人的顺序并不重要
  • 从左上角开始,沿着最左边的列,将人员添加到第一个新组中。如果你到了底部,你仍然没有为这个新组选择舍入(m/k)+1人,继续在第二列的顶部,等等。如果你到了一个“洞”(因为这个列位置的行已经在左边的某个地方完成),继续往下走。基本上,这意味着来自同一个旧组(行)的任何两个人进入同一个新组时,会被尽可能地分开。
    • 对第一个新组重复此操作
    • 对于其余的k-e新组,也可以这样做,但只为每个组选择汇总(m/k)人员

请给出一个小例子。您是希望每个新组由最少数量的旧组组成,还是希望将旧组均匀地分布在新组中,以便每个新组都有来自每个旧组的成员?你的目标函数是什么,即你如何衡量成功?任何一个新组中包含的最大旧组数?“每个新组由最小数量的旧组组成”-请看这一组:)但我不知道如何衡量这种情况下的成功tbh