Next: Influence and Territory, Previous: Territory and Moyo, Up: Influence
The information obtained from the influence computation is used in a variety of places in the engine, and the influence module is called several times in the process of the move generation. The details of the influence computation vary according to the needs of the calling function.
After GNU Go has decided about the tactical stability of strings, the
influence module gets called the first time. Here all lively stones act
as an influence source of default strength 100. The result is stored in
the variables initial_influence
and initial_opposite_influence
,
and it is used as an important information for guessing the strength of
dragons. For example, a dragon that is part of a moyo of size 25 is
immediately considered alive. For dragons with a smaller moyo size, a
life-and-death analysis will be done by the owl code (see Pattern Based Reading). A dragon with a moyo size of only 5 will be considered weak, even
if the owl code has decided that it cannot be killed.
As a tool for both the owl code and the strength estimate of dragons, an "escape" influence gets computed for each dragon (see Escape).
Once all dragons have been evaluated, the influence module is called again
and the variables initial_influence
and
initial_opposite_influence
get overwritten. Of course, the dragon
status', which are available now, are taken into account. Stones belonging
to a dead dragon will not serve as an influence source, and the strengths of
other stones get adjusted according to the strength of their respective
dragon.
The result of this run is the most important tool for move evaluation. All
helper functions of patterns as explained in Patterns that
refer to influence results (e. g. olib(*)
etc.) actually use these
results. Further, initial_influence
serves as the reference for
computing the territorial value of a move. That is, from the influence
strengths stored in initial_influence
, a territory value is
assigned to each intersection. This value is supposed to estimate the
likelyhood that this intersection will become white or black territory.
Then, for each move that gets considered in the function value_moves
,
the influence module is called again via the function
compute_move_influence
to assess the likely territorial balance after
this move, and the result is compared with the state before that move.
An additional influence computation is done in order to compute the followup value of a move. Some explainations are in Territorial Details.
Some of the public functions from influence.c which are used throughout the engine are listed in Influence Utilities.