Public Member Functions | Private Member Functions | Private Attributes | List of all members
osl::checkmate::DualDfpn Class Reference

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

#include <dualDfpn.h>

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 DfpnTabletable (Player) const
 
template<osl::Player P>
osl::ProofDisproof findProof (int node_limit, const NumEffectState &state, const HashKey &key, const PathEncoding &path, Move &best_move, Move last_move)
 

Private Member Functions

DfpnprepareDfpn (Player attack)
 
DfpnprepareDfpnSmall (Player attack)
 

Private Attributes

std::shared_ptr< Shared > shared
 
std::unique_ptr< Local > local
 

Detailed Description

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

Definition at line 28 of file dualDfpn.h.

Constructor & Destructor Documentation

§ DualDfpn() [1/2]

osl::checkmate::DualDfpn::DualDfpn ( uint64_t  ignored = std::numeric_limits<uint64_t>::max())
explicit

Definition at line 264 of file dualDfpn.cc.

Referenced by checkmate::DualDfpn::Local::~Local().

§ DualDfpn() [2/2]

osl::checkmate::DualDfpn::DualDfpn ( const DualDfpn src)

Definition at line 270 of file dualDfpn.cc.

References ~DualDfpn().

§ ~DualDfpn()

osl::checkmate::DualDfpn::~DualDfpn ( )

Definition at line 276 of file dualDfpn.cc.

References prepareDfpn().

Referenced by DualDfpn().

Member Function Documentation

§ distance()

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

Definition at line 614 of file dualDfpn.cc.

References osl::checkmate::Dfpn::distance(), mainNodeCount(), prepareDfpn(), and shared.

Referenced by isWinningState(), and setVerbose().

§ findProof() [1/3]

template<Player P>
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() 
)

Referenced by findProof(), isWinningState(), and runGC().

§ findProof() [2/3]

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 480 of file dualDfpn.cc.

References osl::BLACK, isWinningState(), and osl::SimpleState::turn().

§ findProof() [3/3]

template<osl::Player P>
osl::ProofDisproof osl::checkmate::DualDfpn::findProof ( int  node_limit,
const NumEffectState state,
const HashKey key,
const PathEncoding path,
Move best_move,
Move  last_move 
)

§ isLosingState() [1/2]

template<osl::Player P>
bool osl::checkmate::DualDfpn::isLosingState ( int  node_limit,
const NumEffectState state,
const HashKey key,
const PathEncoding path,
Move  last_move = Move::INVALID() 
)

§ isLosingState() [2/2]

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 566 of file dualDfpn.cc.

References osl::BLACK, osl::SimpleState::turn(), and writeRootHistory().

§ isWinningState() [1/2]

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 51 of file dualDfpn.h.

References distance(), findProof(), osl::Move::INVALID(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), isLosingState(), mainNodeCount(), prepareDfpn(), prepareDfpnSmall(), runGC(), setVerbose(), table(), totalNodeCount(), and writeRootHistory().

Referenced by findProof().

§ isWinningState() [2/2]

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

§ mainNodeCount()

size_t osl::checkmate::DualDfpn::mainNodeCount ( ) const

Definition at line 621 of file dualDfpn.cc.

References shared, and totalNodeCount().

Referenced by distance(), and isWinningState().

§ prepareDfpn()

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

§ prepareDfpnSmall()

osl::checkmate::Dfpn & osl::checkmate::DualDfpn::prepareDfpnSmall ( Player  attack)
private

Definition at line 293 of file dualDfpn.cc.

References local, runGC(), and shared.

Referenced by findProof(), isWinningState(), and prepareDfpn().

§ runGC()

void osl::checkmate::DualDfpn::runGC ( bool  verbose = false,
size_t  memory_use_ratio_1000 = 0 
)

§ setRootPlayer()

void osl::checkmate::DualDfpn::setRootPlayer ( Player  root)

Definition at line 602 of file dualDfpn.cc.

References osl::alt(), setVerbose(), and shared.

Referenced by writeRootHistory().

§ setVerbose()

void osl::checkmate::DualDfpn::setVerbose ( int  level = 1)

Definition at line 609 of file dualDfpn.cc.

References distance().

Referenced by isWinningState(), and setRootPlayer().

§ table()

const osl::checkmate::DfpnTable & osl::checkmate::DualDfpn::table ( Player  attack) const

Definition at line 640 of file dualDfpn.cc.

References shared.

Referenced by isWinningState(), and totalNodeCount().

§ totalNodeCount()

size_t osl::checkmate::DualDfpn::totalNodeCount ( ) const

Definition at line 631 of file dualDfpn.cc.

References shared, and table().

Referenced by isWinningState(), and mainNodeCount().

§ writeRootHistory()

void osl::checkmate::DualDfpn::writeRootHistory ( const RepetitionCounter counter,
const MoveStack moves,
const SimpleState state,
Player  attack 
)

Member Data Documentation

§ local

std::unique_ptr<Local> osl::checkmate::DualDfpn::local
private

Definition at line 34 of file dualDfpn.h.

Referenced by findProof(), isLosingState(), isWinningState(), prepareDfpn(), and prepareDfpnSmall().

§ shared

std::shared_ptr<Shared> osl::checkmate::DualDfpn::shared
private

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