Алгоритм группировки - Турнир - PullRequest
5 голосов
/ 13 апреля 2011

Ищете алгоритм или код, если кто-то чувствует себя щедрым на следующие действия. Мне нужно принять участие для ряда игроков. Количество игроков всегда будет в 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 Ответ

3 голосов
/ 13 апреля 2011

Это в основном проблема социального игрока в гольф.В литературе по комбинаторной оптимизации есть много алгоритмов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...