Algorithm 基于两因素的人群分组算法

Algorithm 基于两因素的人群分组算法,algorithm,Algorithm,我想了很久,但还是想不出来。我正在寻找任何语言的算法,根据以下两条规则将一群人分组: 按技能等级升序分组,以数字表示,技能越高,技能越高。在可能的情况下,小组中最好的和最差的不应相差超过1分。 尽可能分散来自同一国家的人员,即不要将来自同一国家的人员放在同一组中,同时不要违反上述规则1。在可能的情况下,团队不应由来自一个国家的人组成。 如果可能,每组最多可以有4人或3人。例如,如果有18人,则将他们分为3组(4人)和2组(3人) 国家/地区的数据技能水平示例: 5美国 5美国 5美国 5美国 6

我想了很久,但还是想不出来。我正在寻找任何语言的算法,根据以下两条规则将一群人分组:

按技能等级升序分组,以数字表示,技能越高,技能越高。在可能的情况下,小组中最好的和最差的不应相差超过1分。 尽可能分散来自同一国家的人员,即不要将来自同一国家的人员放在同一组中,同时不要违反上述规则1。在可能的情况下,团队不应由来自一个国家的人组成。 如果可能,每组最多可以有4人或3人。例如,如果有18人,则将他们分为3组(4人)和2组(3人)

国家/地区的数据技能水平示例:

5美国 5美国 5美国 5美国 6GB 6GB 6GB 7中国 7中国 7中国 7中国 7香港 8美国 8美国 8美国 8 CA 8中国 8中国 ..分为2组4和2组3

如果你有什么想法,请帮忙?
提前谢谢你

我建议如下

首先,按国家和技能水平汇总数据,使数据看起来更像:

US    5    4
GB    6    3
. . .
首先按最高排名对其进行排序

然后使用贪婪算法

确定组中成员的数量(大小或大小-1) 从排名最高的第一组中选一个。 继续从符合国家条件的后续小组中抽取一个,这样您可能需要跳过美国。 这定义了第一个组

然后重复


这并不能保证是最优的。但是,问题的最优性并没有定义。哪个更重要?国家多样性还是技能相同?

感谢戈登的建议。技能水平最多可以相差一点,同时我们希望避免将来自一个国家的人分为一个单一的群体,这样你就有了国家的多样性。你如何确定排名?