I am trying to build a matchmaking (dating) algorithm that would take a pool of people and pair individuals in the pool every week.

I am trying to ensure that no 2 people that have previously been paired in the past will be paired again. This means that my algorithm is concerned with historical matchmaking data.

For now, I am trying to do this on a random basis before moving on to a more sophisticated means. Does anyone have an approach to doing this rather than the obvious O(n^2) approach of going through every person, reading the person's dating history, and picking the first other person that's not part of the history ?

If you can suggest a clever means to take advantage of concurrency, that would be great. Do comment if any clarification is needed.

closed as unclear what you're asking by gnat, BobDalgleish, Ben Cottrell, Jörg W Mittag, Christophe Feb 9 at 17:28

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    Isn't this just standard Round-Robin Tournament Scheduling? – Jörg W Mittag Feb 8 at 15:41
  • Huh, I really did not think of that. That is a good point. It really is a round robin like scheduling. Can you please comment on the additional complexity of adding new people/"contestants" in the pool midway and how someone can go about that? – alaboudi Feb 8 at 16:07

Browse other questions tagged or ask your own question.