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

Adversarial search engine with Alpha-Beta pruning. More...

#include <Alpha_Beta.H>

Collaboration diagram for Aleph::Alpha_Beta< Domain >:
[legend]

Public Types

using Domain_Type = Domain
 Type of the problem domain.
 
using State = typename Domain::State
 Concrete search state type.
 
using Move = typename Domain::Move
 Move type.
 
using Score = typename Domain::Score
 Score type used for board evaluation.
 
using Result = AdversarialSearchResult< Move, Score >
 Outcome of an Alpha-Beta search execution.
 
using Killer_Table = Killer_Move_Table< Move >
 Two-slot killer heuristic table for this move type.
 
using History_Table = typename adversarial_search_detail::History_Table_Selector< Domain >::Type
 History heuristic table type (sparse or no-op depending on domain).
 

Public Member Functions

 Alpha_Beta (Domain domain, ExplorationPolicy policy=default_policy(), const SearchLimits &limits={})
 Build an Alpha-Beta engine bound to one game domain.
 
const Domain & domain () const noexcept
 Read-only access to the bound game domain.
 
Domain & domain () noexcept
 Mutable access to the bound game domain.
 
const ExplorationPolicy & policy () const noexcept
 Current exploration policy.
 
const SearchLimits & limits () const noexcept
 Current hard limits.
 
void set_policy (const ExplorationPolicy &policy) noexcept
 Replace the exploration policy for future runs.
 
void set_limits (const SearchLimits &limits) noexcept
 Replace the hard limits for future runs.
 
Result search (State initial_state)
 Execute Alpha-Beta from initial_state.
 
template<typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
Result search (State initial_state, Tracer &tracer)
 Execute Alpha-Beta from initial_state while emitting trace events.
 
Result search_with_window (State initial_state, const Score alpha, const Score beta)
 Execute Alpha-Beta with an explicit root window.
 
template<typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
Result search_with_window (State initial_state, const Score alpha, const Score beta, Tracer &tracer)
 Execute Alpha-Beta with an explicit root window and tracing.
 
template<typename Table , typename Keyer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
Result search (State initial_state, Table &table, Keyer keyer)
 Execute Alpha-Beta with a transposition table and explicit keyer.
 
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
and AdversarialSearchTracer< Tracer, Move, Score > Result search (State initial_state, Table &table, Keyer keyer, Tracer &tracer)
 Execute Alpha-Beta with TT/keyer and tracing.
 
template<typename Table , typename Keyer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
Result search_with_window (State initial_state, Table &table, Keyer keyer, const Score alpha, const Score beta)
 Execute Alpha-Beta with TT/keyer and an explicit root window.
 
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
and AdversarialSearchTracer< Tracer, Move, Score > Result search_with_window (State initial_state, Table &table, Keyer keyer, const Score alpha, const Score beta, Tracer &tracer)
 Execute Alpha-Beta with TT/keyer, root window and tracing.
 
template<typename Table , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > Result search (State initial_state, Table &table)
 Execute Alpha-Beta with a transposition table using domain().state_key().
 
template<typename Table , typename Tracer , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > and AdversarialSearchTracer< Tracer, Move, Score > Result search (State initial_state, Table &table, Tracer &tracer)
 Execute Alpha-Beta with domain-provided key and tracing.
 
template<typename Table , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > Result search_with_window (State initial_state, Table &table, const Score alpha, const Score beta)
 Execute Alpha-Beta with domain-provided key and explicit root window.
 
template<typename Table , typename Tracer , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > and AdversarialSearchTracer< Tracer, Move, Score > Result search_with_window (State initial_state, Table &table, const Score alpha, const Score beta, Tracer &tracer)
 Execute Alpha-Beta with domain-provided key, root window and tracing.
 

Static Public Member Functions

static ExplorationPolicy default_policy () noexcept
 Return the default exploration policy for Alpha-Beta.
 

Static Public Attributes

static constexpr bool supports_best_first = false
 Compile-time marker: Alpha_Beta only supports Depth_First strategy.
 

Private Member Functions

bool ordering_active () const noexcept
 
void validate_ordering_configuration () const
 
