Polyglot books do store move-lists per position, so they do not make an effort to return in book. Just when they accidentally do under their own steam, they use the book moves again. So no problem there.diep wrote:How does your book respond to 1.d4 d5 2.e3,Bg4
Does it play the move Nf3 here, or does it capture the bishop?
The refutation problem is an interesting one. I had planned to solve it (should I ever become interested in book building, which sms unlikely) by simply mininimaxing the tree of book moves, rather than using frequencies at internal nodes. The latter in fact corresponds to the algorithm
nodeScore = SUM(moveScore);
And we know that a Chess engine based on a search that propagates scores like that will not play very strong (Unless the purpose is to defeat a radom mover s quickly as possible, perhaps.) So we usually propagate scores using minimax:
nodeScore = MAX(moveScore);
A continuous interpolation between taking a maximum or computing the sum would be
nodeScore = (SUM(moveScore^N))^(1/N);
You would somehow want to weight against move that have not been played very often, though.