Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::Killer_Move_Table< Move, true > Class Template Reference

Killer heuristic table for equality-comparable moves. More...

#include <search_move_ordering.H>

Collaboration diagram for Aleph::Killer_Move_Table< Move, true >:
[legend]

Public Member Functions

void clear () noexcept
 Remove all recorded killer moves.
 
bool is_killer (const size_t depth, const Move &move) const noexcept
 Return true if move is in a killer slot for depth.
 
void record (const size_t depth, const Move &move)
 Record a move that caused a cutoff at depth.
 

Static Public Attributes

static constexpr bool supported = true
 Marker indicating that this table tracks moves.
 

Private Member Functions

void ensure_depth (const size_t required)
 

Private Attributes

Array< std::optional< Move > > primary_
 
Array< std::optional< Move > > secondary_
 

Detailed Description

template<typename Move>
class Aleph::Killer_Move_Table< Move, true >

Killer heuristic table for equality-comparable moves.

Definition at line 139 of file search_move_ordering.H.

Member Function Documentation

◆ clear()

template<typename Move >
void Aleph::Killer_Move_Table< Move, true >::clear ( )
inlinenoexcept

Remove all recorded killer moves.

Definition at line 146 of file search_move_ordering.H.

◆ ensure_depth()

template<typename Move >
void Aleph::Killer_Move_Table< Move, true >::ensure_depth ( const size_t  required)
inlineprivate

Definition at line 179 of file search_move_ordering.H.

References Aleph::divide_and_conquer_partition_dp().

◆ is_killer()

template<typename Move >
bool Aleph::Killer_Move_Table< Move, true >::is_killer ( const size_t  depth,
const Move &  move 
) const
inlinenoexcept

Return true if move is in a killer slot for depth.

Parameters
depthPath depth from root.
moveCandidate move to check.
Returns
true if move was found in either slot for depth.

Definition at line 157 of file search_move_ordering.H.

References Aleph::and, and Aleph::divide_and_conquer_partition_dp().

◆ record()

template<typename Move >
void Aleph::Killer_Move_Table< Move, true >::record ( const size_t  depth,
const Move &  move 
)
inline

Record a move that caused a cutoff at depth.

Parameters
depthPath depth from root.
moveCutoff-producing move.

Definition at line 168 of file search_move_ordering.H.

References Aleph::and.

Member Data Documentation

◆ primary_

template<typename Move >
Array<std::optional<Move> > Aleph::Killer_Move_Table< Move, true >::primary_
private

Definition at line 188 of file search_move_ordering.H.

◆ secondary_

template<typename Move >
Array<std::optional<Move> > Aleph::Killer_Move_Table< Move, true >::secondary_
private

Definition at line 189 of file search_move_ordering.H.

◆ supported

template<typename Move >
constexpr bool Aleph::Killer_Move_Table< Move, true >::supported = true
staticconstexpr

Marker indicating that this table tracks moves.

Definition at line 143 of file search_move_ordering.H.


The documentation for this class was generated from the following file: