Author: Georg v. Zimmermann
Date: 12:59:10 12/05/03
Go up one level in this thread
On December 05, 2003 at 15:53:19, Russell Reagan wrote: >On December 05, 2003 at 15:20:58, Dieter Buerssner wrote: > >>I cannot answer your concrete question. But a similar problem can be an >>Incheck-routine. To detect, if you are in check, two approaches can be: a) Loop >>over the opponent pieces, and see, if one checks my K; b) "Generate" (reverse) >>moves for the king square, assuming it can be any sort of piece, and see, if it >>will hit an opponent piece of the right kind. With a full board, b) can be >>faster, while with an empty board a) can be faster. I change between those two >>alternatives depending on material on board (also, at root I do some more >>heuristics, like seeing if the K has a "good" pawn shield in front of him - >>which will favor b). For my engine, this was a bit faster in general, than just >>using one method all the time. The engine decides about the method to use for >>Incheck() after each root move (by setting a function pointer). > >I'm sure you know this, but it is worth mentioning that you can save a lot of >the work most of the time by using an 0x88-style attack detection. A lot of >times you can tell right away that the previous move could not possibly have >been illegal by comparing the offset of the king square with the 'from' square >of the move and using that in your attack lookup table. Even then, if you have >to loop, you only have to loop in one direction. This is for checking that a >pseudo-legal move was not illegal after making the move. I guess you could do >similar things for an in-check routine. Like if you know that the king wasn't in >check, then you can use the move squares to determine if it is possible that he >came into check and avoid looping altogether. > >Also, using a function pointer also adds some extra overhead (I think as much as >a mispredicted branch, or maybe a little more). But you said it is faster >overall so I guess it is worth it. I am pretty sure he does all that.
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.