gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnugo-devel] Inessentiality again


From: Gunnar Farneback
Subject: [gnugo-devel] Inessentiality again
Date: Thu, 29 Nov 2001 22:11:42 +0100
User-agent: EMH/1.14.1 SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.3 Emacs/20.7 (sparc-sun-solaris2.7) (with unibyte mode)

I think we need to do something radical with the worm inessentiality
concept. Currently this is defined by this code:

      if (board[pos]
          && worm[pos].origin == pos
          && worm[pos].genus == 0
          && worm[pos].liberties2 == 0
          && !worm[pos].cutstone
          && worm[pos].lunch == NO_MOVE)
      {
        int edge;

        int border_color = examine_cavity(pos, &edge);
        if (border_color != GRAY_BORDER && edge < 3) {
          DEBUG(DEBUG_WORMS, "Worm %1m identified as inessential.\n", pos);
          worm[pos].inessential = 1;
          propagate_worm(pos);
        }
      }

I.e. it must:
1. Have no second order liberties.
2. Have genus 0.
3. Not be a cutstone, i.e. adjacent to at most one opponent string.
4. Not have a lunch, i.e. not be able to capture any adjacent
   stones tactically.
5. Have access (i.e. a path through empty vertices) to at most two edge
   liberties. 
6. Not have access to any string of its own color.

This doesn't really make all that much sense. I won't argue against
the first and fourth conditions, because they are fairly reasonable,
but I have a hard time seeing that the rest are really relevant. I'll
try to explain why with examples, in most cases having X stones which
may or may not be inessential.

6.

inessential    not inessential   not inessential

XXXXXX..       XXXXXX..          XXXXXX..         
XOOO.XX.       XOOO.XX.          XO.O.XX.
XO.OO.XX       XO.OO.XX          XO.OO.XX
XOXXOO.X       XOX.OO.X          XOXXOO.X
XO.X.O.X       XO.X.O.X          XO.X.O.X
--------       --------          --------

5.

inessential    not inessential

|XXXXXXX       |XXXXXXX
|OOOOO.X       |OOOOO.X
|O.X.O.X       |O.X.O.X
|.XX.O.X       |..X.O.X
+-------       +-------

3.

inessential    not inessential

|XXXXX.        |XXXXX.
|..XO.X        |..XO.X
|OOOOOX        |OOO.OX
|.X.OXX        |.X.OXX
|.XXO.X        |.XXO.X
+------        +------

2. This example is somewhat different and is actually a good semeai
exercise. It's also available as an sgf at the end.

   A B C D E F G H J
 9 . O O O X O O O . 9
 8 O O X X X X X O O 8
 7 O X X . . . X X O 7
 6 O X . O O O . X O 6
 5 O X . O + . X X O 5
 4 O X . O O O . X O 4
 3 O X X . . . X X O 3
 2 O O X X X X X O O 2     WHITE has captured 0 stones
 1 . O O O X O O O . 1     BLACK has captured 0 stones
   A B C D E F G H J

Obviously F5 is the vital point for both colors, but currently GNU Go
passes because D6 is considered inessential. We can notice here that
D6 has genus 0 while E9 has genus 2, still D6 can win the semeai.

The key question is for what purposes we are using the inessentiality
of worms. What properties are actually needed there? If it's used in
multiple contexts, maybe one or more of them should use some other
concept than inessentiality.

/Gunnar

(;GM[1]FF[3]
RU[Japanese]SZ[9]HA[0]KM[5.5]
PW[White]
PB[Black]
GN[White (W) vs. Black (B)]
DT[2001-11-29]
SY[Cgoban 1.9.2]TM[5:00:00(5x1:00)];
AW[ba][ca][da][fa][ga][ha][ab][bb][hb][ib][ac][ic][ad][dd][ed][fd][id][ae][de][ie][af][df][ef][ff][if][ag][ig][ah][bh][hh][ih][bi][ci][di][fi][gi][hi]
AB[ea][cb][db][eb][fb][gb][bc][cc][gc][hc][bd][hd][be][ge][he][bf][hf][bg][cg][gg][hg][ch][dh][eh][fh][gh][ei]
)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]