[Welcome to Sensei's Library!]

StartingPoints
ReferenceSection
About


Referenced by
FalseEye
InstantEyeTester
Eye
ToBeMasterEdited
TwoHeadedDragon
HalfEye
GeneralEyeDefinition
EyePoint
Group

Homepages
KarlKnechtel

 

Eye Definition Discussion
    Keywords: Shape, Life & Death, Go term

unkx80: Moved the following discussion from false eye. It is hard to summarize all that various definitions, so I just put them all here. The 2/4 - 1/2 - 1/1 rule has been slightly modified, summarised and put into the general eye definition page.


There was some discussion on rec.games.go a few months ago about ways to instantly tell if an eye is false or not. It turns out you can, by using my magical Instant Eye Tester!

    -- Matt Noonan

[Diagram]
Diag.: A false eye?

:-) The false eye discussion is always fun.

I've seen other 'definitions' which, related to the diagram on the left, say that, if 2 or more of the squared points are taken by the opponent, your potential eye at the circle is false.

E.g. in Arnos example above, white occupies 2 of these spaces, and the eye is false.

I often found it useful to think along the lines of 'can I be forced to fill this point by e.g. my opponent putting some stones into atari'.

--MortenPahle

The problem is, that definition isn't always true.. see the beast at the end of Instant Eye Tester for a spectacular failure of it. :)

On the other hand, what you could say is that the eye could not be false if less than two of those points are taken away, so you could even avoid doing a path test in many cases.

Can anybody think of a more mundane situation where the 2/8 test fails? I seem to remember them existing, but I'm not positive.

-- Matt Noonan


[Diagram]
Diag.:

Here's a completely improbable situation that really violates the 2/8 rule.

-- FCS

The only time when the 2/8 test does not work is in the case of a 'two-headed-dragon' (at least for stones in the center of the board). Your example is a bit over-complex because you made the eyes 'super-false', removing all four rather than just two of the points.

-- Andre Engels


[Diagram]
Diag.: 2/8 Failure

2/4 and still alive without go stone yoga. :)

-- Matt Noonan (said 2/8 again at first, but I guess if one of the four non-diagonal points are filled, it's pretty obvious that it isn't an eye..)

BillSpight: The above does not violate the 2/4 rule, since the opponent occupies only 1 of the 4 points in question for each eye.

-- MortenPahle - These reminded me of an article I once found on the IGS ftp archive (taken from rec.games.go). See Maximum number of live groups

JanDeWit writes: The version of the 2 out of 4 test goes something like this: when checking an eye for falseness, put 'fake stones' at an open intersection at the corner when the opponent can't play there (when this is suicide for example). Then, if all directly adjacent points and at least three of the corner points are yours, the eye is real. This at least rules out MattNoonan's situation above. But I think it breaks down here:


[Diagram]
Diag.: Another 2/4 failure

Here, white can play at the circled points without a problem for black.



A logical definition

As stated above, this theory breaks down for the - very rare - examples included in InstantEyeTester or TwoHeadedDragon.

The best definition I've heard, covering all possibilities, is this one:

  • A virtual eye is an empty space, reached by chains of the same color.
  • A group lives, if all its chains reach the same two virtual eyes.

