Theory

Because of the high remaining search depth, only a giant margin of material disadvantage ranging from at least Queen to Queen+Pawn allows for the sufficiently riskless triggering of the razor. We achieve additional safety by neither razoring nodes with  <= 3 opposing pieces nor if the immediately predecessing move caused an extension of search depth. Otherwise, our conservative version of razoring reduces the remaining search depth of pre-pre-frontier nodes by 1 ply if they fulfill the razor condition. Then it applies extended futility pruning to the freshly razored nodes. Thence, the overall effect of limited razoring at pre-pre-frontier nodes is to cut off quiet moves and non-checking captures with insufficient material gains and a remaining depth of 3 plies while reducing the search depth of all other moves by 1 ply if the side-to-move suffers from a severe disadvantage.

% latex2html id marker 13101
\fbox{{{\parbox{359pt}{\smallskip\smallskip
\center...
...}val\,\ldots\,queen\underline{~}val+pawn\underline{~}val\}
\end{displaymath}}}}}

The integration of both extended futility pruning and limited razoring with an existing alpha-beta searcher proves to be quite simple. Figure 1.1 provides the skeleton of a correspondingly selective search function that outlines the necessary additions. Because of its verbose ANSI-C style and the numerous embedded comments, the search skeleton is quite self-explanatory. It assumes all not explicitly declared identifiers to be suitably defined and initialized. Furthermore, the following two general observations are noteworthy.


  
Figure 1.1: Search with Extended Futility Pruning and Limited Razoring.
\begin{figure}
{\begin{center}\fbox{{{\parbox{359pt}{\smallskip\smallskip\small
...
...nd{raggedright}\smallskip\smallskip}}}}\end{center}}\vspace*{-10pt}
\end{figure}



Created by Ernst A. Heinz, Thu Dec 16 23:28:11 EST 1999