[Top][All Lists]
[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]
)
- [gnugo-devel] Inessentiality again,
Gunnar Farneback <=