in reply to Re^3: Algorithm problem: Order matches by difference between players
in thread Algorithm problem: Order matches by difference between players

No, the OP wants a round robin. In the Swiss pairing a new drawing is made after each round. The OP should forget about the additional constraint of having the best player play against the worst in the first round.

There are many ways of doing round robin pairing, and I'd think a quick google job should find some ready implementation. Pick one, and after the schedule is made, just assign the players in such a way that the best player plays the worst, etc. So if whatever algorithm you implement says the first round is "1-2, 3-4, 5-6", then give the best player label 1, the second best label 3, the third label 5, the label 6, 4, and the worst player gets label 2.

  • Comment on Re^4: Algorithm problem: Order matches by difference between players

Replies are listed 'Best First'.
Re^5: Algorithm problem: Order matches by difference between players
by davies (Monsignor) on Apr 18, 2011 at 22:39 UTC

    Obviously I haven't been clear enough. I appreciate that the OP wants a round robin, but a Swiss with N players and N-1 rounds gives you that (unless you allow replays, which can be allowed in some Swiss events). By telling the Swiss algorithm that every match is a draw before they are played, you will get a schedule that will achieve what I understand the OP to want. While I accept that your proposal will work fine for the first round, I'm not clear how you would get a generic process for the later rounds that would prevent 1 playing 2 until the last round. I believe that the Swiss algorithm would achieve that.

    It's possible that I'm still not clear. It's late enough for me to want my bed, so please let me know if I'm not & I'll try to do better tomorrow.

    Regards,

    John Davies

      No, the Swiss system will actually optimize that people of equal strength play against each other as soon as possible - where equal strength is determined mostly by the performance in the tournament. That is, if I win the first three rounds, I will play against someone else who has won in the first three rounds (unless I'm the odd one out, in which I most likely play against someone with 2.5/3).

        where equal strength is determined mostly by the performance in the tournament
        So, by pretending to the algorithm that every match is a draw before anything is played, the part of the logic I have quoted rates everyone equally. Then the second part of the Swiss algorithm matches players of equal results within the tournament to be highest rank against lowest rank - exactly what the OP wants. Unless I've misunderstood something.

        Regards,

        John Davies