void clear_ordering_heuristics ()
 
size_t move_history_score (const Move &move) const noexcept
 
void record_cutoff_move (const size_t depth, const size_t remaining, const Move &move)
 
Array< RankedMove< Move, Score > > collect_ordered_moves (State &state, const size_t depth, Result &result)
 
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
Result search_impl (State initial_state, Table &table, Keyer &keyer, Tracer &tracer, const Score alpha, const Score beta)
 
bool expansion_limit_reached (Result &result)
 
template<typename Table , typename Keyer >
void store_transposition (State &state, const size_t remaining, Result &result, Table &table, Keyer &keyer, const adversarial_search_detail::NodeEvaluation< Move, Score > &value, const TranspositionBound bound)
 
template<typename Table , typename Keyer >
bool probe_transposition (State &state, const size_t remaining, Result &result, Table &table, Keyer &keyer, Score &alpha, Score &beta, adversarial_search_detail::NodeEvaluation< Move, Score > &out)
 
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
adversarial_search_detail::NodeEvaluation< Move, Score > search_node (State &state, const size_t depth, Result &result, Table &table, Keyer &keyer, Tracer &tracer, const Score alpha, const Score beta)
 

Static Private Member Functions

static size_t history_bonus (const size_t depth, const size_t remaining) noexcept
 

Private Attributes

Domain domain_
 
ExplorationPolicy policy_
 
SearchLimits limits_
 
bool stop_ = false
 
Killer_Table killer_moves_
 
History_Table history_moves_
 

Detailed Description

template<AdversarialGameDomain Domain>
class Aleph::Alpha_Beta< Domain >

Adversarial search engine with Alpha-Beta pruning.

Alpha-Beta improves upon pure Negamax by pruning branches that are guaranteed to be worse than a previously discovered line of play.

The domain contract and score semantics are identical to Negamax: evaluate(state) must always be expressed from the side-to-move perspective, while apply() / undo() alternate turns through the state.

If policy.move_ordering == MoveOrderingMode::Estimated_Score, the engine materializes each successor batch, scores children by a one-ply estimate, and reorders them before search. Optional killer/history hooks can further bias that ordering when explicitly enabled.

Template Parameters
Domaingame adapter exposing adversarial-search hooks.

Definition at line 70 of file Alpha_Beta.H.

Member Typedef Documentation

◆ Domain_Type

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::Domain_Type = Domain

Type of the problem domain.

Definition at line 74 of file Alpha_Beta.H.

◆ History_Table

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::History_Table = typename adversarial_search_detail::History_Table_Selector<Domain>::Type

History heuristic table type (sparse or no-op depending on domain).

Definition at line 86 of file Alpha_Beta.H.

◆ Killer_Table

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::Killer_Table = Killer_Move_Table<Move>

Two-slot killer heuristic table for this move type.

Definition at line 84 of file Alpha_Beta.H.

◆ Move

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::Move = typename Domain::Move

Move type.

Definition at line 78 of file Alpha_Beta.H.

◆ Result

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::Result = AdversarialSearchResult<Move, Score>

Outcome of an Alpha-Beta search execution.

Definition at line 82 of file Alpha_Beta.H.

◆ Score

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::Score = typename Domain::Score

Score type used for board evaluation.

Definition at line 80 of file Alpha_Beta.H.

◆ State

template<AdversarialGameDomain Domain>
using Aleph::Alpha_Beta< Domain >::State = typename Domain::State

Concrete search state type.

Definition at line 76 of file Alpha_Beta.H.

Constructor & Destructor Documentation

◆ Alpha_Beta()

template<AdversarialGameDomain Domain>
Aleph::Alpha_Beta< Domain >::Alpha_Beta ( Domain  domain,
ExplorationPolicy  policy = default_policy(),
const SearchLimits &  limits = {} 
)
inlineexplicit

Build an Alpha-Beta engine bound to one game domain.

Definition at line 103 of file Alpha_Beta.H.

Member Function Documentation

◆ clear_ordering_heuristics()

template<AdversarialGameDomain Domain>
void Aleph::Alpha_Beta< Domain >::clear_ordering_heuristics ( )
inlineprivate

