Function inanis::engine::search::null_move_pruning_can_be_applied
source · fn null_move_pruning_can_be_applied<const PV: bool>(
context: &mut SearchContext,
depth: i8,
beta: i16,
allow_null_move: bool,
friendly_king_checked: bool
) -> bool
Expand description
The main idea of the null move pruning is to prune all nodes, for which the search gives us score above beta even if we skip a move (which allows the opposite color to make two of them in a row). This is based on the null move observation, which says that there’s always a better alternative than doing nothing (except zugzwang).
Conditions:
- only non-PV nodes
- depth >= NULL_MOVE_PRUNING_MIN_DEPTH
- game phase is not indicating endgame
- beta score is not a mate score
- friendly king is not checked
- this is not the second null move in a row