One Jump Ahead
I just finished a very interesting book called “One Jump Ahead: Challenging Human Supremacy in Checkers.” It was written by Jonathan Schaeffer, the main force behind the creation of Chinook, one of the absolute best checkers playing programs ever created. (You can even play it, but expect to be beaten!)
Schaeffer’s book is really quite an interesting read, because it is effectively a postmortem of a large and ambitious research project. No doubt, Schaeffer has a healthy ego and a strong competitive streak, but he is also pretty honest about the things that worked, and the things that went wrong in the pursuit of this project. The book is also written in a very personal style; Schaeffer writes everything from his own perspective, and clearly acknowledges it as such. The book isn’t in the style of an intellectual treatise, but of a personal account of Schaeffer’s experiences.
One of the things that struck me is how they went about solving this problem of creating a very good checkers playing program. Writing programs that can play games really well is far less of a “clever AI” kind of problem than it might initially seem. (This is a point that Schaeffer returns to throughout his book.) Rather, computers are generally very good at brute-force approaches to these kinds of problems, and the real challenge is for the human creators to properly distill down the underlying principles of the game being solved. A good game-playing program isn’t really a triumph in artificial intelligence itself; rather, it demonstrates the ability of its creators in discerning the underlying principles of the game, and implementing the metrics in a form that can be applied generically to the game. So, in that regard, a successful games-playing program is more about careful engineering than about computers learning how to think. (Oh well…)
It’s funny - after reading this book, I really felt like digging into a game-solving program myself. Fortunately I’m not very experienced with that stuff, so I was able to go back to CS11 grading without too much trouble. ![]()