I am working on an algorithm but I don’t know what I don’t know to start research.
Let’s say I have 20 players in a tournament. Every round, each player will challenge another player to a match. However every player can only be challenged once in a round. So each round, each player will play 2 games, one as the challenger, one as the defender. The challenges are issued at the same time, so to ensure each player can be matched, they issue several challenges in an order of preference. My algorithm then must look at these 20 lists of preferred opponents and create 10 pairings based on a series of weighted criteria.
- Every player must have an opponent.
- It is better to match a player with their preferred opponent than a less preferred opponent.
- Players with lower standings due to losses in prior rounds have more weight to be matched with their preferred opponents.
So far I am tackling this by creating a decision set of every possible pairing and then assigning weights to the pairings based on how strongly each pairing prefers each other and modified by the players standing. Is there a better way to go about this that is not as computationally intensive? Not looking to write the algorithm just the search terms to start learning the math.