You may have already heard this (I expect someone to start complaining about it in his on-line sports column soon) but the Patriots have four West Coast road games in 2008. This is just catching up: For the pre-set part of each team's schedule (14 games out of 16), New England hadn't been given "at Oakland / at San Diego" since 2002, and hadn't gotten "at San Francisco / at Seattle" since even earlier.
(As you either already realized or didn't care about: For the pre-set games, at least whether a given game is at home or on the road, the first two and last two teams in each division (alphabetical by place name) are basically travel partners. This adds more variance than strictly necessary to road game travel length, since "at Oakland / at San Diego" is a lot further for an East Coast team to go than "at Denver / at Kansas City," which in turn is further than not having any AFC West road games at all.)
In other news, to be elaborated on either when you care or when I get around to making a clear concise explanation, an NFL schedule is sort of like a Sudoku variant (at the level of abstraction where people like Jason Z. compete) -- if, by "schedule," you're content to mean "eight pairs of slates, within which each team has a road game and a home game, that you can then arrange in the order that suits you."
A half-decent explanation of this is after the fold, including why my fairly straightforward way to get those eight-pairs-of-slates actually has 128 solutions (if you don't n-tuple count some permutations) most years, but 64 this year.
Off-the-cuff first draft of how to do something pretty neat (at least if you've read this far you'd probably think it's neat):
NOTE: Unless/until the NFL votes to extend the current system, this works only through 2009. 2010 onward all bets are off.
NOTE 2: This will be gobbledygook unless you're playing along as we go. If I were less lazy I'd attach screen shots.
1. Learn which teams have which opponents in the season you care about. Most sports outlets publish this right after Week 17 of the previous season, but you can also figure it out through a combination of this site and the final standings. Paste whatever you need to paste into a convenient reference source.
2. Make an 8-by-4 grid based on NFL divisions and previous season order of finish. Group pairs of divisions together, specifically the two divisions in the same conference whose teams all play each other. (Examples: 2008 AFC East vs. AFC West; 2007 AFC East vs. AFC North.)
Now you have a coloring puzzle: Divide each group of 8 into two groups of 4, such that each group has one team per ordinal standings rank but at most one team per travel partnership (travel partnership = e.g. "Buffalo and Miami" or "Oakland and San Diego"). There will always be at least one way to do this, sometimes two.
3. Make a 32-by-16 grid for NFL teams and schedule weeks. (Group the teams by division.) For clarity, thicken the borders so that this resembles an 8-by-8 grid of 4-by-2 grids.
4. Pick an arbitrary color (let's say blue) and an arbitrary conference (let's say AFC). Over the first four pairs of weeks, shade teams in such a way that:
A. Each team has shaded cells for two pairs of weeks (one pair among the first four, one pair among the next four)
B. In a given week, the group of eight teams with shaded cells amounts to two of the groups from step 2. (For example: {BUF, NE, CIN, PIT, JAX, TEN, KC, OAK}.) [If you already understand what we're trying to accomplish, you'll already notice that because of the 2007 NFC standings, the 2008 NFC will need a slight twist, e.g. {DAL, PHI, MIN, DET, CAR, NO, SEA, STL}. Do you see why?]
C. For a two-week period in which eight particular teams are shaded, in one of those weeks those teams will all play division games; in the other, they'll all play games they don't have in common with the rest of their division. (e.g. Pit at NE, Buf at Jax, Hou at Oak, KC at Cin)
D. In other words, the cells with this particular color take care of all the non-common games (two per team), as well as home-and-home for one division rival per team.
5. More generally, in each two-week section there will be five groups of teams (color-code them for your convenience!).
A. 8-team group, as mentioned in step 4
B. 4-team group, all in the same conference as group A, who play intra-conference games against each other. (Example: if the 8 specific teams mentioned above are already group A, then this could be {Ind @ Cle, Ten @ Bal; Bal @ Ind, Cle @ Ten}. Or it could be {Den @ NYJ, SD @ Mia; Mia @ Den, NYJ @ SD}.)
C. 4-team group, some entire division whose non-conference opponents are all in the same division as two of the teams from group B. These teams will all have division opponents two straight weeks, specifically the teams they DON'T face when they're part of "Group A" themselves. Note: You can't actually fill in who plays whom yet. That is, you can't immediately decide that this is "Dal @ Was; NYG @ Dal" rather than "Dal @ NYG; Was @ Dal."
D. 6-team group: two leftover teams (same division) from the same conference as Group A, plus the entire division that faces those two teams in non-conference games. (Example: {Denver, San Diego, AFC South}.) The former two teams will have non-conference games each week, one against the "first half" of the other division (alpha by place name) and one against the "second half." That will leave gaps filled by division games so that all six teams have a home game and a road game. (Example: {Den @ Car, Atl @ SD, TB @ NO; NO @ Den, SD @ TB, Car @ Atl) Note: Same caveat as for part C.
E. 10-team group: Sort of like Group D, except that in the division where half the alphabet has non-conference games, the other half will have conference [non-division] games instead of just facing each other.
6. You'll want to color-code this so that each team is either on the little end of "Group D" exactly once, or on the little end of "Group E" exactly once. To accomplish this, despite everything explained in step 5, you probably just want to look at whichever conference doesn't have "Group A" teams for a given two-week slate, and think of what the different divisions are doing.
(One division is all in-house; one has non-conference games + division games; one has non-conference games + non-division games; one has non-division games + division games.)
At first it would be tempting to claim that there are 24 ways (4!) to arrange the color-coding for those divisions in those weeks, but then you should immediately notice why it's really just 8.
7. As you might notice, opponent assignment and home-road considerations for Group A and Group B are independent of any other group. But opponent assignment and home-road for Groups C-E all depend on each other. In fact as it turns out, once you have the color coding set, you're down to two flavors. You can completely solve for either of those flavors by starting with a "Group C" color (entire division with two weeks in a row in-house) and making a binary choice. (e.g. the aforementioned "Dal @ Was; NYG @ Dal" versus "Dal @ NYG; Was @ Dal.")
Getting from these 8 pairs of slates to a 17-week actual schedule is an exercise for the reader, mainly because there's no elegant way to space things out for byes. (I'd turn one slate in to Weeks 1-2; then 3-4, 5+7, 8-9, 10-11, 12-13, 14-15, and 16-17. Then group a few games each from weeks 3-5, 7-10 to fabricate Week 6. But there's no elegant algorithm for this.)
Posted by Matt Bruce at January 2, 2008 12:53 PMThis is good, but difficult to follow. Please attach screenshots.
Thanks...
Posted by: J at January 16, 2008 08:43 PMI agree with J. Excellent analysis, but screenshots would help. I personally HATE the bye week. Would love to know the secret to formulating the schedule in 16 weeks.
Posted by: Rob at April 8, 2008 11:16 AM