[Welcome to Sensei's Library!]

StartingPoints
ReferenceSection
About


Referenced by
Temperature
SuperKo
GameTheory
TwoEyesCanDie
DifferenceGame
Numbers
HalfEye
EquivalentGameToGo
AnotherNumber
Traveller

Homepages
JanDeWit

 

Combinatorial Game Theory
   
     ***** UNDER CONSTRUCTION *****

I'll do this right, later. But this seemed like a good place to reply to Jan, now. --BillSpight

The first book on Combinatorial Game Theory (CGT), On Numbers and Games, by John Conway, was published in the 1970s and has recently been republished. CGT was in part inspired by go, since many go end positions are combinations of independent regions of play. Each such position is a combinatorial game, which can be added to or subtracted from other such games. Numbers are special cases of combinatorial games.

By convention, the players are Left (Black) and Right (White). Left scores are positive, White scores are negative. A game may be represented in slash notation:

                    {A, B, C, ... | D, E, F, ...}

To the left of the central vertical bar are the games to which Left (Black) can move, called options or followers. To the right are those to which Right (White) can move.

                    {1 | -1}

represents a 1 point gote. (Remember that scores are games because numbers are games.) Sometimes it is written +/- 1.

JanDeWit: I took a look at "On Numbers And Games" by Conway in the local university bookstore today, so now I understand why 1 + (-1) = 0. You beat me to starting this page, Bill!

I'll adopt the convention of prefixing 'CGT' to any page on Combinatorial Game Theory not directly relating to Go, so my this is the list of references I've built up so far.

Bill: In CGT the number 1 means that Left can make a play, but Right cannot (or the equivalent). Go scoring does not obviously translate to CGT numbers, but you can do it. See Mathematical Go by Wolfe and Berlekamp. Interestingly, the form of go scoring that most straightforwardly translates to CGT numbers is territory scoring with a group tax. See Ancient Chinese Rules and Philosophy.

Anyway, 1 + (-1) = 0. Black can make a play, and then White can make a play, or vice versa. One way to write that is

                    { -1 | 1 }

Here is a 0 in go:

[Diagram]
Diag.: Zero (Seki)

One way to write it is

                    { 6 | -10 || 8 | -8 }

If Black plays first White can reply and get 10 points (White scores are negative); if White plays first Black can reply and get 8 points. Neither player can afford to play.

Here is another 0:


[Diagram]
Diag.: Zero (Miai)

We can write it

                    { 2 | 0 || 0 | -2 }


(Note on the diagrams: When we're getting picky, it's important to indicate where the plays are. So instead of the usual convention of surrounding positions by open points, I have surrounded them by empty space or by nothing. The stones that frame the position cannot be captured.)


JanDeWit: You're confusing numbers and minimax outcomes :-) Writing a computer program to do this kind of stuff really helps in understanding. So far I can write:

      i2g = intToGame -- converts integers to games
      g1 = (i2g 6) ! (i2g (-10))
      g2 = (i2g 8) ! (i2g (-8))
      g3 = g1 ! g2

'value g1' gives "First player to go wins(fuzzy)" as does 'value g2', however 'value g3' returns "Second player to go wins(=0)". Not bad for 130 lines of code, eh? Those 130 lines also incorporate a basic mechanism for playing games interactively...


Bill: Congratulations on your nascent program. :-)

Strictly speaking, your conversion has to do with representation. In CGT integers are games.

What does your program do with {2 | 0 || 0 | -2} ?
How about {15 | 9 || 11 | -1} ?

The minimax outcomes indicate the stops of the game. They may include infinitesimals, but the stops are numbers. The numerical result when Black plays first is the Left stop; the numerical result when White plays first is the Right stop.
I hope that the new diagrams show that I was not confusing the two. ;-)

The thermograph? of a game may be defined in terms of minimax play at different temperatures. Doing so allows the computation of the thermograph for a game with multiple kos or superkos. I did that in my paper, "Extended thermography for multiple kos in go".


Bill, if you could shed some light on how to convert games to canonical form and some more standard terminology? That really would help me to bridge the gap from my self-taught understanding to knowing what all those research papers are about... I know * = Dame = {0|0}, but what does up = {0|*} mean in terms of Go? What is the 'tiny' operator? I think it means 0 || 0 | (-x) but what does that mean?

Arno, Morten: is there a way to put gifs/jpeg/bmps/whatevers on Sensei's? I really need to draw some game tree diagrams now! I could manage inlining from another site if that is necessary... Motion capture for handwaving would be cool as well ;-)

