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

[ext] Bouzy's 5/21 Algorithm

Applies standard computer vision methodologies to estimating influence/territory on the board

[ext] GNU Go's influence function

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

CGTValuesOfConnections

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

BensonsAlgorithm

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

PatternMatching

Basics on building a pattern matcher

[ext] 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

[ext] Zobrist Hashing

Used to avoid duplicated board states in tactical reading (commonly used in chess programs)

This is a copy of the living page "Computer Go Algorithms" at Sensei's Library.
(OC) 2005 the Authors, published under the OpenContent License V1.0.
[Welcome to Sensei's Library!]
StartingPoints
ReferenceSection
About