Round-Robin Game Scheduling...

Introduction
Few people truly understand the difficulties faced by the person charged with creating a schedule for the upcoming season's games.  Much like there is an art to winning games, there is also an art to scheduling games.  If you were charged with the task, would you be able to make a fair and evenly-distributed round-robin schedule for any number of teams, so that each team plays all the others in successive rounds?  Will you then be able to also ensure that no team is required to play back-to-back games (6 or more teams are required to eliminate back-to-back games) and that all teams are given the same number of home and visitor games?  By the time you finish this article, you will be able to answer the questions posed above with a confident "yes".

The Basics
In single round-robin scheduling, each team plays every other team exactly once.  In double round-robin scheduling, each team plays every other team exactly twice.  Most of this article will focus on single round-robin scheduling for simplicity.  Also, once we are able to create an evenly-distributed single round-robin schedule, it then becomes simple to transform it into a double round-robin schedule as the second half of the schedule is simply a mirror image of the first half.

The real problem with round-robin scheduling lies not in determining which teams should play each other, but rather in what order teams should play each other.  This is referred to as even-distribution scheduling.  Even distribution is one of the most important aspects of scheduling.  This becomes especially true when scheduling double round-robin schedules.  For example, in an six team league designed so each team has one game per week, if the Cubs were to host the Braves during week 1, then the Braves should host the Cubs during week 6.  In other words, both the Cubs and the Braves should face each and every other team before playing each other again.  Also, since the Cubs were the home team during their first match-up, then they should be the visiting team in their subsequent match-up.

Historical Solutions
Historically, game schedulers (both manual and electronic) have tried to use charts to produce round-robin schedules.  Below is an example of charting a schedule for an six team league:

While this method produces the unique team match-ups for a double round-robin schedule, it fails to address any of the other issues that plague schedulers.  As an example, try to use the chart above to create a fair and evenly-distributed game schedule from the chart above.  See how many times you must go through the chart trying different combinations of games before you can reach an evenly-distributed solution.  It can be done, but it is best left to experienced schedulers.

Square vs. Round
To reach the solution, sometimes we must step back and look at the bigger picture. When I first became involved with scheduling several questions quickly came to mind: Why do they call it round-robin scheduling?  What does this have to do with red-breasted birds?

The term "round-robin" actually comes from the French word "ruban", a round ribbon, and tradition has it that its English usage in began in the British navy. This was a way for British sailors to sign a petition of grievances in such a way that they could not be identified as the instigator. A "round-robin" was signed in circular fashion, each signature beginning at the center of the circle and extending out to the radius of the circle. It was later used in modern English to describe a competition where each of the entrants competes at least once with every other entrant.
After finding the answer to my questions about the origins of the phrase, it became readily apparent that I had been trying to force a "square peg into a round hole".  If the solution wasn't to be found in a square chart, what about circular solution?

The Solution
The circular solution to round-robin scheduling begins with a polygon.  The exact polygon to use depends upon how many teams will be playing in the league.  For an odd number of teams, create a polygon with the number of sides equal to the number of teams.  For an even number of teams, create a polygon with the number of sides equal to the number of teams minus one (number of teams - 1).

Odd Number of Teams Example

Let N = number of teams in the league.
There will be N rounds (since each team will play every other team once, and will be idle for exactly one round). 
Using 7 teams (represented as teams 1-7) as an example:

Draw a regular N-polygon (heptagon for 7 teams).
Each vertex represents one team:

Draw horizontal stripes as shown below.
The vertex that has been left out gives the idle team.
Each segment represents teams playing each other in the first round.

So (7, 6), (1, 5) and (2, 4) play in the first round. 
Rotate the polygon 1/Nth of a circle (one vertex point).
The new segments represent the pairings for round two.

Continue rotating the polygon until it returns to its original position.

One more rotation will bring the polygon back to its original position.

Therefore, the schedule will look like this:

   Game 1   Game 2   Game 3 
 Round 1  7, 6 1, 5 2, 4
 Round 2  6, 5 7, 4 1, 3
 Round 3  5, 4 6, 3 7, 2
 Round 4  4, 3 5, 2 6, 1
 Round 5  3, 2 4, 1 5, 7
 Round 6  2, 1 3, 7 4, 6
 Round 7  1, 7 2, 6 3, 5

 

