osl::ntesuki::NtesukiSearcher 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 Types | Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
osl::ntesuki::NtesukiSearcher Class Reference

`#include <ntesukiSearcher.h>`

Collaboration diagram for osl::ntesuki::NtesukiSearcher:
[legend]

## Classes
class | AttackHelper
class | CallSimulationAttack
class | CallSimulationDefense
class | CallSimulationDefenseDisproof
class | DefenseHelper

## Public Types
typedef NumEffectState | State

## Public Member Functions
| 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
template<Player T>
osl::ntesuki::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>
osl::ntesuki::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)

## Static Public Attributes
static bool | delay_non_pass = false
| 探索のふるまいを制御する変数. More...
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 Types
typedef std::vector< Move > | moves_t
| ルートから現在探索中のノードまでの move. More...
typedef std::vector < NtesukiRecord * > | nodes_t
| ルートから現在探索中のノードまでの局面. More...

## Private Member Functions
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)
| 攻撃側の処理 More...
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)
| 防御に関する計算 More...
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 で調べる. More...
template<Player T>
void | simulateSiblingsFail (NtesukiRecord *record, NtesukiRecord *record_best, int pass_left, unsigned int &success_count, unsigned int &total_count)
| 攻め手番で，ある手が Fail だとわかった場合， 他の手も同様に Fail にならないか Simulaition で調べる. More...
template<Player T>
void | handleNonAttack (NtesukiRecord *record, int pass_left)
| 攻めになっていない手を除く. More...
template<Player T>
void | handleTonshi (NtesukiRecord *record, int pass_left, const Move last_move)
| 頓死がないか調べる. More...
template<Player T>
void | handleInterpose (NtesukiRecord *record, int pass_left)
| 無駄合候補が本当に無駄合が調べる. More...

## Private Attributes
State & | state
NtesukiMoveGenerator * | mg
| 手生成器. More...
NtesukiTable | table
| トランスポジションテーブル. More...
NtesukiSimulationSearcher | simulator
| シミュレーション探索器. More...
unsigned int | node_count
| 現在までに何ノード読んだか. More...
unsigned int | read_node_limit
| 最大何ノードまで読むか. More...
bool | verbose
| 経過をどこまで表示するか. More...
volatile int * | stop_flag
| 探索を途中で強制的に終了させるための flag. More...
PathEncoding | path
| ルートから現在探索中のノードまでの path の hash値. More...
moves_t | moves_played
nodes_t | nodes_played
unsigned int | max_pass
| λオーダ More...
NtesukiRecord::IWScheme | iwscheme
| Iterative widening の scheme. More...
NtesukiRecord::PSScheme | psscheme
| Player selection の scheme. More...
NtesukiRecord::ISScheme | isscheme
| Inversion searching の scheme. More...
int | tsumero_cost
| 詰めろな手に関する cost More...
int | tsumero_estimate
| 詰めろな手に関する証明数の予測値 More...
double | gc_ratio
| GC の際にテーブル をどこまで小さくするか More...
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 Attributes
static const unsigned int | INITIAL_PROOF_LIMIT
static const unsigned int | INITIAL_DISPROOF_LIMIT

## Detailed Description

Definition at line 20 of file ntesukiSearcher.h.

## Member Typedef Documentation

typedef std::vector<Move> osl::ntesuki::NtesukiSearcher::moves_t
| private

ルートから現在探索中のノードまでの move.

Definition at line 54 of file ntesukiSearcher.h.

typedef std::vector<NtesukiRecord *> osl::ntesuki::NtesukiSearcher::nodes_t
| private

ルートから現在探索中のノードまでの局面.

Definition at line 58 of file ntesukiSearcher.h.

typedef NumEffectState osl::ntesuki::NtesukiSearcher::State

Definition at line 24 of file ntesukiSearcher.h.

## Constructor & Destructor Documentation

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

Definition at line 44 of file ntesukiSearcher.cc.

References 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, mg, 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, state, osl::ntesuki::NtesukiRecord::state, table, osl::ntesuki::NtesukiRecord::table, and osl::ntesuki::NtesukiRecord::use_dominance.

osl::ntesuki::NtesukiSearcher::~NtesukiSearcher | ( | ) |  |

Definition at line 140 of file ntesukiSearcher.cc.

