From: gjm11@cus.cam.ac.uk (G.J. McCaughan)
Subject: Re: alternative goban topologies? (was: Go vs other board games
Organization: U of Cambridge, England
Date: Mon, 31 Aug 1992 20:51:04 GMT

My goodness, but you shold be able to express that more clearly. Look:
(What follows might be a little more digestible than Tim's description,
for those who tried to wade through it and failed.)

A GRAPH is a set of "points" and a set of "edges", where each edge is a set
containing just two "points" and nothing else.
A SUBGRAPH of a graph consists of a subset of its edges, together with a
subset of its points which includes all those points used by the edges of
the subgraph.
A PATH in a graph is a sequence of points in which two adjacent points are
always connected by an edge.

We'll often refer to a graph just by its set of points, where this doesn't
cause problems.

  Now, we need: a graph G on at most countably many points (this is what
  Tim calls <I,C>), and a partition of G into three subsets E,B,W (for
  "empty", "black" and "white").

                             In traditional Go, G is the graph whose points
                             are the intersections on the board and whose
                             edges are the little lines joining them.

We call points in E "empty points", points in B "black stones", and points
in W "white stones".

The LIBERTIES of a stone (of either colour) are the empty points connected to
that stone by paths using only stones of the same colour except at the "far"
end.

 We need also a function F (with real values) whose domain is the whole graph,
 and a function T from the reals to {0,1}. I'll call F the VALUE FUNCTION
 (and F(x) the VALUE of x), and T the THRESHOLD FUNCTION. I'll say that a
 real number x is ENOUGH if and only if T(x)=1.

A stone is ALIVE if and only if (sum of F(x) over all liberties of that stone)
is enough. Otherwise it's DEAD.

                             In traditional Go, F sends everything to 1, and
                             T(x) is 1 unless x=0. Thus a stone is alive if
                             it has any liberties at all.

A MOVE for a player (B or W) is to move one point from E into his set, and then
to remove all stones of the opponent's colour which are then dead (by moving them
into E). This move is LEGAL if and only if the new stone he "placed" is then
alive. On his turn a player may either make a legal move, or PASS.

Each player has a SCORE, which starts at some appropriate value. Whenever a stone
of the opponent's colour is removed he gains F(that) points. Some complicated
things will happen at the end of the game...

                             In traditional Go, the moving procedure is the same
                             and every capture does indeed count for 1 point.

The game ends when there have been three successive passes.

An empty point is TERRITORY for a player if every path with that point as one
endpoint, with all its points (apart, perhaps, from its "far" end) empty, ends
either in an empty point or in a stone of that player's colour.

At the end of the game each player is given, for each point of his territory,
F(that) points.

                             In traditional Go, each point of territory is
                             worth one point.

Tim's description also doesn't cope with the removal of dead stones at the end
of the game, which is essential for Go to work. There really isn't a simple way
to describe this; the traditional thing is equivalent to the following:

At the end of a game, a stone is SAFE if its owner can prevent its being
captured however his opponent plays (giving said opponent the first move).
Otherwise it is DOOMED.
Before the final countup of territory, all doomed stones are removed from the
board (i.e. moved into E), and players score for removed opponent's stones in
the usual fashion.

We really ought to deal with ko too. The simplest way is to use the Chinese
rule:

A move is illegal if it brings about a position (i.e. <E,B,W>) that has occurred
before in the same game.


I'm not really sure there's much point in doing this sort of thing...
Newsgroups: rec.games.go