Public メソッド | Private メソッド | Private 変数

クラス osl::checkmate::DualDfpn

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

#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 DfpnTabletable (Player) const

Private メソッド

DfpnprepareDfpn (Player attack)
DfpnprepareDfpnSmall (Player attack)

Private 変数

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

説明

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

dualDfpn.h28 行で定義されています。


コンストラクタとデストラクタ

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

dualDfpn.cc264 行で定義されています。

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

dualDfpn.cc270 行で定義されています。

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

dualDfpn.cc276 行で定義されています。


関数

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

dualDfpn.cc614 行で定義されています。

参照先 osl::checkmate::Dfpn::distance(), prepareDfpn(), と shared.

template<osl::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() 
)
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<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() 
)
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() 
)
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]

詰みを発見.

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

戻り値:
相手玉が詰み

dualDfpn.h51 行で定義されています。

参照先 findProof(), と osl::checkmate::ProofDisproof::isCheckmateSuccess().

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

dualDfpn.cc621 行で定義されています。

参照先 shared.

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

dualDfpn.cc281 行で定義されています。

参照先 local, と shared.

参照元 distance(), findProof(), isLosingState(), と writeRootHistory().

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

dualDfpn.cc293 行で定義されています。

参照先 local, と shared.

参照元 findProof().

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

dualDfpn.cc602 行で定義されています。

参照先 osl::alt(), と shared.

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

dualDfpn.cc609 行で定義されています。

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

dualDfpn.cc631 行で定義されています。

参照先 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.h34 行で定義されています。

参照元 findProof(), isLosingState(), prepareDfpn(), と prepareDfpnSmall().

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

このクラスの説明は次のファイルから生成されました:
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義