Late response, but I can’t think of a solution that won’t either be used for ladder boosting or give excessive wait times to people who aren’t too bothered by extended repeats.
For the sake of was trying to think of a way to do this without allowing someone to game the system, I do have an idea:
I'd have to look at the minutia of how PS does their matchmaking to tweak this, but the
general idea is as follows:
Let's say we have a set of 5 players searching for matches on a ladder. All of these players are close enough in rank, no history of cheating, etc.
Player 1 has four potential opponents (again, this is, for the sake of simplicity, all assuming everyone is equal in rank and the like):
Player 2
Player 3
Player 4
Player 5
Player 1 and Player 2 match and they have their game. They queue up again.
Now, when determining the best matches, have both players "bump the other down in their queue", so that in terms of likelihood to match, there's some kind of artificial modifier to
reduce their chances of immediately rematching. This same process works for future matches - after Player 1 and Player 3 play, Player 3 is in the bottom of the queue for Player 1, and Player 2 is moved up in that same queue, and so on.
If neither player can find any other acceptable match, they're still forced to play one another.
This would reduce the likelihood of getting repeats (maybe make this an option after players rematch X times in a row, so that there's "proof" of it happening first?) while still stopping anyone from trying to force the ladder to make certain matches.
If you wanted to be really fancy and you were worried about a group of people just trying to manually line things up, you could periodically fuzz the queue and swap some of the players' positions semi-randomly every few matches, so that you can't forcefully Halo Reach your way into unfair or biased
big team battle lobbies pokemon matches.
This is nowhere near perfect and I'm not sure if there's some deeper problem I'm overlooking here right now, but I thought I'd throw my hat in if this sounds interesting!
FWIW, I might be able to help on the dev side of things as well here if this gets approved