Next: , Previous: Board data structure, Up: Chess engine   [Contents][Index]

9.6.3 Search algorithm

The main search algorithm is a classical PVS with iterative deepening. Search enhancements such as a transposition table and null-move pruning are also used (see below).

A few details in the PVS implementation are not-so-standard and are there to supposedly enhance the stability of the search (like reducing the consequences of search inconsistencies). For example the re-search window after a scout fail high of score "value" (with value > alpha) is [alpha,beta], not [value,beta]. As another example, I only allow null move when the static evaluation fails high (i.e. eval() >= beta). Whether these features improve the strength of the engine is an open question.

The main search function is full_search() in search_full.cpp