Как распределить N студентов по n группам, чтобы каждый студент работал со всеми студентами? - PullRequest
0 голосов
/ 03 сентября 2018

Я ищу руководство или алгоритм или что-нибудь, что укажет мне правильное направление. Позвольте мне объяснить, что я хочу на примере:

Предположим, здесь 40 учеников. Я должен убедиться, что каждый студент работал с каждым другим студентом в течение всего учебного года. Группы меняются каждые 2 недели. Я имею право использовать любой язык (хотя я хотел бы, чтобы конечный продукт был превосходным, поскольку конечный пользователь знаком, и мне не нужно создавать какой-либо пользовательский интерфейс), но я не могу думать о логике. Лица в группе в основном заранее определены. В основном это между 3-5. Если это 3, 40/3 = 12 групп из 3 и 1 группы из 4. Теперь нам нужно перетасовать студентов, чтобы, скажем, в Pth shuffle каждый студент должен был работать с каждым другим студентом в своей партии. Если это невозможно в P попытках, максимизируйте то же самое. P в основном ограничен количеством предметов, которые они принимают, и, следовательно, не может быть изменен.

То, что я до сих пор пробовал, было чем-то вроде грубой силы. Это неэффективно и требует много попыток, чтобы убедиться, что каждый студент работал с другими, и следующая итерация очень предсказуема (я хотел бы, чтобы она была псевдослучайной, если это возможно). Логика, которую я пробовал,

1st Pass - Group 1: 1 to 3, 3 to 6, 6 to 9, .. Group P: 37 to 40
2nd Pass - Group 1: 2 to 4,... Group P: 38 to 40, 1
3rd Pass - Group 1: 3 to 5, ... Group P: 39, 40 , 1 2

Любая помощь высоко ценится :)

...