#include <ntesukiSearcher.h>
構成 | |
class | AttackHelper |
class | CallSimulationAttack |
class | CallSimulationDefense |
class | CallSimulationDefenseDisproof |
class | DefenseHelper |
Public 型 | |
typedef NumEffectState | State |
Public メソッド | |
NtesukiSearcher (State &state, NtesukiMoveGenerator *mg, unsigned int table_limit, volatile int *stop_flag, bool verbose, int maxPass=NtesukiRecord::SIZE, NtesukiRecord::IWScheme iwscheme=NtesukiRecord::pn_iw, NtesukiRecord::PSScheme psscheme=NtesukiRecord::no_ps, NtesukiRecord::ISScheme isscheme=NtesukiRecord::no_is, int tsumero_cost=0, int tsumero_estimate=0, double gc_ratio=0.33) | |
~NtesukiSearcher () | |
template<Player T> | |
int | search () |
int | searchSlow (Player attacker, int rnl=160000) |
NtesukiTable & | getTable () |
int | getNodeCount () const |
bool | exceedReadNodeLimit () const |
Static Public 変数 | |
static bool | delay_non_pass = false |
探索のふるまいを制御する変数. | |
static bool | ptt_invalid_defense = false |
static bool | delay_interpose = false |
static bool | delay_nopromote = false |
static bool | delay_non_attack = false |
static bool | read_attack_only = false |
static bool | ptt_non_attack = false |
static bool | ptt_siblings_fail = false |
static bool | ptt_siblings_success = false |
static bool | ptt_uncle = false |
static bool | ptt_aunt = false |
static unsigned int | dynamic_widening_width = 0 |
static const int | NtesukiNotFound = -1 |
static const int | ReadLimitReached = -2 |
static const int | TableLimitReached = -3 |
Private 型 | |
typedef std::vector< Move > | moves_t |
ルートから現在探索中のノードまでの move. | |
typedef std::vector < NtesukiRecord * > | nodes_t |
ルートから現在探索中のノードまでの局面. | |
Private メソッド | |
template<Player T> | |
NtesukiResult | attack (NtesukiRecord *record, const NtesukiRecord *oracle_attack, const NtesukiRecord *oracle_defense, unsigned int proofLimit, unsigned int disproofLimit, int pass_left, const Move last_move) |
攻撃側の処理 | |
template<Player T> | |
void | attackWithOrder (NtesukiRecord *record, const NtesukiRecord *oracle_attack, const NtesukiRecord *oracle_defense, unsigned int proofLimit, unsigned int disproofLimit, int pass_left, const Move last_move) |
template<Player T> | |
NtesukiMove * | selectMoveAttack (NtesukiRecord *record, unsigned int &best_proof, unsigned int &sum_disproof, unsigned int &second_proof, unsigned int &best_disproof, unsigned int &step_cost, NtesukiMoveList &moves, const int pass_left) |
template<Player T> | |
NtesukiResult | defense (NtesukiRecord *record, const NtesukiRecord *oracle_attack, const NtesukiRecord *oracle_defense, unsigned int proofLimit, unsigned int disproofLimit, int pass_left, const Move last_move) |
防御に関する計算 | |
template<Player T> | |
void | defenseWithPlayer (NtesukiRecord *record, const NtesukiRecord *oracle_attack, const NtesukiRecord *oracle_defense, unsigned int proofLimit, unsigned int disproofLimit, int pass_left, const Move last_move) |
template<Player T> | |
NtesukiMove * | selectMoveDefense (NtesukiRecord *record, unsigned int &best_disproof, unsigned int &sum_proof, unsigned int &second_disproof, unsigned int &best_proof, unsigned int &step_cost, NtesukiMoveList &moves, const int pass_left, const Move last_move) |
template<Player T> | |
void | simulateSiblingsSuccess (NtesukiRecord *record, NtesukiRecord *record_best, int pass_left, unsigned int &success_count, unsigned int &total_count) |
受け手番で,ある手が Success だとわかった場合, 他の手も同様に Success にならないか Simulaition で調べる. | |
template<Player T> | |
void | simulateSiblingsFail (NtesukiRecord *record, NtesukiRecord *record_best, int pass_left, unsigned int &success_count, unsigned int &total_count) |
攻め手番で,ある手が Fail だとわかった場合, 他の手も同様に Fail にならないか Simulaition で調べる. | |
template<Player T> | |
void | handleNonAttack (NtesukiRecord *record, int pass_left) |
攻めになっていない手を除く. | |
template<Player T> | |
void | handleTonshi (NtesukiRecord *record, int pass_left, const Move last_move) |
頓死がないか調べる. | |
template<Player T> | |
void | handleInterpose (NtesukiRecord *record, int pass_left) |
無駄合候補が本当に無駄合が調べる. | |
Private 変数 | |
State & | state |
NtesukiMoveGenerator * | mg |
手生成器. | |
NtesukiTable | table |
トランスポジションテーブル. | |
NtesukiSimulationSearcher | simulator |
シミュレーション探索器. | |
unsigned int | node_count |
現在までに何ノード読んだか. | |
unsigned int | read_node_limit |
最大何ノードまで読むか. | |
bool | verbose |
経過をどこまで表示するか. | |
volatile int * | stop_flag |
探索を途中で強制的に終了させるための flag. | |
PathEncoding | path |
ルートから現在探索中のノードまでの path の hash値. | |
moves_t | moves_played |
nodes_t | nodes_played |
unsigned int | max_pass |
λオーダ. | |
NtesukiRecord::IWScheme | iwscheme |
Iterative widening の scheme. | |
NtesukiRecord::PSScheme | psscheme |
Player selection の scheme. | |
NtesukiRecord::ISScheme | isscheme |
Inversion searching の scheme. | |
int | tsumero_cost |
詰めろな手に関する cost | |
int | tsumero_estimate |
詰めろな手に関する証明数の予測値 | |
double | gc_ratio |
GC の際にテーブル をどこまで小さくするか. | |
unsigned int | blockByAttackBack |
unsigned int | blockByPass |
unsigned int | attack_node_count |
unsigned int | attack_node_under_attack_count |
unsigned int | attack_node_moves_count |
unsigned int | defense_node_count |
unsigned int | defense_node_under_attack_count |
unsigned int | defense_node_moves_count |
unsigned int | pass_count |
unsigned int | pass_success_count |
unsigned int | pass_attack_count |
unsigned int | pass_attack_success_count |
unsigned int | sibling_defense_count |
unsigned int | sibling_defense_success_count |
unsigned int | sibling_attack_count |
unsigned int | sibling_attack_success_count |
unsigned int | isshogi_defense_count |
unsigned int | isshogi_defense_success_count |
unsigned int | isshogi_attack_count |
unsigned int | isshogi_attack_success_count |
unsigned int | immediate_win |
unsigned int | immediate_lose |
unsigned int | attack_back_count |
unsigned int | proof_without_inversion_count |
unsigned int | proof_AND_count |
unsigned int | disproof_by_inversion_count |
Static Private 変数 | |
static const unsigned int | INITIAL_PROOF_LIMIT |
static const unsigned int | INITIAL_DISPROOF_LIMIT |
ntesukiSearcher.h の 20 行で定義されています。
typedef std::vector<Move> osl::ntesuki::NtesukiSearcher::moves_t [private] |
ルートから現在探索中のノードまでの move.
ntesukiSearcher.h の 54 行で定義されています。
typedef std::vector<NtesukiRecord *> osl::ntesuki::NtesukiSearcher::nodes_t [private] |
ルートから現在探索中のノードまでの局面.
ntesukiSearcher.h の 58 行で定義されています。
typedef NumEffectState osl::ntesuki::NtesukiSearcher::State |
ntesukiSearcher.h の 24 行で定義されています。
osl::ntesuki::NtesukiSearcher::NtesukiSearcher | ( | State & | state, | |
NtesukiMoveGenerator * | mg, | |||
unsigned int | table_limit, | |||
volatile int * | stop_flag, | |||
bool | verbose, | |||
int | maxPass = NtesukiRecord::SIZE , |
|||
NtesukiRecord::IWScheme | iwscheme = NtesukiRecord::pn_iw , |
|||
NtesukiRecord::PSScheme | psscheme = NtesukiRecord::no_ps , |
|||
NtesukiRecord::ISScheme | isscheme = NtesukiRecord::no_is , |
|||
int | tsumero_cost = 0 , |
|||
int | tsumero_estimate = 0 , |
|||
double | gc_ratio = 0.33 | |||
) |
ntesukiSearcher.cc の 44 行で定義されています。
参照先 osl::ntesuki::NtesukiRecord::confluence_count, delay_interpose, delay_non_attack, delay_non_pass, delay_nopromote, osl::ntesuki::NtesukiRecord::fixed_search_depth, osl::ntesuki::NtesukiRecord::inversion_cost, osl::ntesuki::NtesukiRecord::mg, ptt_invalid_defense, ptt_non_attack, ptt_siblings_fail, ptt_siblings_success, ptt_uncle, read_attack_only, osl::ntesuki::NtesukiRecord::SIZE, osl::ntesuki::NtesukiRecord::split_count, osl::ntesuki::NtesukiRecord::state, table, osl::ntesuki::NtesukiRecord::table, と osl::ntesuki::NtesukiRecord::use_dominance.
osl::ntesuki::NtesukiSearcher::~NtesukiSearcher | ( | ) |
ntesukiSearcher.cc の 140 行で定義されています。
参照先 attack_back_count, attack_node_count, attack_node_moves_count, attack_node_under_attack_count, osl::ntesuki::NtesukiRecord::confluence_count, defense_node_count, defense_node_moves_count, defense_node_under_attack_count, disproof_by_inversion_count, immediate_lose, immediate_win, isshogi_attack_count, isshogi_attack_success_count, isshogi_defense_count, isshogi_defense_success_count, node_count, pass_count, pass_success_count, proof_AND_count, proof_without_inversion_count, read_node_limit, sibling_attack_count, sibling_attack_success_count, sibling_defense_count, sibling_defense_success_count, osl::ntesuki::NtesukiTable::size(), osl::ntesuki::NtesukiRecord::split_count, table, と verbose.
NtesukiResult osl::ntesuki::NtesukiSearcher::attack | ( | NtesukiRecord * | record, | |
const NtesukiRecord * | oracle_attack, | |||
const NtesukiRecord * | oracle_defense, | |||
unsigned int | proofLimit, | |||
unsigned int | disproofLimit, | |||
int | pass_left, | |||
const Move | last_move | |||
) | [inline, private] |
攻撃側の処理
ntesukiSearcher.tcc の 392 行で定義されています。
参照先 CATCH_DFPN, osl::D, osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), immediate_win, osl::ntesuki::NtesukiMove::isInvalid(), iwscheme, osl::eval::min(), osl::ntesuki::NtesukiRecord::no_iw, ntesuki_assert, path, osl::ntesuki::NtesukiRecord::pn_iw, RETURN, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setUpNode(), state, osl::ntesuki::NtesukiRecord::strict_iw, table, と TRY_DFPN.
void osl::ntesuki::NtesukiSearcher::attackWithOrder | ( | NtesukiRecord * | record, | |
const NtesukiRecord * | oracle_attack, | |||
const NtesukiRecord * | oracle_defense, | |||
unsigned int | proofLimit, | |||
unsigned int | disproofLimit, | |||
int | pass_left, | |||
const Move | last_move | |||
) | [inline, private] |
ntesukiSearcher.tcc の 526 行で定義されています。
参照先 addWithSaturation(), osl::ntesuki::NtesukiTable::allocateWithMove(), attack_node_count, attack_node_moves_count, attack_node_under_attack_count, CATCH_DFPN, osl::D, osl::ntesuki::NtesukiRecord::generateMoves(), osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::INVALID(), osl::ntesuki::NtesukiMove::isCheck(), osl::ntesuki::NtesukiMove::isCheckmateSuccess(), osl::ntesuki::NtesukiMove::isInvalid(), osl::eval::min(), moves, moves_played, node_count, ntesuki_assert, path, ptt_aunt, ptt_siblings_fail, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::rzone_move_generation, osl::ntesuki::NtesukiMove::setCheckmateFail(), osl::ntesuki::NtesukiMove::setCheckmateSuccess(), osl::ntesuki::NtesukiMove::setPawnDropCheckmate(), osl::ntesuki::NtesukiRecord::setResult(), sibling_attack_count, sibling_attack_success_count, state, stop_flag, table, TableLimitReached, と TRY_DFPN.
NtesukiResult osl::ntesuki::NtesukiSearcher::defense | ( | NtesukiRecord * | record, | |
const NtesukiRecord * | oracle_attack, | |||
const NtesukiRecord * | oracle_defense, | |||
unsigned int | proofLimit, | |||
unsigned int | disproofLimit, | |||
int | pass_left, | |||
const Move | last_move | |||
) | [inline, private] |
防御に関する計算
ntesukiSearcher.tcc の 1215 行で定義されています。
参照先 CATCH_DFPN, osl::D, osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiRecord::getValueAnd(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), immediate_lose, osl::ntesuki::NtesukiMove::isInvalid(), iwscheme, node_count, ntesuki_assert, path, psscheme, RETURN, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setUpNode(), state, table, と TRY_DFPN.
void osl::ntesuki::NtesukiSearcher::defenseWithPlayer | ( | NtesukiRecord * | record, | |
const NtesukiRecord * | oracle_attack, | |||
const NtesukiRecord * | oracle_defense, | |||
unsigned int | proofLimit, | |||
unsigned int | disproofLimit, | |||
int | pass_left, | |||
const Move | last_move | |||
) | [inline, private] |
ntesukiSearcher.tcc の 1322 行で定義されています。
参照先 addWithSaturation(), osl::ntesuki::NtesukiTable::allocateWithMove(), CATCH_DFPN, defense_node_count, defense_node_moves_count, defense_node_under_attack_count, delay_non_pass, disproof_by_inversion_count, osl::ntesuki::NtesukiRecord::do_oracle_attack, osl::ntesuki::NtesukiRecord::do_oracle_aunt, osl::ntesuki::NtesukiTable::findWithMove(), osl::ntesuki::NtesukiRecord::generateMoves(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::INVALID(), osl::ntesuki::NtesukiMove::isCheck(), osl::ntesuki::NtesukiMove::isCheckmateFail(), osl::ntesuki::NtesukiRecord::isLoopWithPath(), osl::ntesuki::NtesukiMove::isPass(), isshogi_attack_count, isshogi_attack_success_count, osl::ntesuki::NtesukiRecord::isVisited(), iwscheme, osl::eval::min(), moves, moves_played, ntesuki_assert, osl::Move::PASS(), osl::ntesuki::NtesukiRecord::pass_count, pass_count, pass_success_count, path, ptt_invalid_defense, ptt_siblings_success, ptt_uncle, RETURN_ON_STOP, osl::ntesuki::NtesukiMove::setBySimulation(), osl::ntesuki::NtesukiMove::setCheckmateFail(), osl::ntesuki::NtesukiMove::setCheckmateSuccess(), osl::ntesuki::NtesukiRecord::setLoopWithPath(), osl::ntesuki::NtesukiRecord::setNtesuki(), osl::ntesuki::NtesukiRecord::setResult(), sibling_defense_count, sibling_defense_success_count, simulator, state, stop_flag, table, TableLimitReached, と TRY_DFPN.
bool osl::ntesuki::NtesukiSearcher::exceedReadNodeLimit | ( | ) | const [inline] |
ntesukiSearcher.h の 272 行で定義されています。
int osl::ntesuki::NtesukiSearcher::getNodeCount | ( | ) | const [inline] |
ntesukiSearcher.h の 271 行で定義されています。
NtesukiTable & osl::ntesuki::NtesukiSearcher::getTable | ( | ) |
ntesukiSearcher.cc の 188 行で定義されています。
参照先 table.
void osl::ntesuki::NtesukiSearcher::handleInterpose | ( | NtesukiRecord * | record, | |
int | pass_left | |||
) | [inline, private] |
無駄合候補が本当に無駄合が調べる.
ntesukiSearcher.tcc の 2153 行で定義されています。
参照先 osl::ntesuki::NtesukiTable::allocateWithMove(), CATCH_DFPN, osl::ntesuki::NtesukiTable::findWithMove(), osl::ntesuki::NtesukiMoveGenerator::generate(), osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiRecord::getValue(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::isInvalid(), mg, moves, ntesuki_assert, path, RETURN_ON_STOP, simulator, state, stop_flag, table, TableLimitReached, と TRY_DFPN.
void osl::ntesuki::NtesukiSearcher::handleNonAttack | ( | NtesukiRecord * | record, | |
int | pass_left | |||
) | [inline, private] |
攻めになっていない手を除く.
ntesukiSearcher.tcc の 1133 行で定義されています。
参照先 osl::ntesuki::NtesukiTable::allocateWithMove(), CATCH_DFPN, osl::ntesuki::NtesukiTable::findWithMove(), osl::ntesuki::NtesukiMoveGenerator::generate(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiRecord::isVisited(), mg, moves, ntesuki_assert, path, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setLoopWithPath(), simulator, state, stop_flag, table, TableLimitReached, と TRY_DFPN.
void osl::ntesuki::NtesukiSearcher::handleTonshi | ( | NtesukiRecord * | record, | |
int | pass_left, | |||
const Move | last_move | |||
) | [inline, private] |
頓死がないか調べる.
ntesukiSearcher.tcc の 2038 行で定義されています。
参照先 attack_back_count, CATCH_DFPN, osl::D, osl::ntesuki::NtesukiRecord::distance, osl::ntesuki::NtesukiRecord::getValueWithPath(), INITIAL_PROOF_LIMIT, osl::ntesuki::NtesukiMove::INVALID(), node_count, path, ratio, READ_ATTACK_BACK_LIMIT, read_node_limit, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setResult(), と TRY_DFPN.
template int osl::ntesuki::NtesukiSearcher::search< WHITE > | ( | ) | [inline] |
ntesukiSearcher.tcc の 2224 行で定義されています。
参照先 osl::ntesuki::NtesukiTable::allocateRoot(), osl::D, osl::ntesuki::NtesukiRecord::getValue(), INITIAL_DISPROOF_LIMIT, INITIAL_PROOF_LIMIT, osl::Move::INVALID(), max_pass, node_count, ntesuki_assert, NtesukiNotFound, osl::ntesuki::NtesukiRecord::pass_count, read_node_limit, ReadLimitReached, result, state, stop_flag, table, verbose, と osl::WHITE.
int osl::ntesuki::NtesukiSearcher::searchSlow | ( | Player | attacker, | |
int | rnl = 160000 | |||
) | [inline] |
ntesukiSearcher.h の 261 行で定義されています。
参照先 osl::BLACK.
osl::ntesuki::NtesukiMove * osl::ntesuki::NtesukiSearcher::selectMoveAttack | ( | NtesukiRecord * | record, | |
unsigned int & | best_proof, | |||
unsigned int & | sum_disproof, | |||
unsigned int & | second_proof, | |||
unsigned int & | best_disproof, | |||
unsigned int & | step_cost, | |||
NtesukiMoveList & | moves, | |||
const int | pass_left | |||
) | [inline, private] |
ntesukiSearcher.tcc の 801 行で定義されています。
参照先 addWithSaturation(), CATCH_DFPN, delay_non_attack, delay_nopromote, osl::ntesuki::NtesukiRecord::distance, dynamic_widening_width, osl::ntesuki::NtesukiTable::findWithMove(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiMove::getOrder(), osl::ntesuki::NtesukiRecord::getValueAnd(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::h_a_disproof, osl::ntesuki::NtesukiMove::h_a_proof, osl::ntesuki::NtesukiMove::INVALID(), osl::ntesuki::NtesukiRecord::is_split, osl::ntesuki::NtesukiMove::isCheck(), osl::ntesuki::NtesukiMove::isCheckmateFail(), osl::ntesuki::NtesukiMove::isLameLong(), osl::ntesuki::NtesukiMove::isNoPromote(), osl::ntesuki::NtesukiMove::isPass(), osl::ntesuki::NtesukiMove::isPawnDropCheckmate(), osl::ntesuki::NtesukiRecord::isVisited(), iwscheme, osl::eval::max(), osl::ntesuki::NtesukiRecord::max_for_split, osl::eval::min(), ntesuki_assert, path, psscheme, ptt_non_attack, read_attack_only, osl::ntesuki::NtesukiRecord::readNonAttack(), RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::rzone_move_generation, osl::ntesuki::NtesukiMove::setCheckmateFail(), osl::ntesuki::NtesukiMove::setCheckmateSuccess(), osl::ntesuki::NtesukiRecord::setLoopWithPath(), osl::ntesuki::NtesukiMove::setPawnDropCheckmate(), osl::ntesuki::NtesukiRecord::setReadNonAttack(), osl::ntesuki::NtesukiRecord::setResult(), osl::ntesuki::NtesukiRecord::setUseOld(), sorter(), table, TRY_DFPN, tsumero_cost, tsumero_estimate, と osl::ntesuki::NtesukiRecord::useOld().
osl::ntesuki::NtesukiMove * osl::ntesuki::NtesukiSearcher::selectMoveDefense | ( | NtesukiRecord * | record, | |
unsigned int & | best_disproof, | |||
unsigned int & | sum_proof, | |||
unsigned int & | second_disproof, | |||
unsigned int & | best_proof, | |||
unsigned int & | step_cost, | |||
NtesukiMoveList & | moves, | |||
const int | pass_left, | |||
const Move | last_move | |||
) | [inline, private] |
ntesukiSearcher.tcc の 1676 行で定義されています。
参照先 addWithSaturation(), CATCH_DFPN, delay_interpose, osl::ntesuki::NtesukiRecord::delay_is, delay_non_pass, disproof_by_inversion_count, osl::ntesuki::NtesukiRecord::distance, dynamic_widening_width, osl::ntesuki::NtesukiTable::findWithMove(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::h_d_disproof, osl::ntesuki::NtesukiMove::h_d_proof, osl::ntesuki::NtesukiMove::INVALID(), osl::ntesuki::NtesukiRecord::is_split, osl::ntesuki::NtesukiMove::isCheck(), osl::ntesuki::NtesukiMove::isCheckmateFail(), osl::ntesuki::NtesukiMove::isCheckmateSuccess(), osl::ntesuki::NtesukiMove::isInterpose(), osl::ntesuki::NtesukiMove::isLameLong(), osl::ntesuki::NtesukiRecord::isLoopWithPath(), osl::ntesuki::NtesukiMove::isPass(), isscheme, osl::ntesuki::NtesukiRecord::isVisited(), iwscheme, osl::eval::max(), osl::ntesuki::NtesukiRecord::max_for_split, osl::eval::min(), osl::ntesuki::NtesukiRecord::no_is, osl::ntesuki::NtesukiRecord::normal_is, ntesuki_assert, osl::Move::PASS(), pass_count, pass_success_count, path, proof_without_inversion_count, ptt_invalid_defense, ptt_siblings_success, osl::ntesuki::NtesukiRecord::readCheckDefense(), osl::ntesuki::NtesukiRecord::readInterpose(), RETURN_ON_STOP, osl::ntesuki::NtesukiMove::setCheckmateFail(), osl::ntesuki::NtesukiMove::setCheckmateSuccess(), osl::ntesuki::NtesukiRecord::setLoopWithPath(), osl::ntesuki::NtesukiRecord::setNtesuki(), osl::ntesuki::NtesukiRecord::setReadInterpose(), osl::ntesuki::NtesukiRecord::setResult(), osl::ntesuki::NtesukiRecord::setUseOld(), sibling_defense_count, sibling_defense_success_count, sorter(), state, table, osl::ntesuki::NtesukiRecord::tonshi_is, TRY_DFPN, と osl::ntesuki::NtesukiRecord::useOld().
void osl::ntesuki::NtesukiSearcher::simulateSiblingsFail | ( | NtesukiRecord * | record, | |
NtesukiRecord * | record_best, | |||
int | pass_left, | |||
unsigned int & | success_count, | |||
unsigned int & | total_count | |||
) | [inline, private] |
攻め手番で,ある手が Fail だとわかった場合, 他の手も同様に Fail にならないか Simulaition で調べる.
ntesukiSearcher.tcc の 302 行で定義されています。
参照先 osl::ntesuki::NtesukiTable::allocateWithMove(), CATCH_DFPN, osl::ntesuki::NtesukiMoveGenerator::generate(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::isCheckmateFail(), osl::ntesuki::NtesukiRecord::isVisited(), mg, moves, ntesuki_assert, path, RETURN_ON_STOP, osl::ntesuki::NtesukiMove::setBySimulation(), osl::ntesuki::NtesukiMove::setCheckmateFail(), simulator, state, stop_flag, table, TableLimitReached, と TRY_DFPN.
void osl::ntesuki::NtesukiSearcher::simulateSiblingsSuccess | ( | NtesukiRecord * | record, | |
NtesukiRecord * | record_best, | |||
int | pass_left, | |||
unsigned int & | success_count, | |||
unsigned int & | total_count | |||
) | [inline, private] |
受け手番で,ある手が Success だとわかった場合, 他の手も同様に Success にならないか Simulaition で調べる.
現在 $^n$ 探索中の場合には,原則 $^(n-1)$ move の場合には調べない.
e.g. 必至探索中には王手は調べない.
ntesukiSearcher.tcc の 2090 行で定義されています。
参照先 osl::ntesuki::NtesukiTable::allocateWithMove(), CATCH_DFPN, osl::ntesuki::NtesukiMoveGenerator::generate(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValue(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiRecord::isVisited(), mg, moves, ntesuki_assert, path, RETURN_ON_STOP, osl::ntesuki::NtesukiMove::setBySimulation(), osl::ntesuki::NtesukiMove::setCheckmateSuccess(), simulator, state, stop_flag, table, TableLimitReached, と TRY_DFPN.
unsigned int osl::ntesuki::NtesukiSearcher::attack_back_count [private] |
ntesukiSearcher.h の 125 行で定義されています。
参照元 handleTonshi(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::attack_node_count [private] |
ntesukiSearcher.h の 112 行で定義されています。
参照元 attackWithOrder(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::attack_node_moves_count [private] |
ntesukiSearcher.h の 114 行で定義されています。
参照元 attackWithOrder(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::attack_node_under_attack_count [private] |
ntesukiSearcher.h の 113 行で定義されています。
参照元 attackWithOrder(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::blockByAttackBack [private] |
ntesukiSearcher.h の 107 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::blockByPass [private] |
ntesukiSearcher.h の 111 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::defense_node_count [private] |
ntesukiSearcher.h の 115 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::defense_node_moves_count [private] |
ntesukiSearcher.h の 117 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::defense_node_under_attack_count [private] |
ntesukiSearcher.h の 116 行で定義されています。
bool osl::ntesuki::NtesukiSearcher::delay_interpose = false [static] |
ntesukiSearcher.h の 72 行で定義されています。
参照元 NtesukiSearcher(), と selectMoveDefense().
bool osl::ntesuki::NtesukiSearcher::delay_non_attack = false [static] |
ntesukiSearcher.h の 74 行で定義されています。
参照元 NtesukiSearcher(), と selectMoveAttack().
bool osl::ntesuki::NtesukiSearcher::delay_non_pass = false [static] |
探索のふるまいを制御する変数.
ntesukiSearcher.h の 69 行で定義されています。
参照元 defenseWithPlayer(), NtesukiSearcher(), と selectMoveDefense().
bool osl::ntesuki::NtesukiSearcher::delay_nopromote = false [static] |
ntesukiSearcher.h の 73 行で定義されています。
参照元 NtesukiSearcher(), と selectMoveAttack().
unsigned int osl::ntesuki::NtesukiSearcher::disproof_by_inversion_count [private] |
ntesukiSearcher.h の 126 行で定義されています。
参照元 defenseWithPlayer(), selectMoveDefense(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::dynamic_widening_width = 0 [static] |
ntesukiSearcher.h の 84 行で定義されています。
double osl::ntesuki::NtesukiSearcher::gc_ratio [private] |
GC の際にテーブル をどこまで小さくするか.
ntesukiSearcher.h の 101 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::immediate_lose [private] |
ntesukiSearcher.h の 124 行で定義されています。
参照元 defense(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::immediate_win [private] |
ntesukiSearcher.h の 124 行で定義されています。
参照元 attack(), と ~NtesukiSearcher().
const unsigned int osl::ntesuki::NtesukiSearcher::INITIAL_DISPROOF_LIMIT [static, private] |
const unsigned int osl::ntesuki::NtesukiSearcher::INITIAL_PROOF_LIMIT [static, private] |
ProofDisproof::PROOF_LIMIT / 4
ntesukiSearcher.h の 133 行で定義されています。
参照元 handleTonshi(), と search().
unsigned int osl::ntesuki::NtesukiSearcher::isshogi_attack_count [private] |
ntesukiSearcher.h の 123 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::isshogi_attack_success_count [private] |
ntesukiSearcher.h の 123 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::isshogi_defense_count [private] |
ntesukiSearcher.h の 122 行で定義されています。
参照元 ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::isshogi_defense_success_count [private] |
ntesukiSearcher.h の 122 行で定義されています。
参照元 ~NtesukiSearcher().
Iterative widening の scheme.
ntesukiSearcher.h の 88 行で定義されています。
参照元 attack(), defense(), defenseWithPlayer(), selectMoveAttack(), と selectMoveDefense().
unsigned int osl::ntesuki::NtesukiSearcher::max_pass [private] |
手生成器.
ntesukiSearcher.h の 30 行で定義されています。
参照元 handleInterpose(), handleNonAttack(), simulateSiblingsFail(), と simulateSiblingsSuccess().
ntesukiSearcher.h の 55 行で定義されています。
参照元 attackWithOrder(), と defenseWithPlayer().
unsigned int osl::ntesuki::NtesukiSearcher::node_count [private] |
現在までに何ノード読んだか.
ntesukiSearcher.h の 39 行で定義されています。
参照元 attackWithOrder(), defense(), handleTonshi(), search(), と ~NtesukiSearcher().
ntesukiSearcher.h の 59 行で定義されています。
const int osl::ntesuki::NtesukiSearcher::NtesukiNotFound = -1 [static] |
ntesukiSearcher.h の 129 行で定義されています。
参照元 search().
unsigned int osl::ntesuki::NtesukiSearcher::pass_attack_count [private] |
ntesukiSearcher.h の 119 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::pass_attack_success_count [private] |
ntesukiSearcher.h の 119 行で定義されています。
unsigned int osl::ntesuki::NtesukiSearcher::pass_count [private] |
ntesukiSearcher.h の 118 行で定義されています。
参照元 defenseWithPlayer(), selectMoveDefense(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::pass_success_count [private] |
ntesukiSearcher.h の 118 行で定義されています。
参照元 defenseWithPlayer(), selectMoveDefense(), と ~NtesukiSearcher().
ルートから現在探索中のノードまでの path の hash値.
ntesukiSearcher.h の 51 行で定義されています。
参照元 attack(), attackWithOrder(), defense(), defenseWithPlayer(), handleInterpose(), handleNonAttack(), handleTonshi(), selectMoveAttack(), selectMoveDefense(), simulateSiblingsFail(), と simulateSiblingsSuccess().
unsigned int osl::ntesuki::NtesukiSearcher::proof_AND_count [private] |
ntesukiSearcher.h の 126 行で定義されています。
参照元 ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::proof_without_inversion_count [private] |
ntesukiSearcher.h の 126 行で定義されています。
bool osl::ntesuki::NtesukiSearcher::ptt_aunt = false [static] |
ntesukiSearcher.h の 82 行で定義されています。
参照元 attackWithOrder().
bool osl::ntesuki::NtesukiSearcher::ptt_invalid_defense = false [static] |
ntesukiSearcher.h の 70 行で定義されています。
参照元 defenseWithPlayer(), NtesukiSearcher(), と selectMoveDefense().
bool osl::ntesuki::NtesukiSearcher::ptt_non_attack = false [static] |
ntesukiSearcher.h の 76 行で定義されています。
参照元 NtesukiSearcher(), と selectMoveAttack().
bool osl::ntesuki::NtesukiSearcher::ptt_siblings_fail = false [static] |
ntesukiSearcher.h の 78 行で定義されています。
参照元 attackWithOrder(), と NtesukiSearcher().
bool osl::ntesuki::NtesukiSearcher::ptt_siblings_success = false [static] |
ntesukiSearcher.h の 79 行で定義されています。
参照元 defenseWithPlayer(), NtesukiSearcher(), と selectMoveDefense().
bool osl::ntesuki::NtesukiSearcher::ptt_uncle = false [static] |
ntesukiSearcher.h の 81 行で定義されています。
参照元 defenseWithPlayer(), と NtesukiSearcher().
bool osl::ntesuki::NtesukiSearcher::read_attack_only = false [static] |
ntesukiSearcher.h の 75 行で定義されています。
参照元 NtesukiSearcher(), と selectMoveAttack().
unsigned int osl::ntesuki::NtesukiSearcher::read_node_limit [private] |
const int osl::ntesuki::NtesukiSearcher::ReadLimitReached = -2 [static] |
ntesukiSearcher.h の 130 行で定義されています。
参照元 search().
unsigned int osl::ntesuki::NtesukiSearcher::sibling_attack_count [private] |
ntesukiSearcher.h の 121 行で定義されています。
参照元 attackWithOrder(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::sibling_attack_success_count [private] |
ntesukiSearcher.h の 121 行で定義されています。
参照元 attackWithOrder(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::sibling_defense_count [private] |
ntesukiSearcher.h の 120 行で定義されています。
参照元 defenseWithPlayer(), selectMoveDefense(), と ~NtesukiSearcher().
unsigned int osl::ntesuki::NtesukiSearcher::sibling_defense_success_count [private] |
ntesukiSearcher.h の 120 行で定義されています。
参照元 defenseWithPlayer(), selectMoveDefense(), と ~NtesukiSearcher().
シミュレーション探索器.
ntesukiSearcher.h の 36 行で定義されています。
参照元 defenseWithPlayer(), handleInterpose(), handleNonAttack(), osl::ntesuki::NtesukiSearcher::CallSimulationDefenseDisproof< Search, T >::operator()(), osl::ntesuki::NtesukiSearcher::CallSimulationDefense< Search, T >::operator()(), osl::ntesuki::NtesukiSearcher::CallSimulationAttack< Search, T >::operator()(), simulateSiblingsFail(), と simulateSiblingsSuccess().
State& osl::ntesuki::NtesukiSearcher::state [private] |
volatile int* osl::ntesuki::NtesukiSearcher::stop_flag [private] |
探索を途中で強制的に終了させるための flag.
ntesukiSearcher.h の 48 行で定義されています。
参照元 attackWithOrder(), defenseWithPlayer(), handleInterpose(), handleNonAttack(), search(), simulateSiblingsFail(), と simulateSiblingsSuccess().
トランスポジションテーブル.
ntesukiSearcher.h の 33 行で定義されています。
参照元 attack(), attackWithOrder(), defense(), defenseWithPlayer(), getTable(), handleInterpose(), handleNonAttack(), NtesukiSearcher(), osl::ntesuki::NtesukiSearcher::CallSimulationDefenseDisproof< Search, T >::operator()(), osl::ntesuki::NtesukiSearcher::CallSimulationDefense< Search, T >::operator()(), osl::ntesuki::NtesukiSearcher::CallSimulationAttack< Search, T >::operator()(), search(), selectMoveAttack(), selectMoveDefense(), simulateSiblingsFail(), simulateSiblingsSuccess(), と ~NtesukiSearcher().
const int osl::ntesuki::NtesukiSearcher::TableLimitReached = -3 [static] |
int osl::ntesuki::NtesukiSearcher::tsumero_cost [private] |
int osl::ntesuki::NtesukiSearcher::tsumero_estimate [private] |
bool osl::ntesuki::NtesukiSearcher::verbose [private] |