Author: Ed Schröder
Date: 15:12:45 01/23/02
Go up one level in this thread
On January 22, 2002 at 19:03:51, Gerd Isenberg wrote: >Some notes on Static Mate Detection (excuse my bad english) > >In December, when i entered CCT4, i was quite sure to have the >Winboard-Interface ready with the help of some free days around christmas and >new year. But instead i had to solve some problems with the engine itself. Some >bugs in my static mate detection made me crazy. > >Mate detection is part of the kingsafety-routine after or during scanning all >adjacent king squares, contolled by enemy pieces, specially sliders. Before, >during Piece evaluation, sevaral BitBoards got prepared with informations like >priorised square controls for both sides (tabu for kings, semitabu for queens >and rooks), squares, at least controlled twice (but no batteries), squares, >controlled by Sliders, RookMover and so on. Detection of pinned pieces and pawns >was also done. During "adjacent king squares controlled by slide"-scan, few more >BitBoards, indexed by direction (hor, ver, a1h8, h1a8) from one exclusive >sliding attacker, are evaluated to determine possible x-ray interrupts of the >potential mater, giving the king a possible escape square. > >Mate detection is tried in following order: > >1.supported queen mates adjacend to king (during the scan) >2.queen mates with straight distance two >3.mates with sliding pieces, if king can only move/capture in one or no >direction and no intermove (mate in one), or only worthless, mate delaying >intermoves are possible (determing them was the main problem) (mate in N; N>1). >Special care if distance to king is one or two (must be bishop or rook) >4.mates with knights >5.mates with pawns Hey Gerd, good to see you posting here. In the early Rebel's (1981-1984) I had also a mate_evaluation for every checking move, a large piece of nasty tricky code. When I later moved to Q-search I put it into the trash, because Q-search did a faster job. What is left in Rebel are a few special (non-checking) cases, an example: [d]6k1/8/5Q1P/8/8/8/8/6K1 w - - Since white is to move Rebel evaluates this as a (static) mate. It's nice to have because you don't have to go deeper into the tree to discover it. However there are of course a few stings such as white being in check (add a black rook to the position) or an indirect covering of the mate square G7 (add a black bishop to the position) and more of such exceptions. Ed
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.