Computer Go Algorithms
Table of contents |
Page purpose
jhouse: At the time that I created this page, I was trying to code a go AI and hadn't found a reference that I consider satisfactory for collecting the various algorithms (good and bad) that can be used for a go AI. This page was intended to fill this need.
For each category of algorithms, I hope to provide a comprehensive listing of implementation options along with a discussion of the trade-offs of each approach. I don't know the best way to insert the discussions without excessive clutter of the page. Any tips on how to do this would be most welcome. I also have seen references to a "subpage" feature but I don't yet know how to do this...
Score/Influence/Territory/Moyo Estimation
See Influence and Moyo for basic theory
- Applies standard computer vision methodologies to estimating influence/territory on the board
- Influence decays exponentially from stones. Influence by color is done independantly and used to compute a probability that a particular space becomes territory
Discussion:
The following are criteria for evaluating an influence function:
- Modifiable influence for strong/weak/dead stones
- Tunability
- Speed (whole board evaluation as well as incremental)
jhouse: HouseBot 0.1 has had rather poor performance from using a raw Bouzy-based algorithm. I don't think it meets any of the above criteria.
Connections
See Connection for basic theory
- Assigns numerical values to the quality of connections and then combines the individual values for a single result. (Someone please correct me if I've misread this)
Pattern Matching
- See the pattern matching section of this page for additional details
Life and Death
See LifeAndDeath for basic theory
- Detects live stones in the strongest sense. Even if ignored, the opponent can not capture the stones.
2005.04.12 jared: Also look at K. Chen and Z. Chen, Static analysis of life and death in the game of Go, Information Sciences, 121, 113-134, 1999.
Discussion:
jhouse: There must certainly be other fundamental algorithms out there, I just have not seen any links to them. After listing known algorithms, I'd like to follow this up with a discussion of the strengths and weaknesses fo the various algorithms as well as fundamental ideas people have for what should be inside L&D Algorithms.
Pattern Matching
- Basics on building a pattern matcher
Deterministic Finite State Automaton
- Patterns are compiled into an efficient finite state automaton. This is the pattern matching method used within Gnu Go.
Center vs Edge Heuristic
Pashley Various heuristics might be used to seek the best area to play in. Once there are moyos, you could look for the borders. Earlier on, you might seek to keep a balance between high and low stones, influence and territory.
I wonder about some sort of moment function, or group of them, about tengen to suggest where to play. First moment is center of gravity in physics, mean in statistics. It would tell you to keep stones balanced across the board. Second Moment is polar moment in physics (how far is the weight from the axis?) and Standard deviation in statistics. A heuristic based on it might lead to 3rd and 4th line plays.
Other Algorithms
- Used to avoid duplicated board states in tactical reading (commonly used in chess programs)