#include <dualCheckmateSearcher.h>
Public 型 | |
typedef Table | table_t |
typedef CheckmateSearcher < table_t, HEstimator, CostEstimator > | checkmate_t |
typedef OracleProver< table_t > | prover_t |
typedef OracleDisprover< table_t > | disprover_t |
Public メソッド | |
DualCheckmateSearcher (size_t total_node_limit=CHECKMATE_DEFAULT_TOTAL_NODE_LIMIT) | |
virtual | ~DualCheckmateSearcher () |
void | setVerbose (bool verbose=true) |
template<Player P> | |
bool | isWinningStateByOracle (NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, unsigned short &oracle_age, int node_limit=0) |
template<Player P> | |
bool | isNotWinningStateByOracle (NumEffectState &state, const HashKey &key, const PathEncoding &path, unsigned short &oracle_age) |
template<Player P> | |
bool | isWinningStateByOracleLastMove (NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move, unsigned short &oracle_age, int node_limit=0) |
bool | isWinningStateByOracleLastMove (NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move, unsigned short &age) |
template<Player P> | |
bool | isWinningState (int node_limit, NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, AttackOracleAges &oracle_age, Move last_move=Move::INVALID()) |
bool | isWinningState (int node_limit, NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, AttackOracleAges &oracle_age, Move last_move=Move::INVALID()) |
bool | isWinningState (int node_limit, NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move=Move::INVALID()) |
template<Player P> | |
bool | isLosingState (int node_limit, NumEffectState &state, const HashKey &key, const PathEncoding &path, Move last_move=Move::INVALID()) |
bool | isLosingState (int node_limit, NumEffectState &state, const HashKey &, const PathEncoding &path, Move last_move=Move::INVALID()) |
const checkmate_t & | searcher (Player P) const |
const table_t & | getTable (Player P) const |
table_t & | getTable (Player P) |
size_t | mainNodeCount () const |
size_t | totalNodeCount () const |
void | writeRootHistory (const RepetitionCounter &counter, const MoveStack &moves, const SimpleState &state, Player attack) |
void | undoWriteRootHistory (const RepetitionCounter &counter, const MoveStack &moves, const SimpleState &state, Player attack) |
Private メソッド | |
CheckmatorWithOracle & | get (Player attacker) |
const CheckmatorWithOracle & | get (Player attacker) const |
SharedOracles & | oracles (Player attacker) |
template<Player P> | |
bool | isWinningStateByOracle (int node_limit, NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, ProofOracleAttack< P > oracle) |
template<Player P> | |
bool | isNotWinningStateByOracle (NumEffectState &state, const HashKey &key, const PathEncoding &path, const DisproofOracleAttack< P > &oracle) |
Private 変数 | |
CheckmatorWithOracle | black |
CheckmatorWithOracle | white |
size_t | simulation_node_count |
unsigned int | proof_by_oracle |
unsigned int | unknown_by_oracle |
unsigned int | disproof_by_oracle |
unsigned int | proof_by_search |
unsigned int | unknown_by_search |
unsigned int | disproof_by_search |
Static Private 変数 | |
static const int | disproof_oracle_record_limit = 500 |
構成 | |
struct | CheckmatorWithOracle |
CAVEAT: ԡϡƤobjectμ̿·ɬפ. ͭ SharedOracles ơ֥ؤΥݥޤि.
dualCheckmateSearcher.h の 59 行で定義されています。
typedef Table osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::table_t |
dualCheckmateSearcher.h の 62 行で定義されています。
typedef CheckmateSearcher<table_t, HEstimator, CostEstimator> osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::checkmate_t |
dualCheckmateSearcher.h の 63 行で定義されています。
typedef OracleProver<table_t> osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::prover_t |
dualCheckmateSearcher.h の 64 行で定義されています。
typedef OracleDisprover<table_t> osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disprover_t |
dualCheckmateSearcher.h の 65 行で定義されています。
osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::DualCheckmateSearcher | ( | size_t | total_node_limit = CHECKMATE_DEFAULT_TOTAL_NODE_LIMIT |
) | [inline, explicit] |
total_node_count | instanceͳɤΥΡɿ. isWinningState ʤɤŬڤ node_limit ͿƤ̾ 礭ͤɤ. |
dualCheckmateSearcher.tcc の 51 行で定義されています。
osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher | ( | ) | [inline, virtual] |
dualCheckmateSearcher.tcc の 60 行で定義されています。
参照先 osl::BLACK, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_by_oracle, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_by_search, osl::checkmate::OraclePool::keySize(), osl::checkmate::SharedOracles::oracles, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::oracles(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_oracle, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_search, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::searcher(), osl::checkmate::SharedOracles::showStatus(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_oracle, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_search, osl::checkmate::CheckmateSearcher< Table, HEstimator, CostEstimator >::verbose(), と osl::WHITE.
CheckmatorWithOracle& osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::get | ( | Player | attacker | ) | [inline, private] |
dualCheckmateSearcher.h の 86 行で定義されています。
const CheckmatorWithOracle& osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::get | ( | Player | attacker | ) | const [inline, private] |
dualCheckmateSearcher.h の 90 行で定義されています。
SharedOracles& osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::oracles | ( | Player | attacker | ) | [inline, private] |
dualCheckmateSearcher.h の 94 行で定義されています。
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState(), osl::checkmate::DualCheckmateSearcher< >::isNotWinningStateByOracle(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracleLastMove(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher().
void osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::setVerbose | ( | bool | verbose = true |
) | [inline] |
dualCheckmateSearcher.h の 112 行で定義されています。
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle | ( | int | node_limit, | |
NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
ProofOracleAttack< P > | oracle | |||
) | [inline, private] |
dualCheckmateSearcher.tcc の 82 行で定義されています。
参照先 osl::checkmate::ProofOracleAttack< Attacker >::isValid(), osl::checkmate::OracleProverLight< Attacker >::nodeCount(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_oracle, osl::checkmate::OracleProverLight< Attacker >::proofWin(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::simulation_node_count, と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_oracle.
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracleLastMove().
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isNotWinningStateByOracle | ( | NumEffectState & | state, | |
const HashKey & | key, | |||
const PathEncoding & | path, | |||
const DisproofOracleAttack< P > & | oracle | |||
) | [inline, private] |
dualCheckmateSearcher.tcc の 118 行で定義されています。
参照先 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_by_oracle, osl::checkmate::DisproofOracleAttack< Attacker >::isValid(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_oracle.
参照元 osl::checkmate::DualCheckmateSearcher< >::isNotWinningStateByOracle().
template bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle< WHITE > | ( | NumEffectState & | state, | |
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
unsigned short & | oracle_age, | |||
int | node_limit = 0 | |||
) | [inline] |
dualCheckmateSearcher.tcc の 138 行で定義されています。
参照先 osl::checkmate::OraclePool::findProofOracle(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle(), osl::checkmate::SharedOracles::oracles, と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::oracles().
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isNotWinningStateByOracle | ( | NumEffectState & | state, | |
const HashKey & | key, | |||
const PathEncoding & | path, | |||
unsigned short & | oracle_age | |||
) | [inline] |
template bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracleLastMove< WHITE > | ( | NumEffectState & | state, | |
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
Move | last_move, | |||
unsigned short & | oracle_age, | |||
int | node_limit = 0 | |||
) | [inline] |
oracle_age | Ʊoracle2ٻʤ |
dualCheckmateSearcher.tcc の 167 行で定義されています。
参照先 osl::checkmate::OraclePoolLastMove::findOracle(), osl::Move::isDrop(), osl::Move::isNormal(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::oracles(), と osl::checkmate::SharedOracles::oracles_last_move.
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracleLastMove | ( | NumEffectState & | state, | |
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
Move | last_move, | |||
unsigned short & | age | |||
) | [inline] |
dualCheckmateSearcher.h の 160 行で定義されています。
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState | ( | int | node_limit, | |
NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
AttackOracleAges & | oracle_age, | |||
Move | last_move = Move::INVALID() | |||
) | [inline] |
oracle_age | :˻oracleο:returnޤǤ˻oracleο. (oracleϽˤʤǤΤΤ) |
dualCheckmateSearcher.tcc の 189 行で定義されています。
参照先 osl::checkmate::OraclePool::addDisproofOracle(), osl::checkmate::OraclePoolLastMove::addOracle(), osl::checkmate::OraclePool::addProofOracle(), osl::checkmate::CheckHashRecord::bestMove, osl::checkmate::AttackOracleAges::disproof, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_by_search, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_oracle_record_limit, osl::checkmate::CheckmateSearcher< Table, HEstimator, CostEstimator >::getTable(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::Move::isDrop(), osl::checkmate::ProofDisproof::isFinal(), osl::Move::isNormal(), osl::checkmate::CheckMoveCore::move, osl::checkmate::SharedOracles::oracles, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::oracles(), osl::checkmate::SharedOracles::oracles_last_move, osl::checkmate::AttackOracleAges::proof, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_search, osl::checkmate::AttackOracleAges::proof_last_move, osl::checkmate::CheckHashRecord::proofDisproof(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::searcher(), osl::checkmate::CheckmateSearcher< Table, HEstimator, CostEstimator >::totalNodeCount(), osl::PathEncoding::turn(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_search.
参照元 checkmate_attack(), osl::search::SearchState2Core::isWinningState(), osl::search::SearchStateCore::isWinningState(), osl::checkmate::DualCheckmateSearcher< >::isWinningState(), osl::brinkmate::BrinkmateState::testThreatmateState(), と osl::brinkmate::BrinkmateState::testWinningState().
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState | ( | int | node_limit, | |
NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
AttackOracleAges & | oracle_age, | |||
Move | last_move = Move::INVALID() | |||
) |
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState | ( | int | node_limit, | |
NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move & | best_move, | |||
Move | last_move = Move::INVALID() | |||
) | [inline] |
dualCheckmateSearcher.h の 185 行で定義されています。
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState | ( | int | node_limit, | |
NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move | last_move = Move::INVALID() | |||
) | [inline] |
P | ||
oracle_age | :˻oracleο:returnޤǤ˻oracleο. (oracleϽˤʤǤΤΤ) |
dualCheckmateSearcher.tcc の 309 行で定義されています。
参照先 osl::checkmate::OraclePool::addProofOracle(), osl::checkmate::OraclePool::findProofOracle(), osl::checkmate::CheckmateSearcher< Table, HEstimator, CostEstimator >::getTable(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::checkmate::ProofOracleDefense< Attacker >::isValid(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::oracles(), osl::checkmate::SharedOracles::oracles_after_attack, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_oracle, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_search, osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::searcher(), osl::checkmate::CheckmateSearcher< Table, HEstimator, CostEstimator >::totalNodeCount(), osl::PathEncoding::turn(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_oracle, と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_search.
参照元 checkmate_escape(), osl::search::SearchState2Core::isLosingState(), と osl::search::SearchStateCore::isLosingState().
bool osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState | ( | int | node_limit, | |
NumEffectState & | state, | |||
const HashKey & | , | |||
const PathEncoding & | path, | |||
Move | last_move = Move::INVALID() | |||
) |
const checkmate_t& osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::searcher | ( | Player | P | ) | const [inline] |
dualCheckmateSearcher.h の 207 行で定義されています。
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState(), osl::checkmate::DualCheckmateSearcher< >::mainNodeCount(), osl::checkmate::DualCheckmateSearcher< >::searcher(), osl::checkmate::DualCheckmateSearcher< >::setVerbose(), osl::checkmate::DualCheckmateSearcher< >::totalNodeCount(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher().
const table_t& osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::getTable | ( | Player | P | ) | const [inline] |
dualCheckmateSearcher.h の 208 行で定義されています。
参照元 osl::brinkmate::BrinkmateState::isEffectiveDefense(), osl::brinkmate::BrinkmateState::testThreatmateState(), osl::brinkmate::BrinkmateState::testWinningState(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::writeRootHistory().
table_t& osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::getTable | ( | Player | P | ) | [inline] |
dualCheckmateSearcher.h の 209 行で定義されています。
size_t osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::mainNodeCount | ( | ) | const [inline] |
dualCheckmateSearcher.h の 210 行で定義されています。
size_t osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::totalNodeCount | ( | ) | const [inline] |
dualCheckmateSearcher.h の 215 行で定義されています。
参照元 osl::search::AlphaBeta2::alphaBetaSearchRoot(), osl::search::MTDF< Eval, MoveGenerator, Table, Recorder, Probabilities >::computeBestMoveOfPlayer(), qsearch(), osl::search::AlphaBeta2Tree::quiesceStable(), osl::search::AlphaBeta2Tree::testThreatmate(), osl::checkmate::DualCheckmateSearcher< >::totalNodeCount(), osl::search::AlphaBeta2Tree::tryCheckmate(), と osl::search::AlphaBeta2Tree::tryCheckmateAgain().
void osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::writeRootHistory | ( | const RepetitionCounter & | counter, | |
const MoveStack & | moves, | |||
const SimpleState & | state, | |||
Player | attack | |||
) | [inline] |
void osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::undoWriteRootHistory | ( | const RepetitionCounter & | counter, | |
const MoveStack & | moves, | |||
const SimpleState & | state, | |||
Player | attack | |||
) |
CheckmatorWithOracle osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::black [private] |
CheckmatorWithOracle osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::white [private] |
const int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_oracle_record_limit = 500 [static, private] |
size_t osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::simulation_node_count [private] |
unsigned int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_oracle [private] |
dualCheckmateSearcher.h の 101 行で定義されています。
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher().
unsigned int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_oracle [private] |
dualCheckmateSearcher.h の 101 行で定義されています。
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isNotWinningStateByOracle(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningStateByOracle(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher().
unsigned int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_by_oracle [private] |
unsigned int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::proof_by_search [private] |
dualCheckmateSearcher.h の 102 行で定義されています。
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher().
unsigned int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::unknown_by_search [private] |
dualCheckmateSearcher.h の 102 行で定義されています。
参照元 osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isLosingState(), osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::isWinningState(), と osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::~DualCheckmateSearcher().
unsigned int osl::checkmate::DualCheckmateSearcher< Table, HEstimator, CostEstimator >::disproof_by_search [private] |