Showing posts with label tournaments. Show all posts
Showing posts with label tournaments. Show all posts

Tuesday, March 23, 2010

Tournament Spectator Scoring

In late March in the United States, there is a college sporting event known as March Madness in which the top 64 (sort of) mens college basketball teams compete in a lose-once tournament to determine the annual champion.

I'm not a huge basketball fan---mostly because I have no sense of verifying whether a foul happened---but as with any sport, it can be tons of fun to watch. With March Madness, there is a different level of spectating that occurs. Instead of watching all the games, fans instead predict who will win each game by filling out a bracket (such as this one) before the tournament.

Fans then compete with others using their brackets. You gain or lose points by correctly or incorrectly predicting winners at each round, respectively. How does this scoring usually work?

The first time I did this with some friends in grad school, we scored by simply counting the number of incorrect guesses. The "contestant" with the least won.

Alternatively, you can assign a different number of points per incorrect guess at each round. For example, each correct guess in the first round could be worth 1 point, each in the second worth 2, then 4, then 8, 16, and the final game is worth 32 points if predicted correctly. This is apparently the preferred method (using the scientific method of web browsing).

The problem with this is that after the first few rounds, many of your teams have been eliminated. Sports are much more fun to follow if you always have a team to follow, independent of the game. If I didn't predict either of the teams to take part in a game, then I don't care who wins! Instead, whenever a team you picked loses, you cross them off everywhere in your bracket they appear (losing points at each step) and replace them with the team that beat them. This year, I picked Villanova to "go all the way" but they lost in the second round to St. Mary's College. Now, I am rooting for St. Mary's to win their next game.

This year, my competition is colleague Bill Higgins, who knows something about basketball. We agreed to score this way, with each "correction" costing 1 point. Villanova losing has already cost me 5 points, but it could cost me more if St. Mary's loses (especially if they lose soon).

One problem here is that the final game is likely not super exciting. It is only worth 1 point! Instead, each correction could cost different amounts depending on the round the correction was made. Then, using the 1, 2, 4, ... 32 sequence, I would have lost 10 points due to Villanova's loss instead of 5. In this case, everyone has a stake in the final game and it's worth 32 points. Here, however, because more than 32 points can be lost in any other round, it does not eclipse the weight of other rounds.

Perhaps that would be better to use...

Anyone familiar with other good scoring methods?

Monday, October 26, 2009

Ranking Football Teams... Again

A few weeks ago, I posted about tournament ranking algorithms. Since then, I wrote a little algorithm (the simplest I could think of) and have run it on this year's results after each week's games are over. I'm pretty proud of what's come out of it, but I realize there are still a few issues that may need to get smoothed out.

As I'm mentioning to my software engineering students, I'd really love to have the code be very reusable so it could be used as a ranker for other sorts of tournaments. With this in mind, I've tried to use all the OO-design principles I'm handing out in class. So far, this has been working very well!

I'm definitely at a point where I want to start talking about the algorithm, and listening to complaints about the rankings, etc. The latter is easy (I have Iowa up top) but the former is a bit more scary. If I had a paper, I would simply upload it to arXiv so that it was clearly dated and submitted by me. What do I do if I just have a code base?

One goal for this algorithm is for it to actually match up with rankings from previous years. If I can closely match to those, then perhaps I can not only say something about the strength of the algorithm, but also about how people determine which teams are better.

I mentioned above that this is the simplest algorithm I could think of... so how it is then that I am modifying small parts of it? Part of the flexibility of this system is that you can plug in different functions that reflect the value of a win or loss, difference in score. Thus, using different functions, I get different results (both of the ones I have created so far put Iowa up top; please feel free to complain).

There are a lot of these ranking algorithms (tons here) but how can I determine whether any are the same as mine without looking at the source of each of them? I think I'll probably just put something up on arXiv...

Monday, October 12, 2009

Tournaments

I find myself playing in a lot of Magic tournaments. Sometimes I would find myself in big tournaments with hundreds of people. The longest I took part in lasted ten rounds, each taking a bit over an hour. For that whole time, I didn't leave the tournament room.

There are a number of ways to run such an event, and likely the easiest is to just hold a single-elimination tournament. Now, in order to determine a champion, only (log_2 (n) +1) rounds are needed with n players. The problem is that this is very unsatisfying for many players, especially those like myself, who aren't necessarily all that great and are just hoping to play a bunch of games. Tournament organizers want to attract as many players as possible and thus they use "Swiss Seating", a method of pairing opponents that have similar records. This works well and, as I recall, their format usually has (log_2 (n) + (2 or 3)) rounds. After that, the top eight players enter a single-elimination bracket to determine the overall winner.

This method is nice for a few reasons: it works while having a very small number of contests between players but still creates a sturdy ranking. Swiss seating is used for a number of combinatorial game tournaments (often with their own variations) but it can't be implemented everywhere.

American college football is plagued with controversy about who the best team is in a season. I won't get into all the details about these rankings, but there are a few major restrictions on the sport. The first is that the level of intensity and preparation for each game requires that teams can only play at most once per week. This means that teams play at most 13 games during the regular season and it means there is (probably) no time for an end-of-season tournament at the end aside from the current one-round system (the top two teams play each other).

Well, you might think, there are only about 120 total college football teams (in the top division. Overall, there are more like 650). 13 games is more than enough to come up with a swiss tournament that does a good job of picking out the top two teams. Unfortunately, swiss seating requires that teams don't know in advance who they're going to be playing. In college football, the schedule is usually prepared over a year in advance!

In order to overcome this, rankings are done with human input. This, of course, leads to the above-mentioned controversy: determining who the two top-ranked teams are leads to no end of discussion. Worse still, many of the voters used for input are people tied to teams themselves; each of the coaches gets to vote!

Are there any interesting tournament solutions that handle "bad seating" without introducing a human element? It seems feasible, except that perhaps more than just wins and losses would be needed in the data (amount a team won by, for example).