◆ collect_ordered_moves()

◆ default_policy()

template<AdversarialGameDomain Domain>
static ExplorationPolicy Aleph::Alpha_Beta< Domain >::default_policy ( )
inlinestaticnoexcept

Return the default exploration policy for Alpha-Beta.

Definition at line 97 of file Alpha_Beta.H.

References Aleph::Negamax< Domain >::default_policy().

Referenced by main(), TEST(), and TEST().

◆ domain() [1/2]

template<AdversarialGameDomain Domain>
const Domain & Aleph::Alpha_Beta< Domain >::domain ( ) const
inlinenoexcept

Read-only access to the bound game domain.

Definition at line 112 of file Alpha_Beta.H.

References Aleph::Alpha_Beta< Domain >::domain_.

◆ domain() [2/2]

template<AdversarialGameDomain Domain>
Domain & Aleph::Alpha_Beta< Domain >::domain ( )
inlinenoexcept

Mutable access to the bound game domain.

Definition at line 118 of file Alpha_Beta.H.

References Aleph::Alpha_Beta< Domain >::domain_.

◆ expansion_limit_reached()

template<AdversarialGameDomain Domain>
bool Aleph::Alpha_Beta< Domain >::expansion_limit_reached ( Result &  result)
inlineprivate

◆ history_bonus()

template<AdversarialGameDomain Domain>
static size_t Aleph::Alpha_Beta< Domain >::history_bonus ( const size_t  depth,
const size_t  remaining 
)
inlinestaticprivatenoexcept

Definition at line 351 of file Alpha_Beta.H.

References Aleph::Search_Unlimited.

Referenced by Aleph::Alpha_Beta< Domain >::record_cutoff_move().

◆ limits()

template<AdversarialGameDomain Domain>
const SearchLimits & Aleph::Alpha_Beta< Domain >::limits ( ) const
inlinenoexcept

Current hard limits.

Definition at line 130 of file Alpha_Beta.H.

References Aleph::Alpha_Beta< Domain >::limits_.

Referenced by Aleph::Alpha_Beta< Domain >::set_limits().

◆ move_history_score()

template<AdversarialGameDomain Domain>
size_t Aleph::Alpha_Beta< Domain >::move_history_score ( const Move &  move) const
inlineprivatenoexcept

◆ ordering_active()

◆ policy()

template<AdversarialGameDomain Domain>
const ExplorationPolicy & Aleph::Alpha_Beta< Domain >::policy ( ) const
inlinenoexcept

Current exploration policy.

Definition at line 124 of file Alpha_Beta.H.

References Aleph::Alpha_Beta< Domain >::policy_.

Referenced by Aleph::Alpha_Beta< Domain >::set_policy().

◆ probe_transposition()

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer >
bool Aleph::Alpha_Beta< Domain >::probe_transposition ( State &  state,
const size_t  remaining,
Result &  result,
Table &  table,
Keyer &  keyer,
Score &  alpha,
Score &  beta,
adversarial_search_detail::NodeEvaluation< Move, Score > &  out 
)
inlineprivate

◆ record_cutoff_move()

◆ search() [1/6]

template<AdversarialGameDomain Domain>
Result Aleph::Alpha_Beta< Domain >::search ( State  initial_state)
inline

Execute Alpha-Beta from initial_state.

Parameters
[in]initial_stateRoot position.
Returns
Root score and one principal variation.
Exceptions
std::invalid_argumentif unsupported common-policy values are requested.

Definition at line 155 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search().

