一般用詰み探索: 先手後手の詰みを別々に管理 More...
#include <dualDfpn.h>
Classes | |
| struct | Local |
| struct | OraclePool |
| struct | Shared |
Public Member Functions | |
| DualDfpn (uint64_t ignored=std::numeric_limits< uint64_t >::max()) | |
| DualDfpn (const DualDfpn &src) | |
| ~DualDfpn () | |
| void | setRootPlayer (Player) |
| template<Player P> | |
| ProofDisproof | findProof (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move=Move::INVALID()) |
| template<Player P> | |
| bool | isWinningState (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move=Move::INVALID()) |
| 詰みを発見. More... | |
| bool | isWinningState (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move=Move::INVALID()) |
| ProofDisproof | findProof (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move=Move::INVALID()) |
| template<Player P> | |
| bool | isLosingState (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move last_move=Move::INVALID()) |
| bool | isLosingState (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move last_move=Move::INVALID()) |
| void | runGC (bool verbose=false, size_t memory_use_ratio_1000=0) |
| void | setVerbose (int level=1) |
| int | distance (Player attack, const HashKey &key) |
| size_t | mainNodeCount () const |
| size_t | totalNodeCount () const |
| void | writeRootHistory (const RepetitionCounter &counter, const MoveStack &moves, const SimpleState &state, Player attack) |
| const DfpnTable & | table (Player) const |
Private Member Functions | |
| Dfpn & | prepareDfpn (Player attack) |
| Dfpn & | prepareDfpnSmall (Player attack) |
Private Attributes | |
| boost::shared_ptr< Shared > | shared |
| boost::scoped_ptr< Local > | local |
一般用詰み探索: 先手後手の詰みを別々に管理
Definition at line 30 of file dualDfpn.h.
|
explicit |
Definition at line 262 of file dualDfpn.cc.
| osl::checkmate::DualDfpn::DualDfpn | ( | const DualDfpn & | src) |
Definition at line 268 of file dualDfpn.cc.
| osl::checkmate::DualDfpn::~DualDfpn | ( | ) |
Definition at line 274 of file dualDfpn.cc.
| int osl::checkmate::DualDfpn::distance | ( | Player | attack, |
| const HashKey & | key | ||
| ) |
Definition at line 612 of file dualDfpn.cc.
| template ProofDisproof osl::checkmate::DualDfpn::findProof< WHITE > | ( | int | node_limit, |
| const NumEffectState & | state, | ||
| const HashKey & | key, | ||
| const PathEncoding & | path, | ||
| Move & | best_move, | ||
| Move | last_move = Move::INVALID() |
||
| ) |
Definition at line 478 of file dualDfpn.cc.
References osl::BLACK.
Referenced by find_problem(), and isWinningState().
| osl::ProofDisproof osl::checkmate::DualDfpn::findProof | ( | int | node_limit, |
| const NumEffectState & | state, | ||
| const HashKey & | key, | ||
| const PathEncoding & | path, | ||
| Move & | best_move, | ||
| Move | last_move = Move::INVALID() |
||
| ) |
Definition at line 376 of file dualDfpn.cc.
References osl::stat::Ratio::add(), osl::BLACK, count, osl::checkmate::Dfpn::hasCheckmateMove(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::checkmate::ProofDisproof::isFinal(), osl::checkmate::ProofDisproof::isLoopDetection(), osl::Move::isNormal(), osl::PieceStand::isSuperiorOrEqualTo(), local_table_growth_limit, osl::checkmate::ProofDisproof::LoopDetection(), osl::checkmate::Dfpn::nodeCount(), SCOPED_LOCK, and osl::WHITE.
| template bool osl::checkmate::DualDfpn::isLosingState< WHITE > | ( | int | node_limit, |
| const NumEffectState & | state, | ||
| const HashKey & | key, | ||
| const PathEncoding & | path, | ||
| Move | last_move = Move::INVALID() |
||
| ) |
Definition at line 549 of file dualDfpn.cc.
References osl::alt(), count, and osl::checkmate::ProofDisproof::isCheckmateSuccess().
Referenced by checkmate_escape(), convert_from_first(), osl::search::SearchState2Core::isLosingState(), and trim_last().
| bool osl::checkmate::DualDfpn::isLosingState | ( | int | node_limit, |
| const NumEffectState & | state, | ||
| const HashKey & | key, | ||
| const PathEncoding & | path, | ||
| Move | last_move = Move::INVALID() |
||
| ) |
|
inline |
詰みを発見.
別々のスレッドから呼び出し可能
Definition at line 53 of file dualDfpn.h.
References findProof(), and osl::checkmate::ProofDisproof::isCheckmateSuccess().
Referenced by checkmate_attack(), osl::search::SearchState2Core::isWinningState(), osl::annotate::CheckmateForCapture::match(), osl::annotate::CheckmateForEscape::match(), and osl::annotate::ThreatmateIfMorePieces::match().
| bool osl::checkmate::DualDfpn::isWinningState | ( | int | node_limit, |
| const NumEffectState & | state, | ||
| const HashKey & | key, | ||
| const PathEncoding & | path, | ||
| Move & | best_move, | ||
| Move | last_move = Move::INVALID() |
||
| ) |
| size_t osl::checkmate::DualDfpn::mainNodeCount | ( | ) | const |
Definition at line 619 of file dualDfpn.cc.
|
private |
Definition at line 279 of file dualDfpn.cc.
References osl::checkmate::Dfpn::setTable().
|
private |
Definition at line 291 of file dualDfpn.cc.
References osl::checkmate::Dfpn::setTable().
| void osl::checkmate::DualDfpn::runGC | ( | bool | verbose = false, |
| size_t | memory_use_ratio_1000 = 0 |
||
| ) |
Definition at line 299 of file dualDfpn.cc.
References osl::BLACK, local_table_growth_limit, osl::OslConfig::memoryUseLimit(), and osl::WHITE.
Referenced by osl::search::AlphaBeta2< EvalT >::findCheckmateInPV().
| void osl::checkmate::DualDfpn::setRootPlayer | ( | Player | root) |
Definition at line 600 of file dualDfpn.cc.
References osl::alt().
| void osl::checkmate::DualDfpn::setVerbose | ( | int | level = 1) |
Definition at line 607 of file dualDfpn.cc.
| const osl::checkmate::DfpnTable & osl::checkmate::DualDfpn::table | ( | Player | attack) | const |
Definition at line 638 of file dualDfpn.cc.
References osl::checkmate::DfpnTable::table.
Referenced by osl::checkmate::DualDfpn::Local::Local().
| size_t osl::checkmate::DualDfpn::totalNodeCount | ( | ) | const |
Definition at line 629 of file dualDfpn.cc.
Referenced by checkmate_attack(), find_problem(), and qsearch().
| void osl::checkmate::DualDfpn::writeRootHistory | ( | const RepetitionCounter & | counter, |
| const MoveStack & | moves, | ||
| const SimpleState & | state, | ||
| Player | attack | ||
| ) |
Definition at line 575 of file dualDfpn.cc.
References osl::RepetitionCounter::checkCount(), osl::RepetitionCounter::history(), osl::Move::isNormal(), osl::PieceStand::previousStand(), osl::checkmate::Dfpn::setIllegal(), and osl::WHITE.
|
private |
Definition at line 36 of file dualDfpn.h.
|
private |
Definition at line 34 of file dualDfpn.h.
1.8.4