I am writing an application for tournament organizers. These tournaments have games that last 1h. Usually an organizer has access to the infrastructure for certain time slots in the week, e.g. only on business days from 18:00 to 22:00. So when subscribing, teams give their preferred time slots, e.g. we prefer playing on Mondays 18:00-19:00, Tuesdays 19:00-20:00, etc. In the first phase of the tournaments, teams are grouped in pools where they compete to reach finals.
At the end of the subscription period, I want to automatically generate pools, by grouping together the teams that have the most slots in common, so that it is easier to schedule a game.
Which algorithm should I use to do that ? I have searched a bit, and found partitioning algorithms, like the k-medoids, and I was planning to have a try with that. Is it a good idea ?
Some more details:
- I don't mind if it takes time to generate the pools.
- In a tournament there will be maximum ~50 teams
- Usually organizers have a good idea of how many pools they want to have. They could provide this info.
Thanks for your help !