Author: Sune Fischer
Date: 13:15:03 11/18/02
Go up one level in this thread
On November 18, 2002 at 13:23:01, Robert Hyatt wrote:
>>Not necessarily. I do that, but before calling qsearch I get the chance to check
>>for draw, see if there is a hash or egtb table hit or if I should do some
>>further extensions (ie. this way I don't enter qsearch when in check!). I don't
>>do any of this in qsearch.
>
>I don't enter quiesce() if in check either, however I also avoid tacking on the
>procedure call overhead. If you want to do all that, just move it down in your
>search code to just before you call quiesce. You get the _same_ effect, without
>an extra procedure call thrown in.
>
Well, like I said I do more than that, but the main reason why I decided on
accepeting this "overhead", was so that I wouldn't have the same segment of code
repeated 7-8 times as in Crafty. I believe it is easier to maintain the
following simple structure:
search() {
check_draw();
check_egtb();
do_extensions_pruning();
probe_hash();
if (depth<=0)
return qsearch();
genmoves();
while (moves) {
makemoves()
searchmoves();
..
}
}
I keep of course a list of moves made, so I can backward futility prune with no
problem, alpha is just -beta and beta is -alpha.
-S.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.