説明を見る。00001
00002
00003 #ifndef OSL_PROOFTREEDEPTHDFPN_H
00004 #define OSL_PROOFTREEDEPTHDFPN_H
00005
00006 #include "osl/numEffectState.h"
00007 #include "osl/hashKey.h"
00008 #include <vector>
00009
00010 namespace osl
00011 {
00012 namespace checkmate
00013 {
00014 class CheckHashRecord;
00015 class DfpnTable;
00021 class ProofTreeDepthDfpn
00022 {
00023 struct Table;
00024 std::unique_ptr<Table> table;
00025 public:
00026 explicit ProofTreeDepthDfpn(const DfpnTable& table);
00027 ~ProofTreeDepthDfpn();
00028 int depth(const HashKey& key, const NumEffectState& state, bool is_or_node) const;
00029
00030 void retrievePV(const NumEffectState& state, bool is_or_node,
00031 std::vector<Move>& pv) const;
00032 private:
00033 int orNode(const HashKey& key, Move& best_move, int height=0) const;
00034 int andNode(const HashKey& key, Move& best_move, int height=0) const;
00035 };
00036 }
00037 }
00038
00039
00040 #endif
00041
00042
00043
00044