Struct alcibiades::stock::SimpleSearch
[−]
[src]
pub struct SimpleSearch<T: Ttable, N: SearchNode> { /* fields omitted */ }
Executes depth-first alpha-beta searches with null move pruning and late move reductions.
The alpha-beta algorithm is an enhancement to the minimax search algorithm. It maintains two values, alpha and beta. They represent the minimum score that the maximizing player is assured of (lower bound) and the maximum score that the minimizing player is assured of (upper bound) respectively.
Null move pruning is a method to reduce the search space by trying a "null" or "passing" move, then seeing if the score of the subtree search is still high enough to cause a beta cutoff. Nodes are saved by reducing the depth of the subtree under the null move.
Late move reductions save search space by reducing the search depth for moves that are ordered closer to the end (likely fail-low nodes).
Important note: SimpleSearch
ignores the searchmoves
search parameter. It always analyses all legal moves in the root
position.
Trait Implementations
impl<T, N> Search for SimpleSearch<T, N> where
T: Ttable,
N: SearchNode,
[src]
T: Ttable,
N: SearchNode,
type Ttable = T
The type of transposition table that the implementation works with. Read more
type SearchNode = N
The type of search node that the implementation works with.
type ReportData = ()
The type of auxiliary data that search progress reports carry.
fn spawn(
params: SearchParams<Self::SearchNode>,
tt: Arc<Self::Ttable>,
reports_tx: Sender<SearchReport<Self::ReportData>>,
messages_rx: Receiver<String>
) -> JoinHandle<Value>
params: SearchParams<Self::SearchNode>,
tt: Arc<Self::Ttable>,
reports_tx: Sender<SearchReport<Self::ReportData>>,
messages_rx: Receiver<String>
) -> JoinHandle<Value>
Spawns a new search thread. Read more