一般用詰み探索: 先手後手の詰みを別々に管理 [詳細]
#include <dualDfpn.h>
構成 | |
| struct | Local |
| struct | OraclePool |
| struct | Shared |
Public メソッド | |
| DualDfpn (uint64_t ignored=std::numeric_limits< uint64_t >::max()) | |
| DualDfpn (const DualDfpn &src) | |
| ~DualDfpn () | |
| void | setRootPlayer (Player) |
| 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()) |
| 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 &key, const PathEncoding &path, Move last_move=Move::INVALID()) |
| void | runGC () |
| 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 変数 | |
| boost::shared_ptr< Shared > | shared |
| boost::scoped_ptr< Local > | local |
一般用詰み探索: 先手後手の詰みを別々に管理
dualDfpn.h の 29 行で定義されています。
| osl::checkmate::DualDfpn::DualDfpn | ( | uint64_t | ignored = std::numeric_limits<uint64_t>::max() |
) | [explicit] |
dualDfpn.cc の 234 行で定義されています。
| osl::checkmate::DualDfpn::DualDfpn | ( | const DualDfpn & | src | ) |
dualDfpn.cc の 240 行で定義されています。
| osl::checkmate::DualDfpn::~DualDfpn | ( | ) |
dualDfpn.cc の 246 行で定義されています。
| int osl::checkmate::DualDfpn::distance | ( | Player | attack, | |
| const HashKey & | key | |||
| ) |
dualDfpn.cc の 539 行で定義されています。
| bool osl::checkmate::DualDfpn::isLosingState | ( | int | node_limit, | |
| NumEffectState & | state, | |||
| const HashKey & | key, | |||
| const PathEncoding & | path, | |||
| Move | last_move = Move::INVALID() | |||
| ) |
| bool osl::checkmate::DualDfpn::isLosingState | ( | int | node_limit, | |
| NumEffectState & | state, | |||
| const HashKey & | key, | |||
| const PathEncoding & | path, | |||
| Move | last_move = Move::INVALID() | |||
| ) | [inline] |
dualDfpn.cc の 478 行で定義されています。
参照先 osl::alt(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), local, prepareDfpn(), と shared.
| 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.cc の 308 行で定義されています。
参照先 osl::stat::Ratio::add(), osl::BLACK, osl::checkmate::Dfpn::hasCheckmateMove(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::checkmate::ProofDisproof::isFinal(), osl::checkmate::ProofDisproof::isLoopDetection(), osl::Move::isNormal(), osl::PieceStand::isSuperiorOrEqualTo(), local, local_table_growth_limit, osl::checkmate::Dfpn::nodeCount(), prepareDfpn(), prepareDfpnSmall(), SCOPED_LOCK, shared, と osl::WHITE.
| size_t osl::checkmate::DualDfpn::mainNodeCount | ( | ) | const |
dualDfpn.cc の 545 行で定義されています。
参照先 SCOPED_LOCK, と shared.
| osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpn | ( | Player | attack | ) | [private] |
dualDfpn.cc の 251 行で定義されています。
参照元 distance(), isLosingState(), isWinningState(), と writeRootHistory().
| osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpnSmall | ( | Player | attack | ) | [private] |
| void osl::checkmate::DualDfpn::runGC | ( | ) |
dualDfpn.cc の 271 行で定義されています。
参照先 osl::BLACK, local_table_growth_limit, SCOPED_LOCK, shared, と osl::WHITE.
| void osl::checkmate::DualDfpn::setRootPlayer | ( | Player | root | ) |
dualDfpn.cc の 527 行で定義されています。
参照先 osl::alt(), と shared.
| void osl::checkmate::DualDfpn::setVerbose | ( | int | level = 1 |
) |
dualDfpn.cc の 534 行で定義されています。
| const osl::checkmate::DfpnTable & osl::checkmate::DualDfpn::table | ( | Player | attack | ) | const |
| size_t osl::checkmate::DualDfpn::totalNodeCount | ( | ) | const |
dualDfpn.cc の 555 行で定義されています。
参照先 SCOPED_LOCK, と shared.
| void osl::checkmate::DualDfpn::writeRootHistory | ( | const RepetitionCounter & | counter, | |
| const MoveStack & | moves, | |||
| const SimpleState & | state, | |||
| Player | attack | |||
| ) |
boost::scoped_ptr<Local> osl::checkmate::DualDfpn::local [private] |
dualDfpn.h の 35 行で定義されています。
参照元 isLosingState(), isWinningState(), prepareDfpn(), と prepareDfpnSmall().
boost::shared_ptr<Shared> osl::checkmate::DualDfpn::shared [private] |
dualDfpn.h の 33 行で定義されています。
参照元 isLosingState(), isWinningState(), mainNodeCount(), prepareDfpn(), prepareDfpnSmall(), runGC(), setRootPlayer(), table(), と totalNodeCount().
1.6.3