unkx80: You might want to see Chinese Go Terms on how to inline graphics files from another site.


Bill: Con permiso, I think it might be a good idea to move some of this material to CGT Discussion and continue the discussion there. Then this page can be freely edited later.

Canonical form

The simplest form of a game is its canonical form. Obviously, two games are equal if their canonical forms are the same.
In go, the actual form of the game may matter. For instance, a zero may be a ko threat.
There are two basic methods for reducing a game to its canonical form. First, eliminate dominated options. E. g.,

          {2, 2, 1 | -1, 0} = {2 | -1}

Left will prefer to play to 2 rather than 1, and Right will prefer to play to -1 rather than 0.

Second, replace reversible options. E. g.,

          {3 || 1 | -3 ||| -1} = {1 | -1}

(In slash notation the number of vertical strokes indicates how close a game is to the root. Here the root has 3 strokes.) Left's play reverses because, after Left moves to

                    {3 || 1 | -3}

Right can move to

                    {1 | -3}

which is less than the original game. So to keep from suffering a loss, Left must continue to 1. Left's play would also reverse if Right moved to a game that was equal to the original.

The rub there is showing that {1 | -3} is less than or equal to the original. In practice, you usually show reversal by showing that the game derived by replacing the reversible option is equal to the original. You can do that by playing their difference game.

Go players do not have a term for reversal, but they understand it intuitively. For instance, the combination of hane and connection is so common that it has a term of its own: hanetsugi.

[Diagram]
Diag.: Reversal

If B 1 reverses, then the position after W 2 should be no better for Black than the original position. We can show that with a difference game.


[Diagram]
Diag.: Difference game


Can Black with the move win? If not, the hane reverses.

If Black simply connects on the left, White can play hanetsugi on the right and Black cannot win. So let's try a hane on the right.

[Diagram]
Diag.: Black plays first

W 6 fills. The result is jigo. So B 1 reverses.



Just for fun, let's see if White to play wins the difference game.

[Diagram]
Diag.: White plays first

Yes. White wins by 1 point. Black can do no better.



Example of reduction to canonical form:

What is the canonical form of this game?

[Diagram]
Diag.: Example

We know that the hane reverses, and obviously plays further inside the opponent's territory are dominated, as are plays inside one's own territory. But there is one other play that looks pretty good: the sagari. (In fact, Takagawa's Go Reader mentions it as an alternative with the possibility of retaining sente.) Does it dominate the hanetsugi, or vice versa, or neither?

Again, the difference game will tell us.


[Diagram]
Diag.: Hanetsugi vs. Sagari

On the left, Black has played hanetsugi; on the right, White has played sagari. Does this position favor one player?


[Diagram]
Diag.: Hanetsugi vs. Sagari (Black plays first)

If Black plays first, he wins by 1 point.


[Diagram]
Diag.: Hanetsugi vs. Sagari (White plays first)

If White plays first, the result is jigo.



The difference game favors Black, so the hanetsugi dominates the sagari.

(Having read Takagawa when I was learning go, I was surprised when David Wolfe informed me that the sagari was dominated. But so it is.)

The sagari is dominated, and the hane reverses, so the canonical form of this game is quite simple:

                    { 1 | -1 }

Infinitesimals:

An infinitesimal is a non-zero combinatorial game in which both the Left stop and the Right stop are 0. In CGT you win if your opponent has no move, so play with infinitesimals is concerned with getting the last move (tedomari). A great deal of CGT research has been concerned with play at temperature 0.

The simplest infinitesimal is * (star), also written

                   { 0 | 0 }

As Jan pointed out, this is a dame in go.

I have heard that other infinitesimals have been constructed, that involve seki which alters the parity of the dame on the board, but I have not seen one. There seem to be no other infinitesimals in go.

However, plays with a miai value of 1 may be treated as infinitesimals. Then the CGT theory of infinitesimals may be applied to them. Berlekamp and Wolfe did this in Mathematical Go: Chilling Gets the Last Point.

Some of their problems stumped the pros, even 9 dans! However, the theory makes them fairly easy to solve. A few heuristics should enable the knowledgeable go player to get the last 1-point play if possible, in practically all cases. (See Ongoing Game for an example.) Furthermore, they should help get tedomari at higher temperatures.

See Chilling for more discussion, and the go equivalent of such infinitesimals as

                   ^ = {0 || 0 | 0}     (up)

and

              tiny-2 = {0 || 0 | -2}

(Discussion moved to CGT Discussion.)



This is a copy of the living page "Combinatorial Game Theory" at Sensei's Library.
(C) the Authors, published under the OpenContent License V1.0.