[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gnugo-devel] reverse followup valuation
From: |
Evan Berggren Daniel |
Subject: |
Re: [gnugo-devel] reverse followup valuation |
Date: |
Tue, 12 Aug 2003 15:53:32 -0400 (EDT) |
On Tue, 12 Aug 2003, Paul Pogonyshev wrote:
> i have recently spotted quite a few positions where reverse
> followup is completely inadequate. here are two very common
> cases:
>
> XXXX
> XO.O
> XO.O
> XXXX
>
> in this position the moves at '.' are avarded large reverse
> followups because they prevent an atari. i can see no way to
> prevent such positions from matching in `Sente13' pattern.
> i'd propose the following solution: start a pattern database
> named say `invalidate.db' which will remove inappropriate
> followups/reverse followups/anything else. the reason to
> have a separate database is that we need to be sure that
> invalidation patterns match after all other patterns. first
> pattern in this database would look like
>
> Pattern Invalidate1
>
> O*O
> O.O
>
> :+,O
>
> A*B
> AaB
>
> ; lib(A) == 2 || lib(B) == 2
>
> > remove_reverse_followup(*);
> > remove_reverse_followup(a);
This will match in exrta places. Namely, the following:
XXXX
XO*O
XO.O
XXOO
A play at * is worth a full point, because of the reverse followup.
>
>
> second common position is like this:
>
> OXXXXX
> .OO*..
> ------
>
> the move at '*' is avarded a reverse followup because it
> "prevents" atari. actually, it only prevents atari from
> happening at '*' and moves it one/more vertices to the right.
> the proper solution would be to improve defend_against_atari()
> in `helpers.c'. i'd suggest something like this:
Actually, I think this is correct:
A play at * is B's sente, or W's gote. The swing is therefore 1 point,
and the local tally is 1 play. Miai value is therefore a full point. In
gnugo-style counting, it is a play with a reverse followup.
>
> IF move is adjacent to the string we are "saving" from atari
> AND after the move the string still has two liberties
> AND opponent has a safe atari on the string after the move
> THEN no reverse followup should be added
>
> maybe the first condition is not necessary because of not so
> common third position:
>
> O*XX
> O.OX
> O.OX
> OXXX
>
> here move at '*' receives a reverse followup because it prevents
> atari on the second white string. but actually, it doesn't -
> it only prevents one of two possible safe ataries.
>
> i'd like to hear comments on this. reverse followup valuation is
> important, especially in endgame.
Definitely agreed. I think this database would probably work, but I am in
favor of local reading to try to find the answer instead of yet another
database. Perhaps a hybrid approach would be best.
Evan Daniel