[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