List Of Components A Computer Go Program Must Have
- An internal representation of the current board position, which it updates as moves are made
- A way of learning where its opponent has moved
- A way of generating a list of its legal moves (this list need not be complete)
- A way of choosing among these moves
- A way of of telling its opponent where it has moved
- The ability, when the game is over, to count the score
- The ability to deduce from this who has won
- A way of knowing how much time it has left
- implement rules (ko-rules, seki, counting...)
- a library of fuseki and joseki
- search for tactical stability of strings
- connection-search for strings
- determination of life and death of strings
- estimate influence and possible territories
This list was started in 2004, continued in 2007 and edited in 2017. It reflects attitudes from before the 2015-16 AI revolution.
Especially we've learnt that a library of fuseki and joseki is totally unnecessary, if the program is created using zero-input self-play, as is the current (2020s and late 2010s) style. KataGo and Leela Zero are examples of programs created in this way.
A particularly dated comment was made in 2004, that a team of professionals making adjustments for each opponent before each game would be required.
For context, Deep Blue beat Kasparov in 1997, but the well-known Stockfish chess program wasn't created until 2008, and Komodo not until 2010. GnuGo had been around since 1989, but the 2004 version was described as having been only 12k or 13k on KGS. It was around this time that SlugGo, "a shell over GNU Go that adds global search to GNU Go's local evaluations", was active.