一般用詰み探索: 先手後手の詰みを別々に管理 [詳細]
#include <dualDfpn.h>
Public メソッド | |
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()) |
詰みを発見. | |
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 メソッド | |
Dfpn & | prepareDfpn (Player attack) |
Dfpn & | prepareDfpnSmall (Player attack) |
Private 変数 | |
std::shared_ptr< Shared > | shared |
std::unique_ptr< Local > | local |
一般用詰み探索: 先手後手の詰みを別々に管理
dualDfpn.h の 28 行で定義されています。
osl::checkmate::DualDfpn::DualDfpn | ( | uint64_t | ignored = std::numeric_limits<uint64_t>::max() |
) | [explicit] |
dualDfpn.cc の 264 行で定義されています。
osl::checkmate::DualDfpn::DualDfpn | ( | const DualDfpn & | src | ) |
dualDfpn.cc の 270 行で定義されています。
osl::checkmate::DualDfpn::~DualDfpn | ( | ) |
dualDfpn.cc の 276 行で定義されています。
int osl::checkmate::DualDfpn::distance | ( | Player | attack, | |
const HashKey & | key | |||
) |
dualDfpn.cc の 614 行で定義されています。
参照先 osl::checkmate::Dfpn::distance(), prepareDfpn(), と shared.
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() | |||
) |
dualDfpn.cc の 378 行で定義されています。
参照先 osl::stat::Ratio::add(), osl::checkmate::Dfpn::hasCheckmateMove(), osl::NumEffectState::inCheck(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::checkmate::ProofDisproof::isFinal(), osl::checkmate::ProofDisproof::isLoopDetection(), osl::Move::isNormal(), local, local_table_growth_limit, osl::checkmate::ProofDisproof::LoopDetection(), osl::checkmate::Dfpn::nodeCount(), prepareDfpn(), prepareDfpnSmall(), SCOPED_LOCK, shared, osl::SimpleState::turn(), と osl::WHITE.
参照元 isWinningState().
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() | |||
) |
template bool osl::checkmate::DualDfpn::isLosingState< WHITE > | ( | int | node_limit, | |
const NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move | last_move = Move::INVALID() | |||
) |
dualDfpn.cc の 551 行で定義されています。
参照先 osl::alt(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), local, prepareDfpn(), shared, と osl::SimpleState::turn().
bool osl::checkmate::DualDfpn::isLosingState | ( | int | node_limit, | |
const NumEffectState & | state, | |||
const HashKey & | key, | |||
const PathEncoding & | path, | |||
Move | last_move = Move::INVALID() | |||
) |
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() | |||
) |
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() | |||
) | [inline] |
詰みを発見.
別々のスレッドから呼び出し可能
dualDfpn.h の 51 行で定義されています。
参照先 findProof(), と osl::checkmate::ProofDisproof::isCheckmateSuccess().
size_t osl::checkmate::DualDfpn::mainNodeCount | ( | ) | const |
dualDfpn.cc の 621 行で定義されています。
参照先 shared.
osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpn | ( | Player | attack | ) | [private] |
dualDfpn.cc の 281 行で定義されています。
参照元 distance(), findProof(), isLosingState(), と writeRootHistory().
osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpnSmall | ( | Player | attack | ) | [private] |
void osl::checkmate::DualDfpn::runGC | ( | bool | verbose = false , |
|
size_t | memory_use_ratio_1000 = 0 | |||
) |
dualDfpn.cc の 301 行で定義されています。
参照先 osl::misc::elapsedSeconds(), local_table_growth_limit, osl::OslConfig::memoryUseLimit(), と shared.
void osl::checkmate::DualDfpn::setRootPlayer | ( | Player | root | ) |
dualDfpn.cc の 602 行で定義されています。
参照先 osl::alt(), と shared.
void osl::checkmate::DualDfpn::setVerbose | ( | int | level = 1 |
) |
dualDfpn.cc の 609 行で定義されています。
const osl::checkmate::DfpnTable & osl::checkmate::DualDfpn::table | ( | Player | attack | ) | const |
size_t osl::checkmate::DualDfpn::totalNodeCount | ( | ) | const |
dualDfpn.cc の 631 行で定義されています。
参照先 shared.
void osl::checkmate::DualDfpn::writeRootHistory | ( | const RepetitionCounter & | counter, | |
const MoveStack & | moves, | |||
const SimpleState & | state, | |||
Player | attack | |||
) |
std::unique_ptr<Local> osl::checkmate::DualDfpn::local [private] |
dualDfpn.h の 34 行で定義されています。
参照元 findProof(), isLosingState(), prepareDfpn(), と prepareDfpnSmall().
std::shared_ptr<Shared> osl::checkmate::DualDfpn::shared [private] |
dualDfpn.h の 32 行で定義されています。
参照元 distance(), findProof(), isLosingState(), mainNodeCount(), prepareDfpn(), prepareDfpnSmall(), runGC(), setRootPlayer(), table(), checkmate::DualDfpn::Shared::TableUseLock::TableUseLock(), totalNodeCount(), writeRootHistory(), と checkmate::DualDfpn::Shared::TableUseLock::~TableUseLock().