Say a teacher divides his students into subgroups once every class. The profile of subgroup sizes is the same everyday (e.g. with 28 students it might be always 8 groups of 3 and 1 group of 4). How can the teacher specify the subgroup assignments for a classes so that in the shortest number of classes, everyone has been in a subgroup with everyone else? Exhaustive search seems intractable, so what would be good optimization approach?
Edit: To clarify, I'm assuming the subgroup structure is given and fixed. The optimization is just the assignment of students to groups across the days.
The shortest number of classes is 1, with a single subgroup that contains all the students.
The second shortest number of classes is 3, which is achieved with one small subgroup and a large one. For example, ABCDEFG/HI, ABCDEHI/FG, ABCFGHI/DE.
The proof that 2 classes is impossible: let X, Y be the two largest subgroups from the first day. Each member of X must meet each member of Y on the second day, but to do this would create a subgroup larger than either X or Y.