References osl::ntesuki::NtesukiRecord::confluence_count, osl::ntesuki::NtesukiRecord::split_count, and verbose.

## Member Function Documentation

template<Player T>

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

攻撃側の処理

Definition at line 392 of file ntesukiSearcher.tcc.

References osl::checkmate::ProofDisproof::BigProofNumber, CATCH_DFPN, osl::D, osl::checkmate::ProofDisproof::disproof(), osl::checkmate::ProofDisproof::DISPROOF_LIMIT, osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::ntesuki::NtesukiMove::isInvalid(), osl::eval::min(), ntesuki_assert, osl::checkmate::ProofDisproof::proof(), osl::checkmate::ProofDisproof::PROOF_LIMIT, RETURN, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setUpNode(), and TRY_DFPN.

template<Player T>

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

Definition at line 526 of file ntesukiSearcher.tcc.

References addWithSaturation(), osl::checkmate::ProofDisproof::BigProofNumber, CATCH_DFPN, osl::checkmate::ProofDisproof::Checkmate(), osl::D, osl::checkmate::ProofDisproof::disproof(), osl::checkmate::ProofDisproof::DISPROOF_LIMIT, osl::ntesuki::NtesukiRecord::generateMoves(), osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::isCheck(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::ntesuki::NtesukiMove::isCheckmateSuccess(), osl::checkmate::ProofDisproof::isFinal(), osl::ntesuki::NtesukiMove::isInvalid(), osl::checkmate::ProofDisproof::LoopDetection(), osl::eval::min(), moves, osl::checkmate::ProofDisproof::NoCheckmate(), ntesuki_assert, osl::checkmate::ProofDisproof::PawnCheckmate(), osl::checkmate::ProofDisproof::proof(), osl::checkmate::ProofDisproof::PROOF_LIMIT, 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(), and TRY_DFPN.

template<Player T>

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

防御に関する計算

Definition at line 1215 of file ntesukiSearcher.tcc.

References CATCH_DFPN, osl::D, osl::checkmate::ProofDisproof::disproof(), osl::checkmate::ProofDisproof::DISPROOF_LIMIT, osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiRecord::getValueAnd(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::checkmate::ProofDisproof::isFinal(), osl::ntesuki::NtesukiMove::isInvalid(), ntesuki_assert, osl::checkmate::ProofDisproof::proof(), osl::checkmate::ProofDisproof::PROOF_LIMIT, RETURN, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setUpNode(), and TRY_DFPN.

template<Player T>

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

Definition at line 1322 of file ntesukiSearcher.tcc.

References addWithSaturation(), osl::checkmate::ProofDisproof::AttackBack(), osl::checkmate::ProofDisproof::BigProofNumber, CATCH_DFPN, osl::checkmate::ProofDisproof::disproof(), osl::checkmate::ProofDisproof::DISPROOF_LIMIT, osl::ntesuki::NtesukiRecord::do_oracle_attack, osl::ntesuki::NtesukiRecord::do_oracle_aunt, osl::ntesuki::NtesukiRecord::generateMoves(), osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueOr(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::ntesuki::NtesukiMove::isCheck(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::ntesuki::NtesukiMove::isCheckmateFail(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::checkmate::ProofDisproof::isFinal(), osl::ntesuki::NtesukiRecord::isLoopWithPath(), osl::ntesuki::NtesukiMove::isPass(), osl::checkmate::ProofDisproof::isUnknown(), osl::ntesuki::NtesukiRecord::isVisited(), osl::checkmate::ProofDisproof::LoopDetection(), osl::eval::min(), moves, osl::checkmate::ProofDisproof::NoEscape(), ntesuki_assert, osl::Move::PASS(), osl::checkmate::ProofDisproof::proof(), 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(), and TRY_DFPN.

bool osl::ntesuki::NtesukiSearcher::exceedReadNodeLimit | ( | ) |  | const
| inline

Definition at line 272 of file ntesukiSearcher.h.

int osl::ntesuki::NtesukiSearcher::getNodeCount | ( | ) |  | const
| inline

Definition at line 271 of file ntesukiSearcher.h.

NtesukiTable & osl::ntesuki::NtesukiSearcher::getTable | ( | ) |  |

Definition at line 188 of file ntesukiSearcher.cc.

template<Player T>

void osl::ntesuki::NtesukiSearcher::handleInterpose | ( | NtesukiRecord * | record,
|  | int | pass_left
| ) |  |
| private

無駄合候補が本当に無駄合が調べる.

Definition at line 2153 of file ntesukiSearcher.tcc.

References CATCH_DFPN, osl::ntesuki::NtesukiRecord::getBestMove(), osl::ntesuki::NtesukiRecord::getValue(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::checkmate::ProofDisproof::isFinal(), osl::ntesuki::NtesukiMove::isInvalid(), moves, ntesuki_assert, RETURN_ON_STOP, and TRY_DFPN.

template<Player T>

void osl::ntesuki::NtesukiSearcher::handleNonAttack | ( | NtesukiRecord * | record,
|  | int | pass_left
| ) |  |
| private

攻めになっていない手を除く.

Definition at line 1133 of file ntesukiSearcher.tcc.

References CATCH_DFPN, osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::checkmate::ProofDisproof::isFinal(), osl::ntesuki::NtesukiRecord::isVisited(), moves, ntesuki_assert, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setLoopWithPath(), and TRY_DFPN.

template<Player T>

void osl::ntesuki::NtesukiSearcher::handleTonshi | ( | NtesukiRecord * | record,
|  | int | pass_left,
|  | const Move | last_move
| ) |  |
| private

頓死がないか調べる.

Definition at line 2038 of file ntesukiSearcher.tcc.

References osl::checkmate::ProofDisproof::Bottom(), CATCH_DFPN, osl::D, osl::ntesuki::NtesukiRecord::distance, osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::checkmate::ProofDisproof::isFinal(), ratio, READ_ATTACK_BACK_LIMIT, RETURN_ON_STOP, osl::ntesuki::NtesukiRecord::setResult(), and TRY_DFPN.

template<Player A>

template int osl::ntesuki::NtesukiSearcher::search< WHITE > | ( | ) |  |

Definition at line 2224 of file ntesukiSearcher.tcc.

References osl::D, osl::ntesuki::NtesukiRecord::getValue(), osl::Move::INVALID(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), ntesuki_assert, result, verbose, and osl::WHITE.

int osl::ntesuki::NtesukiSearcher::searchSlow | ( | Player | attacker,
|  | int | rnl = `160000`
| ) |  |
| inline

Definition at line 261 of file ntesukiSearcher.h.

References osl::BLACK.

template<Player T>

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

template<Player T>

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

Definition at line 801 of file ntesukiSearcher.tcc.

References addWithSaturation(), osl::checkmate::ProofDisproof::BigProofNumber, CATCH_DFPN, osl::checkmate::ProofDisproof::Checkmate(), osl::checkmate::ProofDisproof::DISPROOF_LIMIT, osl::ntesuki::NtesukiRecord::distance, 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::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(), osl::checkmate::ProofDisproof::LoopDetection(), osl::eval::max(), osl::eval::min(), osl::checkmate::ProofDisproof::NoCheckmate(), ntesuki_assert, osl::checkmate::ProofDisproof::PawnCheckmate(), osl::checkmate::ProofDisproof::PROOF_LIMIT, 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(), TRY_DFPN, and osl::ntesuki::NtesukiRecord::useOld().

template<Player T>

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

template<Player T>

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

Definition at line 1676 of file ntesukiSearcher.tcc.

References addWithSaturation(), osl::checkmate::ProofDisproof::BigProofNumber, CATCH_DFPN, osl::checkmate::ProofDisproof::Checkmate(), osl::checkmate::ProofDisproof::DISPROOF_LIMIT, osl::ntesuki::NtesukiRecord::distance, 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::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(), osl::ntesuki::NtesukiRecord::isVisited(), osl::checkmate::ProofDisproof::LoopDetection(), osl::eval::max(), osl::eval::min(), ntesuki_assert, osl::Move::PASS(), osl::checkmate::ProofDisproof::PROOF_LIMIT, 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(), sorter(), TRY_DFPN, and osl::ntesuki::NtesukiRecord::useOld().

template<Player T>

void osl::ntesuki::NtesukiSearcher::simulateSiblingsFail | ( | NtesukiRecord * | record,
|  | NtesukiRecord * | record_best,
|  | int | pass_left,
|  | unsigned int & | success_count,
|  | unsigned int & | total_count
| ) |  |
| private

攻め手番で，ある手が Fail だとわかった場合， 他の手も同様に Fail にならないか Simulaition で調べる.

Definition at line 302 of file ntesukiSearcher.tcc.

References CATCH_DFPN, osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateFail(), osl::ntesuki::NtesukiMove::isCheckmateFail(), osl::ntesuki::NtesukiRecord::isVisited(), moves, ntesuki_assert, RETURN_ON_STOP, osl::ntesuki::NtesukiMove::setBySimulation(), osl::ntesuki::NtesukiMove::setCheckmateFail(), and TRY_DFPN.

template<Player T>

void osl::ntesuki::NtesukiSearcher::simulateSiblingsSuccess | ( | NtesukiRecord * | record,
|  | NtesukiRecord * | record_best,
|  | int | pass_left,
|  | unsigned int & | success_count,
|  | unsigned int & | total_count
| ) |  |
| private

受け手番で，ある手が Success だとわかった場合， 他の手も同様に Success にならないか Simulaition で調べる.

現在 $^n$ 探索中の場合には，原則 $^(n-1)$ move の場合には調べない.

e.g. 必至探索中には王手は調べない.

Definition at line 2090 of file ntesukiSearcher.tcc.

References CATCH_DFPN, osl::ntesuki::NtesukiMove::getMove(), osl::ntesuki::NtesukiRecord::getValue(), osl::ntesuki::NtesukiRecord::getValueWithPath(), osl::checkmate::ProofDisproof::isCheckmateSuccess(), osl::ntesuki::NtesukiRecord::isVisited(), moves, ntesuki_assert, RETURN_ON_STOP, osl::ntesuki::NtesukiMove::setBySimulation(), osl::ntesuki::NtesukiMove::setCheckmateSuccess(), and TRY_DFPN.

## Member Data Documentation

unsigned int osl::ntesuki::NtesukiSearcher::attack_back_count
| private

Definition at line 125 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::attack_node_count
| private

Definition at line 112 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::attack_node_moves_count
| private

Definition at line 114 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::attack_node_under_attack_count
| private

Definition at line 113 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::blockByAttackBack
| private

Definition at line 107 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::blockByPass
| private

Definition at line 111 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::defense_node_count
| private

Definition at line 115 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::defense_node_moves_count
| private

Definition at line 117 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::defense_node_under_attack_count
| private

Definition at line 116 of file ntesukiSearcher.h.

bool osl::ntesuki::NtesukiSearcher::delay_interpose = false
| static

Definition at line 72 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::delay_non_attack = false
| static

Definition at line 74 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::delay_non_pass = false
| static

探索のふるまいを制御する変数.

Definition at line 69 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::delay_nopromote = false
| static

Definition at line 73 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

unsigned int osl::ntesuki::NtesukiSearcher::disproof_by_inversion_count
| private

Definition at line 126 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::dynamic_widening_width = 0
| static

Definition at line 84 of file ntesukiSearcher.h.

double osl::ntesuki::NtesukiSearcher::gc_ratio
| private

GC の際にテーブル をどこまで小さくするか

Definition at line 101 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::immediate_lose
| private

Definition at line 124 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::immediate_win
| private

Definition at line 124 of file ntesukiSearcher.h.

const unsigned int osl::ntesuki::NtesukiSearcher::INITIAL_DISPROOF_LIMIT
| staticprivate

Initial value:
=
ProofDisproof::DISPROOF_LIMIT / 4

Definition at line 135 of file ntesukiSearcher.h.

const unsigned int osl::ntesuki::NtesukiSearcher::INITIAL_PROOF_LIMIT
| staticprivate

Initial value:
=
ProofDisproof::PROOF_LIMIT / 4

Definition at line 133 of file ntesukiSearcher.h.

NtesukiRecord::ISScheme osl::ntesuki::NtesukiSearcher::isscheme
| private

Inversion searching の scheme.

Definition at line 92 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::isshogi_attack_count
| private

Definition at line 123 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::isshogi_attack_success_count
| private

Definition at line 123 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::isshogi_defense_count
| private

Definition at line 122 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::isshogi_defense_success_count
| private

Definition at line 122 of file ntesukiSearcher.h.

NtesukiRecord::IWScheme osl::ntesuki::NtesukiSearcher::iwscheme
| private

Iterative widening の scheme.

Definition at line 88 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::max_pass
| private

λオーダ

Definition at line 62 of file ntesukiSearcher.h.

NtesukiMoveGenerator* osl::ntesuki::NtesukiSearcher::mg
| private

手生成器.

Definition at line 30 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

moves_t osl::ntesuki::NtesukiSearcher::moves_played
| private

Definition at line 55 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::node_count
| private

現在までに何ノード読んだか.

Definition at line 39 of file ntesukiSearcher.h.

nodes_t osl::ntesuki::NtesukiSearcher::nodes_played
| private

Definition at line 59 of file ntesukiSearcher.h.

const int osl::ntesuki::NtesukiSearcher::NtesukiNotFound = -1
| static

Definition at line 129 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::pass_attack_count
| private

Definition at line 119 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::pass_attack_success_count
| private

Definition at line 119 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::pass_count
| private

Definition at line 118 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::pass_success_count
| private

Definition at line 118 of file ntesukiSearcher.h.

PathEncoding osl::ntesuki::NtesukiSearcher::path
| private

ルートから現在探索中のノードまでの path の hash値.

Definition at line 51 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::proof_AND_count
| private

Definition at line 126 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::proof_without_inversion_count
| private

Definition at line 126 of file ntesukiSearcher.h.

NtesukiRecord::PSScheme osl::ntesuki::NtesukiSearcher::psscheme
| private

Player selection の scheme.

Definition at line 90 of file ntesukiSearcher.h.

bool osl::ntesuki::NtesukiSearcher::ptt_aunt = false
| static

Definition at line 82 of file ntesukiSearcher.h.

bool osl::ntesuki::NtesukiSearcher::ptt_invalid_defense = false
| static

Definition at line 70 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::ptt_non_attack = false
| static

Definition at line 76 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::ptt_siblings_fail = false
| static

Definition at line 78 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::ptt_siblings_success = false
| static

Definition at line 79 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::ptt_uncle = false
| static

Definition at line 81 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

bool osl::ntesuki::NtesukiSearcher::read_attack_only = false
| static

Definition at line 75 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

unsigned int osl::ntesuki::NtesukiSearcher::read_node_limit
| private

最大何ノードまで読むか.

Definition at line 42 of file ntesukiSearcher.h.

const int osl::ntesuki::NtesukiSearcher::ReadLimitReached = -2
| static

Definition at line 130 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::sibling_attack_count
| private

Definition at line 121 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::sibling_attack_success_count
| private

Definition at line 121 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::sibling_defense_count
| private

Definition at line 120 of file ntesukiSearcher.h.

unsigned int osl::ntesuki::NtesukiSearcher::sibling_defense_success_count
| private

Definition at line 120 of file ntesukiSearcher.h.

NtesukiSimulationSearcher osl::ntesuki::NtesukiSearcher::simulator
| private

シミュレーション探索器.

Definition at line 36 of file ntesukiSearcher.h.

State& osl::ntesuki::NtesukiSearcher::state
| private

Definition at line 27 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

volatile int* osl::ntesuki::NtesukiSearcher::stop_flag
| private

探索を途中で強制的に終了させるための flag.

Definition at line 48 of file ntesukiSearcher.h.

NtesukiTable osl::ntesuki::NtesukiSearcher::table
| private

トランスポジションテーブル.

Definition at line 33 of file ntesukiSearcher.h.

Referenced by NtesukiSearcher().

const int osl::ntesuki::NtesukiSearcher::TableLimitReached = -3
| static

Definition at line 131 of file ntesukiSearcher.h.

int osl::ntesuki::NtesukiSearcher::tsumero_cost
| private

詰めろな手に関する cost

Definition at line 95 of file ntesukiSearcher.h.

int osl::ntesuki::NtesukiSearcher::tsumero_estimate
| private

詰めろな手に関する証明数の予測値

Definition at line 98 of file ntesukiSearcher.h.

bool osl::ntesuki::NtesukiSearcher::verbose
| private

経過をどこまで表示するか.

Definition at line 45 of file ntesukiSearcher.h.

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

- ntesukiSearcher.h
- ntesukiSearcher.tcc
- ntesukiSearcher.cc