PHP - 以前匹配最少的组分发

时间:2016-04-11 21:45:53

标签: php algorithm matrix

我几天来一直在努力解决以下(算法?)问题。我有一份我需要均匀分组的人员名单。每轮"轮#34;存储分组以便下一次(轮次)我尝试将人们组合在一起时,如果他们在上一轮中没有匹配,我们将它们分组。

示例:

  • 约翰
  • 鲍勃
  • 劳拉
  • 迈克尔
  • 标记

第一轮

第1组

  • 约翰

  • 鲍勃

  • 劳拉

第2组

  • 迈克尔

  • 标记

现在对于第二轮,我们必须避免将John Bob Laura组合在一起(或者至少将其最小化)。

我提出了适用于这些小边缘情况的解决方案,我用

创建配对矩阵

[John - Bob] = 1(他们在前几轮中配对的次数)

[Bob - Laura] = 1

等...

然后我循环遍历该矩阵,对于每个人,我发现该人与其他人配对的次数最少,并将这两个添加到列表中。等等,直到每个人都被添加到该列表中。

然后我将该列表拆分为所需数量的组(组大小是唯一的参数)。

我发现,经过几轮或更大的"名单后,这并不起作用。

我越来越认为这可能是一个NP问题,因为我必须多次迭代才能找到完美的"列表"。

我应该研究一种算法吗?我在PHP中对此进行编码,但Java或伪代码也适用。

一个包含36人的名册。

第一轮,组人数= 6

第二轮,组数= 4

我不应该有人不止一次与其他人配对。

根据我的解决方案,我有大约10次配对发生了两次。

0 个答案:

没有答案