(sidemark: If chains that don't reach the virtual eyes can connect to the chains that do, without filling any of the virtual eyes chosen, they can be included in the living group).

Reach is meant as in the Tromp/Taylor rules. Virtual eye because it deviates from the concept of 'eye' we are accustomed to.

Although this is theoretically very nice, and probably fits the computer algoritm, the human preference for visualization makes the 2/4 - 1/2 - 1/1 definition much more practical, and correct for 99,99% of the occasions.

--DieterVerhofstadt

Actually, this works great for humans! This is exactly the method I personally use (and last I checked I was a human). It is easy to quickly visually check if all your chains can reach both eyes. If one of your chains can only reach one eye, and can't be joined to one of the other chains (that reaches both) - then it isn't part of the live group. Furthermore, if such a chain is forming one of the eyes - then that eye is false. This is exactly and clearly the case with the chains above the point a in the first two figures on this page.

This brings up two points:

  1. Does it make sense to define the concept of "false" eye out of the context of finding two live eyes?
  2. This discussion uses the term "chain" where I've seen other literature use "string". And the InstantEyeTester uses "string" to mean something else.

I suppose that's why this whole sequence needs ToBeMasterEdited!

--MtnViewMark


[Diagram]
Diag.: corner

The previous definition does not cover this simple example. These chains do not reach the same virtual eyes.

My proposition for the definition is:

  • A virtual eye is an empty point, reached by chains of the same color.
  • A chain is about to live, if it reaches two virtual eyes that are not falsified.
  • A virtual eye becomes false, if it is reached by a chain that is not about to live.
  • A chain lives unconditionally, if it is still about to live when all the appropriate eyes are falsified.

A chain is said to be alive, if the unconditional life can be obtained with alternate play. Seki is not taken into account here.


[Diagram]
Diag.: corner

If one would like to use the definition with larger eyes, he should be careful. This would be alive using the definition, if virtual eyes larger than one would be blindly accepted.

--TapaniRaiko



[Diagram]
Diag.: corner

If you include the sidemark of my definition, your example meets it. The point A is then a connection point, and not a virtual eye.

(TapaniRaiko: Sorry, missed it. (Or there is a slight inaccuracy in the definition: no chain reaches the two virtual eyes in the example, so nothing can connect to such a chain either.) My definition is more complicated, but it does not require the selection.)



About your definition:

  • The concept of a living chain relies on the concept of a false eye.
  • The concept of a false eye relies on the concept of a living chain.

The definitions are thus self-recurrent.

(TapaniRaiko: Think of it as an algorithm. Virtual eyes are implicitely not false until the algorithm changes them to be. I did not want to write it mathematically, since it is less readable.)


About the purpose of a definition for life.

There is a difference between a giving correct definition and including theorems in your definition.

Of course other configurations of stones (chains) are said to be alive even if they don't meet the definition. That is because we know that the groups can always evolve to the status mentioned in the definition. Examples:

[Diagram]
Diag.: A live group

This group isn't alive according to any definition. It's alive because it will always be able to make two eyes. One can't include such groups in definitions. Rather you make a "theorem" saying that this group is alive, and give a proof.

(TapaniRaiko: Having two eyes is a shortcut to know that the group can not be captured. You can end reading, when black gets two eyes. "A chain has two liberties that the opponent cannot remove" is a nice definition in itself and these two just clarify, what the unremovable liberties would look like. A "better definition" could cut the reading shorter. In fact a lot of Go knowledge is shortcuts. (like: TheLGroupIsDead.))


[Diagram]
Diag.: The sansan invasion is alive

(in abscence of outside walls)

--DieterVerhofstadt



DieterVerhofstadt:

How about this:

Definition:

  1. A virtual eye is an empty point, reached only by chains of the same color.
  2. A collection of chains lives with eyes, if all the chains reach the same two virtual eyes.

Addition:

  1. A group of stones is alive with eyes, if for any sequence of moves by the opponent, there is a sequence of answers that turns the group into a collection of chains complying with definition 2.

Remarks:

  1. The definition reads "if" and not "if and only if"
  2. There is no question of bigger eyes. A virtual eye is one empty point reached only by chains of one color (so no other empty points).
  3. The definition does not include seki
  4. The addition gives a method to bring down the status of a group to the definition. The addition is not included in the definition, since there are groups of stones for which no pro, let alone a computer program, can decide whether they are alive or not.

BillSpight: Howard Landman, in his "Eyespace values in go" paper in Games of No Chance, defines topological life this way: A group is topologically alive iff the chains of the group surround more than one one-point eye, and each chain reaches more than one of those eyes.
The definition given above, which required all chains to reach the *same* two eyes, is not so good. Each chain just has to reach two eyes, not necessarily the same ones.


KarlKnechtel: This is my attempt at definitions. It has an aesthetic advantage in that there is no distinction between chains/strings/groups/whatever. I'll call them strings.

Define a path as a set of stones including a and b such that every stone is orthogonally adjacent to some other stone in the set.

Define a string as a path which is not a subset of a larger path. (This is the easiest way I can think of to specify the things formally.)

Define an eyespace as a set of points on the board satisfying the above definition for string, except with "stones" replaced with "empty points".

Define a liberty of a string (just to make sure we're clear on everything) as a point which is

  1. empty; and
  2. orthogonally adjacent to some stone in the string.

Define an eye as an eyespace, such that every string which has a point in the eyespace as a liberty is of the same colour. These strings are said to enclose the eye.

Define a simple eye as an eye, such that every point of the eye is a liberty of every string enclosing it. (A 3x3 eye is not "simple", therefore: this is important to the definition of unconditional life which follows, because with infinite passes a group with two such eyes could be captured. See TwoEyesCanDie.)

Next, apply the following algorithm to define true eyes and false eyes:

  • Mark every simple eye on the board as true.
  • Iterate until no more simple eyes are marked false on an iteration:
    • For each string on the board:
      • If there is exactly one simple eye such that
        • the simple eye is marked as true; and
        • some point of the simple eye is a liberty of the string being considered,
      • then mark that simple eye as false.

A true eye is any simple eye which is marked true after application of the algorithm; the simple eyes marked false are false eyes. (Large spaces are still not categorized as eyes; the idea is that further play can settle them into simple eyes which will almost certainly be true, but sufficient passes allow the other player to capture.)

Then:

A string is unconditionally alive iff its liberties include two true eyes.

It is alive in sente iff,

  1. it is not unconditionally alive; and
  2. for any alternating play starting with the opposed player, the player owning the string can make it unconditionally alive. This is sufficient for "life" in endgame evaluation, I think.

It is alive in gote iff,

  1. it is not alive in sente or unconditionally alive; and
  2. there exists a point on the board such that if a same-colour stone is played there immediately, the group becomes alive in sente or unconditionally alive.

It is unconditionally dead iff there does not exist a set of points such that occupying those points with same-colour stones would render the group unconditionally alive.

It is dead in gote if none of the above apply, and it is not one of a pair of strings alive in seki:

Two strings are alive in seki iff

  1. the strings are opposite colours;
  2. for all points which are liberties of both strings, if a stone were played there by either player, both strings would immediately become alive in gote.

(Slight change here. "There exists" was the wrong criterion for the shared liberties in seki. If playing in one liberty makes a living shape and playing in the other makes a dead shape - that's no seki.)

Finally:

The game is completed when

  1. Any stone placed on the board by either player, not orthogonally adjacent to a string of the same colour (so that it forms a new string), would be unconditionally dead (if it is dead in gote, the other player might well pass; but we should still demonstrate the status of the other group, for the reason given below. I think. Is it fair to punish new players by making a doomed invasion a contract to play until the string is unconditionally dead?);
  2. No string on the board is alive in gote or dead in gote. (The reason being that plays can render dead in gote strings alive in gote; if each player does that, then the next player has to choose between making his/her own group alive in sente or killing the other group, so the position is still unsettled.); and
  3. Having satisfied the above criteria, and having removed all unconditionally dead groups from the board, every empty point on the board is then either
    • part of an eye (what we would call "territory"), or
    • a liberty of a string which is alive in seki.

I think this is self-consistent, and sufficient to cover all cases. Comments?


Saesneg: I think I can simplify your definition, though I consider it doomed from the outset!

Every point on the board has the colour black, white or empty. If a point is not empty it is filled.

Two points are hard-connected if they are the same colour, and there exists an orthogonal path from one to the other via other points of the same colour.

A string is a set of points of the same colour such that every pair of members is hard-connected, and none is hard-connected to any non-members. Note that by this definition a string may consistent of empty points.

Two strings are adjacent if any member of one is adjacent to any member of the other. Two adjacent strings are called neighbours. Note that neighbours are, by definition, coloured differently.

A simple eye is a small empty string whose neighbours are all the same colour ('small' will be discussed later!).

Two filled strings are soft-connected if they are the same colour, and there is a path from one to the other via simple eyes and strings of the same colour.

A group is a set of filled-strings such that each pair of members is soft-connected, and none is soft-connected to any non-members.

Every simple eye adjacent to a group is a true eye, except those with a neighbour which is adjacent to only one true eye. Is this recursive statement logically well-formed?

A group with two true eyes is alive.

Unfortunately these attempts to formalise the definition of life cause as many problems as they solve. I do think they are useful as long as you continue to apply intuition and 'common sense' (which can feel very uncommon to a beginner). Firstly a sufficiently large eye is not really an eye in any meaningful sense. Secondly an eye can in practice be adjacent to strings of either colour, when it contains dead stones. Any attempt to define a dead stone rigorously is not for the faint-hearted. If there really were a simple formal definition of true eyes Computer Go would be a lot stronger than it is.


jvt: Semantics... IMO you can't define a single global true eye rigorously but it's easy do define two (or more) eyes. There is a simple formal definition of true eyes no one mentioned yet: a stone or group of stones is said to have two eyes if there is a way for the defender (even if the attacker plays first) to reach a configuration (including these stones) which Benson's algorithm recognizes as inconditionaly alive. That's all. Simple isn't it? This algorithm is used in Computer Go by some life and death programs / modules. Search + Benson as a cutoff test recognize all sort of shapes that are alive with two eyes, including any two-headed dragon, etc. Benson's algorithm is static (i.e. without search). There is no way to recognize two eyes generally without search. However many programs use an eye shape library for the most usual shapes.


See also:



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