gnugo-devel
[Top][All Lists]
Advanced

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

Re: [gnugo-devel] new to the engine and curious


From: bump
Subject: Re: [gnugo-devel] new to the engine and curious
Date: Sat, 27 Dec 2003 09:33:15 -0800

Martin Holters wrote:

> > [...] --decide-string O9
> > [...]
> > O9 cannot be attacked (15 variations)
> 
> The O9 group is trivially alive with two rock-solid eyes.
> 
> > [...] --decide-connection K9/O9
> > [...]
> > K9 and O9 can be connected at M9 (18 variations)
> > K9 and O9 can be disconnected at L8 (1 variations)
> 
> This analysis is correct.
> 
> > [...] --decide-string K9
> > [...]
> > K9 can be attacked at L8 (3 variations)
> > K9 cannot be defended (9 variations)
> 
> > Now, of course K9 could be defended by above connection, which GnuGo
> > doesn't consider. However, when used to determine the best move
> > globally, GnuGo finds this connection to be best (except for non-local
> > moves in empty corners). Could someone give me a short explanation as of
> > why GnuGo doesn't consider this connection when invoked with
> > --decide-string? Could this be changed by adding an appropriate pattern?
> > If so, where? I've tried adding very specific connection patterns to
> > patterns.db and patterns2.db (what's the difference, btw?), without
> > success.

and:

> XXXXXO
> XO...O
> XO.O.O
> XXXXXO

The reading code is written to be very fast and is designed
to answer one question by brute force: whether a string can
be captured. For the purpose of this calculation, a stone
defined to be alive if it can get 5 liberties. The reading
code does not know about eyes, and it does not work with
groups larger than a single string.

Try adding -o vars.sgf to your decide-string and examine
the variations in the resulting sgf file to get some
insight into how it works.

Naturally the ability to get 5 liberties is not a good
definition of life, so there exist other parts of the
engine which are slower but take a more sophisticated
approach. The owl code and the connection code, most
notably. The reading code is callable by these other
parts of the engine to get a fast answer to questions
that may come up, such as whether a pattern is matched.

If GNU Go does not find the defense at M9 of K9 in the
reading code, that would be considered a bug. It is not
a bug that causes a wrong move, because the connection
code is able to find the right move.

Dan






reply via email to

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