Создание всех возможных комбинаций матчей для N игроков, разделенных на N / 2 пары

Я пытаюсь создать расписание для лиги, в которой есть N игроков, где N%2=0

Скажем, например, я хочу создать расписание для 6 игроков (A, B, C, D, E, F), составляющих разные пары.

Считайте AB != BA и должны отслеживаться как отдельные пары

При 6 игроках должно быть 30 разных пар. Количество парных комбинаций pairsCount / (N / 2)

Ни одна из пар следующих соревнований не может совпадать, например: если в конкурсе 1 была пара AB, то в конкурсе 2 не должно быть AB.

(AB) (CD) (EF)
(AC) (BE) (CF)

...

(BA) (DC) (FE)

...

Я пробовал следовать этому решению

Алгоритм для генерации всех перестановок пар без повторения < / а>

Проблема в том, что пары следующего конкурса такие же, как и в предыдущем конкурсе. Надеюсь, вы поймете мою проблему и покажете мне хороший пример создания такого расписания.


person Mantas Naidzinavičius    schedule 16.04.2020    source источник
comment
Я потерял тебя там. Итак, вы сгенерировали 30 разных пар. Затем вы сгенерировали еще 30 разных пар и понимаете, что они такие же, как и в предыдущем поколении? Разве это не ожидаемый результат, поскольку в вашем 1-м поколении уже есть все возможные перестановки пар? Или я неправильно понял ваше состояние?   -  person tctham    schedule 16.04.2020
comment
Думаю, вы неправильно это поняли. Я генерирую 30 пар всего один раз. Но, используя решение, которое я приложил, я получаю неправильную последовательность: пара (AB) обнаруживается три раза подряд. Я не хочу этого. Я не хочу, чтобы игрок А играл против игрока Б три недели подряд. Я хочу как-то смешать это, чтобы каждую неделю они играли против разных игроков.   -  person Mantas Naidzinavičius    schedule 16.04.2020
comment
Итак, вы получаете правильные pairs, но теперь пытаетесь правильно их заказать? Где два игрока не должны встречаться две недели подряд?   -  person shapiro yaacov    schedule 16.04.2020
comment
Это правильно. Думаю, я нашел здесь одно решение stackoverflow.com/questions/56730923/ пока все хорошо   -  person Mantas Naidzinavičius    schedule 16.04.2020
comment
BA то же самое, что AB? Я думаю, что в целом с такими проблемами порядок не имеет значения в конкретной группе. В противном случае вы будете считать одну и ту же комбинацию несколько раз. Всего должно быть только 15 результатов. Если это правильно, то это известная проблема. Это называется разбиением на группы одинакового размера. Я написал пакет в R, который решает подобные проблемы с помощью функции comboGroups(v = c("A", "B", .. "F"), numGroups = 3). См. stackoverflow.com/a/57861934/4408538   -  person Joseph Wood    schedule 17.04.2020