[computer-go] Selective-Search

Chrilly c.donninger at wavenet.at
Tue Jul 18 13:00:05 PDT 2006


My programm Suzie has now a relative sophisticated - and rather slow - 
evaluation. This makes the original approach to write a brute-force 
chess-searcher obsolete. When doing a full width 1-Ply "search" aka trying 
all moves and evaluating them, the first 15 moves contain at least some 
reasonable ones. One could use this 15 moves for a deeper search. But then 
the question arises, how to get the 15 best moves on the next levels. Trying 
all moves, evaluate them and select the best 15 ones is too slow within the 
tree. In this case one could do a full-width search. E.g. on Level 2 a 
normal full-width search searches only 1 move (if the move-generator is good 
enough).
One idea is to make at the root a pass move and to select the best 15 moves 
of the opponent in the same way as the own moves. In the search tree this 15 
moves are generated at all levels plus some local moves which reflect the 
local changes of the last move(s). The 15 moves would cover some global view 
of the positions, the local moves would be responsible for local tactics. 
Its of course also a question how the local moves are generated. The 
simplest way would be to generate all moves which are within a distance k of 
the last move. One could also make a union of the k-distance over all moves 
in the variation. But this would have to effect that the number of possible 
moves grows with the distance from the root. It should be the other way 
round. Selectivity should decrease along the variation.

I know that some programms (e.g. Gnu-Go) have a lot of different 
move-generators which generate (hopefully) the important moves. I try to 
avoid this for the simple reason, that I am too lazy for that. But I wanted 
also to be lazy in the eval. This did not work.

I have not seen/read anything detailed about seletive search. Any pointers 
to some interesting info would be welcome.

Chrilly 



More information about the computer-go mailing list