Even Number of Teams Example

Let N = number of teams in the league.
There will be N -1 rounds (each team will play N-1 games).
Since each team will play every other team once, no team will be idle during any of the rounds.
Using 8 teams (numbered as teams 1-8) as an example:

Draw a regular (N -1) sided polygon (i.e., a heptagon for 8 teams).
Each vertex and the center point represent one team.

Draw horizontal stripes as shown below.
Next, join the vertex that has been left out to the center.
Each segment represents teams playing each other in the first round.

So (7, 6), (1, 5), (2, 4) and (3, 8) play in the first round.
Rotate the polygon 1/(N-1)th of a circle (one vertex point).
The new segments represent the pairings for round two.

So (6, 5), (7, 4), (1, 3) and (2, 8) play the second round.
Continue rotating the polygon until it returns to its original position.

One more rotation will bring the polygon back to its original position.

Therefore, the schedule should look like this:

   Game 1   Game 2   Game 3   Game 4 
 Round 1  7, 6 1, 5 2, 4 3, 8
 Round 2  6, 5 7, 4 1, 3 2, 8
 Round 3  5, 4 6, 3 7, 2 1, 8
 Round 4  4, 3 5, 2 6, 1 7, 8
 Round 5  3, 2 4, 1 5, 7 6, 8
 Round 6  2, 1 3, 7 4, 6 5, 8
 Round 7  1, 7 2, 6 3, 5 4, 8

 

How Does This Work?
The restriction that no vertex has more than one segment drawn to/from it ensures that no team is scheduled for more than one game in each round.  Restricting ourselves to horizontal stripes ensures that no segment is a rotation or reflection of another segment. This means that no pairing will be repeated in a future round.  Notice that in the case where N (number of teams) was odd, by having only one idle team in each round, the schedule can be completed in the minimum number of rounds.

Double Round-Robin
If your desire is to create a double round-robin event, simply mirror the single round-robin chart to create the second half of the season's schedule.  Using our example from above, we will use a mirror image of rounds 1-7 to create rounds 8-14:

   Game 1   Game 2   Game 3   Game 4 
 Round 1  7, 6 1, 5 2, 4 3, 8
 Round 2  6, 5 7, 4 1, 3 2, 8
 Round 3  5, 4 6, 3 7, 2 1, 8
 Round 4  4, 3 5, 2 6, 1 7, 8
 Round 5  3, 2 4, 1 5, 7 6, 8
 Round 6  2, 1 3, 7 4, 6 5, 8
 Round 7  1, 7 2, 6 3, 5 4, 8
 
   Game 1   Game 2   Game 3   Game 4 
 Round 8  6, 7 5, 1 4, 2 8, 3
 Round 9  5, 6 4, 7 3, 1 8, 2
 Round 10  4, 5 3, 6 2, 7 8, 1
 Round 11  3, 4 2, 5 1, 6 8, 7
 Round 12  2, 3 1, 4 7, 5 8, 6
 Round 13  1, 2 7, 3 6, 4 8, 5
 Round 14  7, 1 6, 2 5, 3 8, 4

What Is The Next Step?
Only one more step is required to turn our chart into a working schedule.  Get out your league calendar and determine what days and time slots are available for games.  Number each of the available game time slots from 1 to nGames (nGames = [nTeams - 1] * nTeams).  Beginning with Round 1, Game 1 and continuing in order to the last game in the last round, fill in the available game time slots with the games from your chart.  Once completed, you have now created an evenly-distributed round-robin game schedule!

Scheduling Cautions
Despite your best intentions, avoid all temptations to rearrange any of the games you have just painstakingly scheduled.  To do so would defeat the purpose of using our circular scheduling method.  The sole purpose of this method is to provide a fair and even-distribution of games.  Any alterations to the order of the games will disrupt this distribution.

An Online Example
To see an interactive example online, try out our Online Game Scheduler.

 

 Main Menu  GBA Library  Round-Robin Scheduling...

Copyright 2003 - 2018 Greg Dodson
Send mail to webmaster@gilmerbaseball.org with questions or comments.