Re: Magic Scheduling Algorithms

Assuming that there are 2t teams, this will come
close to fairness. If it doesn't make sense (seeing as
it's nearly 2:00am and I'm really bad at proofreading
my own stuff anyway), reply here or email
me.

1) Split the teams into two equal divisions. I'll
call the teams A1 thru At and B1 thru Bt. Rooms will
be numbered R1 thru Rt (for now).

2) We'll
start with interdivisional play first. 
In round 1
in room Rn (n goes from 1 to t), team An will play
team Bn. 
Round 2, room Rn, A(n+1) vs.
B(n+2).
Round 3, room Rn, A(n+2) vs. B(n+4).
Round 4, room
Rn, A(n+3) vs. B(n+6).
And so on. (You can figure
out the formula for doing this -- I'm afraid of
making a "one-off" error if I write it out, though.
Also, if there are only 14 teams (for example), team
B19 should really be team B5. But you probably know
that.)

3a) If t is even: For the first t/2 matches, move the
match in room Rn to room R(n+1). As a result, round 1
will then have team At versus team Bt in room 1, A1
versus B1 in room 2, etc. (NB: After this shift, the
B-teams will have one interdivision game in each room.
The A-teams will have 1 room with 2 matches and 1
with none -- that's the best I can do.) 

3b) If
t is odd, delete round 1. (It will be made up
during the intradivisional portion of play.)

4)
Renumber the rooms as X1 thru X(t/2) and Y1 thru Y(t/2).
If there's a room left over (i.e., if t is odd),
re"number" it Z.

5) Hold two separate round robins.
Put division A in the X-rooms for odd-numbered rounds
of the round robin and the Y-rooms for the
even-numbered rounds of the round robin. Similarly, put
division B in the Y-rooms in odd rounds and the X-rooms in
even rounds.

5a) If t is even, use this
algorithm recursively to create two t-team round robins.
(NB: There is no such thing as a balanced 4-team round
robin -- one team will be in the same room all 3
matches.)

5b) If t is odd, have the teams on bye within their
division's round robins meet in room Z.

I've never
tried out the room-balancing aspects of this, but I
think it'll come close. If that fails, you can either
randomize the room frequency or use a greedy algorithm
(find the best room for each match, 1 at a
time).

Hope this helps!
--Keith

This archive was generated by hypermail 2.4.0: Sat 12 Feb 2022 12:30:44 AM EST EST