Programming Technics in Wulu

by Chen Zhixing, the tutor of Wulu Team

Wulu is written by a team under my instruction, so Wulu is similar to Handtalk in many aspects.

First of all, Wulu accepts the main data structure of Handtalk, so you can find data in Wulu similar to those in Handtalk. Wulu uses the same procedures about the fundamental rule of goe with little modification.

Wulu uses the same management precedure of joseki as Handtalk, but the joseki library is much larger than that of Handtalk. In Handtalk, joseki data are inputted purely by hand, while the data in Wulu are formed semi-automatically by means of a program written by Miss Lei Xiuyu, the main programmer of Wulu.

There are some important technics in Wulu by far different from those in Handtalk.

Influence, degree of liberty point

Wulu defines the degree of liberty points as in the following figures. Liberty point must be empty.

        y 2 y
      y z 1 z y         m n
      2 1 O 1 2         O X
      y z 1 z y         m n
        y 2 y 
         (a)            (b)

In fig.a, O is a white stone and those points with other characters are empty. The points 1 (adjacent) is the liberty point with degree 1 of the stone; points 2 (jump) --degree 2; points z (diagonal adjacent) --degree 1.5; points y=20 (knight) --degree 2.5.

In fig.b, O is a white stone, X is a black stone, and those points with m or n are empty. m is a liberty point of the black stone with degree 2 (hane point), and n is a liberty point of the white stone with degree 2.

The influence from stones of a color depends only on the nearest stone (with least degree):

     degree              1     1.5    2    2.5
     white influence     6     5      3    2
     black influence    -6    -5     -3   -2

Influence from both white and black can be compensated mutually. There is also a rounding scheme in Wulu like that in Handtalk with some differences.

As the calculation of influence is much simpler than that in Handtalk, the evaluation is much faster.


Calculation of freedom in Wulu only depends on the liberty points with degree 2 and 2.5. As the liberty points with various degree have been recorded in the calculation of influence, the calculation of freedom is very simple and much faster than that in Handtalk.


The version in 1996 Ing Cup does not include look-ahead. It appeared too weak in the later stage of a game. The 1998 version has used look-ahead. As the evaluation can be done very fast, the look-ahead can include more calculations to obtain more information. As a result, the look-ahead is much successful than that in Handtalk. If the look-ahead is aborted, Wulu will become much weaker.

Pattern matching in string safety

There is a great part of code in Wulu, written earlily by Chen Guobao, concerning string safety, i.e., the possibility of killing a string, or avoiding to be killed. This part makes judgement by means of pattern matching. However, the method of pattern matching is old, similar to that of Handtalk, so is inconvenient to manage.

Pattern management

A new scheme of pattern management was designed in Autumn of 1997 and used first in Wulu.

The patterns are represented by figures consisting of characters:

    O  =  white stone,                    X = black stone
    o  =  white or empty,                 x = black or empty
    *  =  the center of the pattern
    .  =  empty point,                space = any (don't care)
    #  =  out of the go board

A program compiles the figure into instructions in assembly language for the pattern matching. Various conditions of the patterns are represented by some statements and are also compiled by the program.

Miss Lei Xiuyu wrote the part concerning pattern by means of the above scheme. The number of patterns are much more than those in Handtalk. The main tuning of the goe program can be reduced to the modification of the pattern. Miss Lei worked carefully on tuning for a long time. As a result, Wulu became one of the top level goe program and finished the second place in 1998 Ing Cup.