Just a few simple premises:
- 40 people, 10 people per table
- At some point you want every one to switch tables, and have a few people as possible sitting at a table with someone they sat with the first time around.
This is not a homework problem--this is an actual issue I'm encountering while trying to organize a networking event. There are two main questions:
1) Is it even possible to devise a reassignment scheme were everyone is sitting with an entirely new crowd?
2) Assuming the answer to (1) is no, what's a reasonable algorithm for reassigning that will make it so that as many people as possible are sitting with new people at their new table.
The reason I think the answer to (1) is "No", is because I did 100k simulations of random table reassignment for each person (code below), from that I found there were zero times where nobody was sitting at a table with someone they sat with in the first round. On average, the maximally "redundant" table (i.e. the one that had the most people who were previously sat together) had about 4.65 people who sat with each other the first time around, and there was about an 87% chance of that number being 4 or 5. The min appeared to be 3.
Beyond that I can't really wrap my head around this. If there's a name for problems like this, please let me know or, better yet, if you have a good answer, let's hear it. Thanks!
M = rep(0,100000)
x <- rep(1:4, each=10)
for(k in 1:100000)
{
s <- sample( 1:40, 40 )
x2 <- x[s]
m1 <- max( summary(as.factor(x2[1:10])) )
m2 <- max( summary(as.factor(x2[11:20])) )
m3 <- max( summary(as.factor(x2[21:30])) )
m4 <- max( summary(as.factor(x2[31:40])) )
M[k] <- max( c(m1,m2,m3,m4) )
if( M[k] == 0 ) print(s)
}
matrix(rep(letters[1:4], 10), 10, 4)
Another hint: Generalized Pigeonhole Principle. $\endgroup$