www.delorie.com/gnu/docs/gnugo/gnugo_196.html   search  
 
Buy GNU books!


GNU Go Documentation

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

16.9 Patterns used by the Influence module

This section explains the details of the pattern databases used for the influence computation.

First, we have the patterns in `influence.db', which get matched symmetrically for both colors.

The patterns in `barriers.db' get matched only for `O' being the player next to move.

The intrusion patterns (`B') are more powerful than the description above might suggest. They can be very helpful in identifying weak shapes (by adding an intrusion source for the opponent where he can break through). A negative inference for this is that a single bad `B' pattern, e. g. one that has a wrong constraint, typically causes 5 to 10 FAILs in the regression test suite.

Influence Patterns can have autohelper constraints as usual. As for the constraint attributes, there are (additionally to the usual ones `O', `o', `X' and `x'), attributes `Y' and `FY'. A pattern marked with `Y' will only be used in the influence computations relevant for the territory valuation, while `FY' patterns only get used in the other influence computations.

The action of an influence pattern is at the moment only used for non-territory patterns as mentioned above, and as a workaround for a problem with `B' patterns in the followup influence.

To see why this workaround is necessary, consider the follwoing situation:

 
..XXX
.a*.O
.X.O.
..XXO

(Imagine that there is `X' territory on the left.)

The move by `O' at `*' has a natural followup move at `a'. So, in the computation of the followup influence for `*', there would be an extra influence source for `O' at `a' which would destroy a lot of black territory on the left. This would give a big followup value, and in effect the move `*' would be treated as sente.

But of course it is gote, since `X' will answer at `a', which both stops the possible intrusion and threatens to capture `*'. This situation is in fact quite common.

Hence we need an additional constraint that can tell when an intrusion pattern can be used in followup influence. This is done by misusing the action line: An additional line

 
>return <condition>;

gets added to the pattern. The condition should be true if the intrusion cannot be stopped in sente. In the above example, the relevant intrusion pattern will have an action line of the form

 
>return (!xplay_attack(a,b));

where `b' refers to the stone at `*'. In fact, almost all followup-specific constraints look similar to this.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003