Referenced by Aleph::Alpha_Beta< Domain >::search(), Aleph::Alpha_Beta< Domain >::search(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ search() [2/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > Result Aleph::Alpha_Beta< Domain >::search ( State  initial_state,
Table &  table 
)
inline

Execute Alpha-Beta with a transposition table using domain().state_key().

Definition at line 247 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::Alpha_Beta< Domain >::domain_, and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search() [3/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
Result Aleph::Alpha_Beta< Domain >::search ( State  initial_state,
Table &  table,
Keyer  keyer 
)
inline

Execute Alpha-Beta with a transposition table and explicit keyer.

Definition at line 199 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search().

◆ search() [4/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
and AdversarialSearchTracer< Tracer, Move, Score > Result Aleph::Alpha_Beta< Domain >::search ( State  initial_state,
Table &  table,
Keyer  keyer,
Tracer &  tracer 
)
inline

Execute Alpha-Beta with TT/keyer and tracing.

Definition at line 209 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search() [5/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename Tracer , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > and AdversarialSearchTracer< Tracer, Move, Score > Result Aleph::Alpha_Beta< Domain >::search ( State  initial_state,
Table &  table,
Tracer &  tracer 
)
inline

Execute Alpha-Beta with domain-provided key and tracing.

Definition at line 268 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::Alpha_Beta< Domain >::domain_, and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search() [6/6]

template<AdversarialGameDomain Domain>
template<typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
Result Aleph::Alpha_Beta< Domain >::search ( State  initial_state,
Tracer &  tracer 
)
inline

Execute Alpha-Beta from initial_state while emitting trace events.

Definition at line 164 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search_impl()

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
Result Aleph::Alpha_Beta< Domain >::search_impl ( State  initial_state,
Table &  table,
Keyer &  keyer,
Tracer &  tracer,
const Score  alpha,
const Score  beta 
)
inlineprivate

◆ search_node()

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
adversarial_search_detail::NodeEvaluation< Move, Score > Aleph::Alpha_Beta< Domain >::search_node ( State &  state,
const size_t  depth,
Result &  result,
Table &  table,
Keyer &  keyer,
Tracer &  tracer,
const Score  alpha,
const Score  beta 
)
inlineprivate

Definition at line 559 of file Alpha_Beta.H.

References Aleph::Alpha_Beta_Cutoff, Aleph::AdversarialSearchStats::alpha_beta_cutoffs, Aleph::blossom_maximum_cardinality_matching(), Aleph::Alpha_Beta< Domain >::collect_ordered_moves(), Aleph::Depth_Cutoff, Aleph::Alpha_Beta< Domain >::domain_, Aleph::Domain_Prune, Aleph::adversarial_search_detail::emit_trace(), Aleph::Enter_Node, Aleph::adversarial_search_detail::evaluate_leaf(), Aleph::Exact, Aleph::Exit_Node, Aleph::SearchStats::expanded_states, Aleph::Expansion_Limit, Aleph::Alpha_Beta< Domain >::expansion_limit_reached(), Aleph::adversarial_search_detail::first_move_of(), Aleph::SearchStats::generated_successors, Aleph::Alpha_Beta< Domain >::limits_, Aleph::Lower_Bound, Aleph::SearchLimits::max_depth, Aleph::Alpha_Beta< Domain >::ordering_active(), Aleph::adversarial_search_detail::prepend_move(), Aleph::adversarial_search_detail::NodeEvaluation< Move, Score >::principal_variation, Aleph::Alpha_Beta< Domain >::probe_transposition(), Aleph::SearchStats::pruned_by_depth, Aleph::SearchStats::pruned_by_domain, Aleph::Alpha_Beta< Domain >::record_cutoff_move(), Aleph::search_engine_detail::register_visit(), Aleph::adversarial_search_detail::remaining_depth(), Aleph::Alpha_Beta< Domain >::search_node(), Aleph::search_engine_detail::should_prune_state(), Aleph::AdversarialSearchResult< Move, Score >::stats, Aleph::Alpha_Beta< Domain >::stop_, Aleph::Alpha_Beta< Domain >::store_transposition(), Aleph::Terminal_Node, Aleph::SearchStats::terminal_states, Aleph::Transposition_Hit, Aleph::Upper_Bound, and Aleph::adversarial_search_detail::NodeEvaluation< Move, Score >::value.

Referenced by Aleph::Alpha_Beta< Domain >::search_impl(), and Aleph::Alpha_Beta< Domain >::search_node().

◆ search_with_window() [1/6]

template<AdversarialGameDomain Domain>
Result Aleph::Alpha_Beta< Domain >::search_with_window ( State  initial_state,
const Score  alpha,
const Score  beta 
)
inline

◆ search_with_window() [2/6]

template<AdversarialGameDomain Domain>
template<typename Tracer >
requires AdversarialSearchTracer<Tracer, Move, Score>
Result Aleph::Alpha_Beta< Domain >::search_with_window ( State  initial_state,
const Score  alpha,
const Score  beta,
Tracer &  tracer 
)
inline

Execute Alpha-Beta with an explicit root window and tracing.

Definition at line 186 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search_with_window() [3/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > Result Aleph::Alpha_Beta< Domain >::search_with_window ( State  initial_state,
Table &  table,
const Score  alpha,
const Score  beta 
)
inline

Execute Alpha-Beta with domain-provided key and explicit root window.

Definition at line 287 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::Alpha_Beta< Domain >::domain_, and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search_with_window() [4/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename Tracer , typename D_ = Domain>
requires SearchStateKeyProvider<D_>
and AdversarialTranspositionMemo< Table, typename D_::State_Key, Move, Score > and AdversarialSearchTracer< Tracer, Move, Score > Result Aleph::Alpha_Beta< Domain >::search_with_window ( State  initial_state,
Table &  table,
const Score  alpha,
const Score  beta,
Tracer &  tracer 
)
inline

Execute Alpha-Beta with domain-provided key, root window and tracing.

Definition at line 306 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), Aleph::Alpha_Beta< Domain >::domain_, and Aleph::Alpha_Beta< Domain >::search_impl().

◆ search_with_window() [5/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
Result Aleph::Alpha_Beta< Domain >::search_with_window ( State  initial_state,
Table &  table,
Keyer  keyer,
const Score  alpha,
const Score  beta 
)
inline

Execute Alpha-Beta with TT/keyer and an explicit root window.

Definition at line 222 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search_with_window().

◆ search_with_window() [6/6]

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchKeyer<Table, Keyer, State, Move, Score>
and AdversarialSearchTracer< Tracer, Move, Score > Result Aleph::Alpha_Beta< Domain >::search_with_window ( State  initial_state,
Table &  table,
Keyer  keyer,
const Score  alpha,
const Score  beta,
Tracer &  tracer 
)
inline

Execute Alpha-Beta with TT/keyer, root window and tracing.

Definition at line 233 of file Alpha_Beta.H.

References Aleph::blossom_maximum_cardinality_matching(), and Aleph::Alpha_Beta< Domain >::search_impl().

◆ set_limits()

template<AdversarialGameDomain Domain>
void Aleph::Alpha_Beta< Domain >::set_limits ( const SearchLimits &  limits)
inlinenoexcept

Replace the hard limits for future runs.

Definition at line 142 of file Alpha_Beta.H.

References Aleph::Alpha_Beta< Domain >::limits(), and Aleph::Alpha_Beta< Domain >::limits_.

◆ set_policy()

template<AdversarialGameDomain Domain>
void Aleph::Alpha_Beta< Domain >::set_policy ( const ExplorationPolicy &  policy)
inlinenoexcept

Replace the exploration policy for future runs.

Definition at line 136 of file Alpha_Beta.H.

References Aleph::Alpha_Beta< Domain >::policy(), and Aleph::Alpha_Beta< Domain >::policy_.

◆ store_transposition()

template<AdversarialGameDomain Domain>
template<typename Table , typename Keyer >
void Aleph::Alpha_Beta< Domain >::store_transposition ( State &  state,
const size_t  remaining,
Result &  result,
Table &  table,
Keyer &  keyer,
const adversarial_search_detail::NodeEvaluation< Move, Score > &  value,
const TranspositionBound  bound 
)
inlineprivate

◆ validate_ordering_configuration()

Member Data Documentation

◆ domain_

◆ history_moves_

◆ killer_moves_

◆ limits_

◆ policy_

◆ stop_

◆ supports_best_first

template<AdversarialGameDomain Domain>
constexpr bool Aleph::Alpha_Beta< Domain >::supports_best_first = false
staticconstexpr

Compile-time marker: Alpha_Beta only supports Depth_First strategy.

Passing ExplorationPolicy::Strategy::Best_First to this engine raises std::invalid_argument at runtime. Check this constant before constructing a policy to detect the mismatch at compile time.

Definition at line 94 of file Alpha_Beta.H.


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