分组算法 - 比赛

Jam*_*B41 5 algorithm performance grouping

寻找一个算法,或代码,如果有人感到慷慨做以下.我需要为一些玩家提供输入.玩家的数量总是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
Run Code Online (Sandbox Code Playgroud)

因此,玩家1-4已经"看见"了一次.每个人都在玩他们的游戏然后玩家被洗牌.在下一次传球(以及随后的传球)中,我想重新排列球员,使他们的重叠次数最少.基本上,我想防止玩家尽可能长时间地看到重复的脸,一旦不再可能,我想尽可能地减少它.

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

为清楚起见,没有人被淘汰,他们每次都被洗牌.

小智 3

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