@MayRiv

Какой алгоритм рассадки игроков по нескольким столам с условиеми в описании?

Есть 25 команд по 4 человека в каждой. Игроки одной команды не должны сидеть за одним столом.
Есть 10 столов, каждый вмещает 10 игроков.
Каждый игрок должен сыграть 10 игр, и желательно, чтобы игроки сыграли примерно одинаковое количество игр друг с другом(если это возможно). Желательно, чтобы каждый игрок сыграл хотя бы раз с остальными игроками(кроме членов своей команды).

На скрине старая рассадка, но она паршивая - большое количество игроков друг с другом не играют вообще.a28adb01d46a4146b7d266c791c4415f.png
  • Вопрос задан
  • 367 просмотров
Пригласить эксперта
Ответы на вопрос 1
Задача минимум - единоразовое решение проблемы.
Идеально - возможность создавать все новые и новые рассадки для разного количества игроков и столов. Метод создания рассадок очень интересует, у меня нет идей как правильно решать эту задачу, если не рандомом формировать массив, проверяя подходит ли он под ограничения:)

Ваши условия дают на конечный массив слишком много ограничений, поэтому при проверке уже готового рандомного массива он с вероятностью 99.999% не будет Вас устраивать. Поэтому либо массив должен заполняться постепенно с проверкой каждой новой ячейки на все уже возникшие при ее заполнения ограничения и возможным откатом назад (и весьма далеко), если все ветви далее по ходу заполнения окажутся тупиковыми. Либо как мне кажется неплохо должен сработать на этой задаче генетический алгоритм заполнения - Вы задаете случайную начальную рассадку и вычисляете суммарный штраф за все нарушения условий (при чем можете задать очень большие "заградительные" штрафы за абсолютно недопустимые условия), а затем оптимизируете изменяя построчно/по столбцам минимизируя штраф.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы