my problem is this:
I have a list of people, each person has a certain number of Facebook likes. I want to partition those people into N groups such that, for each group, every member shares at least one like (i.e. everyone in this group likes Daft Punk). The groups can't be any size other than 3 or 4 people, and I want to minimize the number of people who aren't in a group. (However, I'm willing to break the fixed-size-rule if it means that I can minimize the unmatched people even more)
I've been told to look at bin packing and cliques but they're not quite the right fit for my problem.
When searching previous questions I came across this: Categorizing input data into sets based on attribute Something like this seems like it would work, but every member in my group has more than one value (an array of likes). Also I'm not sure if it minimizes the number of excluded people.
Thank you in advance!