Associate
So, an old friend of mine has come to me with a problem. He's planning a networking event in his business sector, with a bit of a twist - the seating arrangements are switched around every X minutes, speed dating style, to maximise everyone's exposure to everyone else. He's asked me to figure out the optimal algo so that by the end, all N people end up having gotten on a table with all N-1 other people. Now his sector happens to be education and he's put this to several maths teachers and got nothing useful back, so it may be a tall order, but still.
The most obvious "shift everyone left by 1" doesn't work as there's multiple people per table. Total of 10 tables with 8 seats per table, in fact. And each of these 80 people should have had a chance to talk to as many of the other 79, with as little duplication (i.e. sitting with the same person multiple times), as possible. Now due to cross-pollenation of ideas ("oh yeah that guy was talking about something similar") not everyone will need to physically sit with everyone else for best results, but a reasonable percentage (80%? each person sat with 60-65 others?) would be good. It's also obvious that minimally 12 'rounds' are needed (79 people to see / 7 people at a table = 11.3 which ~ 12) for the maximal case.
Anyone know of a general purpose algo for this sort of thing?
The most obvious "shift everyone left by 1" doesn't work as there's multiple people per table. Total of 10 tables with 8 seats per table, in fact. And each of these 80 people should have had a chance to talk to as many of the other 79, with as little duplication (i.e. sitting with the same person multiple times), as possible. Now due to cross-pollenation of ideas ("oh yeah that guy was talking about something similar") not everyone will need to physically sit with everyone else for best results, but a reasonable percentage (80%? each person sat with 60-65 others?) would be good. It's also obvious that minimally 12 'rounds' are needed (79 people to see / 7 people at a table = 11.3 which ~ 12) for the maximal case.
Anyone know of a general purpose algo for this sort of thing?