Now that a computer can play Chess at the highest level, Go is the next challenge for computers. Although a lot of chess knowledge was built into the chess program, very deep searching of the game tree combined with a "relatively" straightforward position evaluation function was central to the success of Deep(er) Blue. Searching the game tree does not work well for Go because the tree is too bushy (branching factor averages around 250 whereas as for chess it is only 30-40) and the evaluation of a Go position is very difficult. Despite efforts to write Go programs since the early 1970's the strongest program today is around 8 kyu (a weak club player)
I am developing a Go program using a Knowledge Based (Artificial Intelligence) approach. The program is built around an explicit representation of Go concepts and rules. It has concepts like:
At the moment I have some simple strategic rules which cover the fuseki (opening) moves such as:
and tactical moves like:
The program plays reasonably well (for a novice) on a 9x9. The program does not play well on a full size (19x19) board because I have not yet written any Fuseki (opening strategy) rules for this board size.
My development strategy is based on incremental improvement. My aim is to write the strongest Go Program in the world so I am more interested in improving its performance against other Go programs than against people. I also want to exploit the computer's strengths rather than just encoding my Go playing knowledge. With this in mind, I play my program against one of the strongest commercially available Go programs (David Fotland's Many Faces of Go) and decide how I can best improve my program's performance. This strategy is proving very successful.
In order to develop my Go program I found it necessary to develop an environment in which I can experiment with various aspects of programming the game of Go. This environment is available for other people to use, though they would need to buy LPA's WinProlog system. My environment could be used for exploring various aspects of computer Go playing, for example:
The program is written in Prolog and runs under Windows 95/98/2000. My Go program can be interfaced to C, C++ and Java. It can also interface to other software via the Windows API, TCP/IP and DDE (Dynamic Data Exchange).
My current goal is to beat “The Many Faces of Go” on a 9x9 board playing at skill level 7. My Go program can beat Plodder on the 9x9 computer-go ladder. Unfortunately Plodder has now left the ladder and I have not managed to beat any other program on the ladder … YET !!
September 2000: New development, Gnu Go joined the 9x9 computer-go ladder. Unfortunately Gno Go challenged and beat me - by a very small number of points. A few buggettes in the end game cost me the game.
January 2001: New development, Viking joined the 9x9 computer-go ladder and I have not yet fixed those end game buggettes.
February 2004: Godot just joined the 9x9 computer-go ladder and beat GL7, so I'm still bottom of the ladder.
8 February 2004