拆分成团队算法

时间:2015-04-22 12:23:43

标签: algorithm

我们都有一个硬算法问题。

所以我是20个小孩的5周篮球项目的协调员。每周,我想组建4个团队,每个团队有5个孩子。这些孩子将在一周中的每一天都在同一个团队中玩。这将为他们提供一个了解团队中每个人的好机会。

但是,每个新的一周,我都想创建新的团队。我想要一个算法,可以创建5组4个团队(每周一个)。只有一个条件。每个孩子必须和任何其他孩子在同一个团队中至少一次。如果无法做到这一点,请解释原因。谢谢!

- 更新 -

所以我认为这不可能,原因如下: 让我们说孩子的名字是{'a','b',...,'t'} 为了让孩子'a'与其他孩子互动,他每周的团队可能如下所示: 第1周:{'a','b','c','d','e'} 第2周:{'a','f','g','h','i'} ... 第5周:{'a','r','s','t','b'}

看看第5周,'a'必须与'b'(或另一个孩子'a'已经玩过)放在同一个团队中。因此,'a'在整个5周内只有一次重复的空间。要使此算法起作用,总共必须重复20次(每个孩子一次)。但除了第一周以外,每周至少每周需要重复8次。

因此,如果您可以设计一种算法,最大化每个孩子与同一个团队在一起的孩子数量,那就太棒了!无论如何,我都会发布我的最终算法。

1 个答案:

答案 0 :(得分:4)

这个问题与文献中的(完全)社交高尔夫球手问题密切相关。由于每个孩子有4个队友位置/周* 5周= 20个队友位置,这个实例非常紧张,约束求解器是可行的方法。