osl::checkmate::DualDfpn Class Reference

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
osl::checkmate::DualDfpn Class Reference

一般用詰み探索: 先手後手の詰みを別々に管理 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

## Detailed Description

一般用詰み探索: 先手後手の詰みを別々に管理

Definition at line 30 of file dualDfpn.h.

## Constructor & Destructor Documentation

osl::checkmate::DualDfpn::DualDfpn | ( | uint64_t | ignored = `std::numeric_limits<uint64_t>::max()`) |  |
| 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.

## Member Function Documentation

int osl::checkmate::DualDfpn::distance | ( | Player | attack,
|  | const HashKey & | key
| ) |  |

Definition at line 612 of file dualDfpn.cc.

template<Player P>

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<osl::Player P>

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()`
| ) |  |

template<Player P>

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

詰みを発見.

別々のスレッドから呼び出し可能

Returns
  相手玉が詰み

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.

osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpn | ( | Player | attack) |  |
| private

Definition at line 279 of file dualDfpn.cc.

References osl::checkmate::Dfpn::setTable().

osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpnSmall | ( | Player | attack) |  |
| 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.

## Member Data Documentation

boost::scoped_ptr<Local> osl::checkmate::DualDfpn::local
| private

Definition at line 36 of file dualDfpn.h.

boost::shared_ptr<Shared> osl::checkmate::DualDfpn::shared
| private

Definition at line 34 of file dualDfpn.h.

The documentation for this class was generated from the following files:

- dualDfpn.h
- dualDfpn.cc