2011-04-13 73 views
5

寻找算法或代码,如果有人感到慷慨的做下列事情。我需要为一些球员提供投入。球员人数总是4的因素。我想把每个球员分成4个组,并且重复次数最少。最初的安置是微不足道的:分组算法 - 比赛

1 2 3 4 Table 1 
5 6 7 8 Table 2 
9 10 11 12 Table 3 
13 14 15 16 Table 4 
17 18 19 20 Table 5 
21 22 23 24 Table 6 

因此,玩家1-4彼此“看到”过一次。每个人都玩他们的游戏,然后玩家被洗牌。在接下来的传球(以及其后的传球)中,我想重新排列球员,使他们的重叠最少。基本上,我想阻止玩家尽可能长时间看到反复的表情,一旦不再可能,我想尽可能地减少它。

我觉得这应该是一个相对简单的算法,但是我最终采取的每一种方法都觉得它的权重本身有利于首先被处理的人......而我的直觉/头脑告诉我,正确答案。

为了清楚起见,没有人被淘汰,他们只是每次洗牌。

+1

对于您来说,至少发布您尝试过的内容是非常典型的,所以我们不会建议已经排除的内容。你也没有说明你在用什么语言,所以我不能提出一个想法。 – 2011-04-13 15:07:56

+0

我正在使用C++,但并不特别关心它所处的语言。我对思考过程/伪代码更感兴趣。我最初采取的一般方法是循环访问每个“玩家”,并让他们坐在与之前坐在一起的人数最少的人群中。但是我认为这对那些较低级的玩家来说很重要。我可以使用任何Java/C/C++/.NET/PHP建议。 – JamesB41 2011-04-13 15:13:11

+0

你需要多少回合? – Svante 2011-04-13 15:47:38

回答

3

这基本上是社会高尔夫球员问题。组合优化文献中有许多算法。

+0

谢谢。这足以继续。 – JamesB41 2011-04-13 21:23:51