Next: Influential Display, Previous: Surrounded Dragons, Up: Influence
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.
These patterns add extra influence sources close to some shapes like walls. This tries to reflect their extra strength. These patterns are not used in the influence computations relevant for territory valuations, but they are useful for getting a better estimate of strengths of groups.
These patterns add extra influence sources at typical invasion points. Usually they are of small strength. If they additionally have the class `s', the extra influence source is added for both colors. Otherwise, only the player assumed to be next to move gets the benefit.
The patterns in barriers.db get matched only for `O' being the player next to move.
Connections between `X' stones that stop influence of `O'. They have to be tight enough that `O' cannot break through, even though he is allowed to move first.
Connections between `O' stones that stop influence of `X'. The stones involved can be more loosely connected than those in `A' patterns.
These indicate positions of followup moves for the `O' stone marked with `Q' in the pattern. They are used to reduce the territory e. g. where a monkey jump is possible. Also, they are used in the computation of the followup influence, if the `Q' stone was the move played (or a stone saved by the move played).
These patterns indicate intersections where one color will not be able to get territory, for example in a false eye. The points are set with a call to the helper non_oterritory or non_xterritory in the action of the pattern.
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 FAIL
s 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.