Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Alpha_Beta.H File Reference

Alpha-Beta pruning over the adversarial-search contract. More...

#include <limits>
#include <utility>
#include <ah-errors.H>
#include <Negamax.H>
Include dependency graph for Alpha_Beta.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Aleph::Alpha_Beta< Domain >
 Adversarial search engine with Alpha-Beta pruning. More...
 

Namespaces

namespace  Aleph
 Main namespace for Aleph-w library functions.
 

Functions

template<AdversarialGameDomain Domain>
auto Aleph::alpha_beta_search (Domain domain, typename Domain::State initial_state, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={})
 Convenience wrapper for one-shot Alpha-Beta search.
 
template<AdversarialGameDomain Domain, typename Tracer >
requires AdversarialSearchTracer<Tracer, typename Domain::Move, typename Domain::Score>
auto Aleph::alpha_beta_search (Domain domain, typename Domain::State initial_state, Tracer &tracer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={})
 Convenience wrapper for one-shot Alpha-Beta search with tracing.
 
template<AdversarialGameDomain Domain, typename Table , typename Keyer >
requires AdversarialSearchKeyer<Table, Keyer, typename Domain::State, typename Domain::Move, typename Domain::Score>
auto Aleph::alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, Keyer keyer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={})
 Convenience wrapper for Alpha-Beta search with transposition table.
 
template<AdversarialGameDomain Domain, typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchKeyer<Table, Keyer, typename Domain::State, typename Domain::Move, typename Domain::Score>
and AdversarialSearchTracer< Tracer, typename Domain::Move, typename Domain::Score > auto Aleph::alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, Keyer keyer, Tracer &tracer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={})
 Convenience wrapper for Alpha-Beta search with TT/keyer and tracing.
 
template<AdversarialGameDomain Domain, typename Table >
requires SearchStateKeyProvider<Domain>
and AdversarialTranspositionMemo< Table, typename Domain::State_Key, typename Domain::Move, typename Domain::Score > auto Aleph::alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={})
 Convenience wrapper for Alpha-Beta search with domain-provided state key.
 
template<AdversarialGameDomain Domain, typename Table , typename Tracer >
requires SearchStateKeyProvider<Domain>
and AdversarialTranspositionMemo< Table, typename Domain::State_Key, typename Domain::Move, typename Domain::Score > and AdversarialSearchTracer< Tracer, typename Domain::Move, typename Domain::Score > auto Aleph::alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, Tracer &tracer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={})
 Convenience wrapper for Alpha-Beta search with domain-provided key and tracing.
 
template<AdversarialGameDomain Domain, typename Tracer >
requires AdversarialSearchTracer<Tracer, typename Domain::Move, typename Domain::Score>
auto Aleph::iterative_deepening_alpha_beta_search (Domain domain, typename Domain::State initial_state, Tracer &tracer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={}, AdversarialIterativeDeepeningOptions< typename Domain::Score > options={})
 Iterative deepening over Alpha-Beta with optional aspiration windows.
 
template<AdversarialGameDomain Domain, typename Table , typename Keyer , typename Tracer >
requires AdversarialSearchKeyer<Table, Keyer, typename Domain::State, typename Domain::Move, typename Domain::Score>
and AdversarialSearchTracer< Tracer, typename Domain::Move, typename Domain::Score > auto Aleph::iterative_deepening_alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, Keyer keyer, Tracer &tracer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={}, AdversarialIterativeDeepeningOptions< typename Domain::Score > options={})
 Iterative deepening over Alpha-Beta with TT/keyer reuse.
 
template<AdversarialGameDomain Domain, typename Table , typename Tracer >
requires SearchStateKeyProvider<Domain>
and AdversarialTranspositionMemo< Table, typename Domain::State_Key, typename Domain::Move, typename Domain::Score > and AdversarialSearchTracer< Tracer, typename Domain::Move, typename Domain::Score > auto Aleph::iterative_deepening_alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, Tracer &tracer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={}, AdversarialIterativeDeepeningOptions< typename Domain::Score > options={})
 Iterative deepening over Alpha-Beta using domain.state_key().
 
template<AdversarialGameDomain Domain>
auto Aleph::iterative_deepening_alpha_beta_search (Domain domain, typename Domain::State initial_state, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={}, AdversarialIterativeDeepeningOptions< typename Domain::Score > options={})
 Iterative deepening over Alpha-Beta without tracing.
 
template<AdversarialGameDomain Domain, typename Table , typename Keyer >
requires AdversarialSearchKeyer<Table, Keyer, typename Domain::State, typename Domain::Move, typename Domain::Score>
auto Aleph::iterative_deepening_alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, Keyer keyer, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={}, AdversarialIterativeDeepeningOptions< typename Domain::Score > options={})
 Iterative deepening over Alpha-Beta with TT/keyer reuse and no tracing.
 
template<AdversarialGameDomain Domain, typename Table >
requires SearchStateKeyProvider<Domain>
and AdversarialTranspositionMemo< Table, typename Domain::State_Key, typename Domain::Move, typename Domain::Score > auto Aleph::iterative_deepening_alpha_beta_search (Domain domain, typename Domain::State initial_state, Table &table, ExplorationPolicy policy=Alpha_Beta< Domain >::default_policy(), SearchLimits limits={}, AdversarialIterativeDeepeningOptions< typename Domain::Score > options={})
 Iterative deepening over Alpha-Beta using domain.state_key() and no tracing.
 

Detailed Description

Alpha-Beta pruning over the adversarial-search contract.

This module keeps the same game adapter required by Negamax.H but adds Alpha-Beta cutoffs on top of the same depth-first recurrence and result vocabulary. Through Aleph::ExplorationPolicy it also supports opt-in move ordering by shallow score estimate plus lightweight killer/history hooks.

Author
Leandro Rabindranath León

Definition in file Alpha_Beta.H.