クラス osl::search::SimpleHashTable

基本的な hash table. [詳細]

#include <simpleHashTable.h>

osl::search::SimpleHashTableに対する継承グラフ
Inheritance graph
[凡例]
osl::search::SimpleHashTableのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 SimpleHashTable (size_t capacity=100000, int minimum_record_limit=0, int verbose=0)
 ~SimpleHashTable ()
void setMinimumRecordLimit (int new_limit)
SimpleHashRecordallocate (const HashKey &key, int limit)
 表を探し,登録されてなければ新規エントリを登録する
int minimumRecordLimit () const
void setVerbose (int verbose=1)
int verboseLevel () const
bool isVerbose () const
bool isConsistent () const
int divSize () const
 lock contention を下げるために分割した大きさ
void getPV (const HashKey &, MoveVector &, size_t *quiesce_start=0) const

Private 変数

int minimum_limit
int verbose

説明

基本的な hash table.

とりあえず g++ (SGI STL) の hash_map を使って実装

機能:

ある程度基本的な機能を実装したら,自分で実装しなおすほうがbetter。 この hash_map では GCを実装することは困難と思われるため

find, allocate で ポインタを返すため,要素を追加しても,既存の要素の アドレスが変化しないデータ構造を用いる必要がある.

simpleHashTable.h32 行で定義されています。


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

osl::search::SimpleHashTable::SimpleHashTable ( size_t  capacity = 100000,
int  minimum_record_limit = 0,
int  verbose = 0 
) [explicit]
引数:
capacity 表に保持する最大局面
minimumRecordLimit recordUpperBound, recordLowerBound において limit がこれ未満のものは登録要求を無視する. 末端の静止探索も記録する場合はマイナスにする

simpleHashTable.cc15 行で定義されています。

osl::search::SimpleHashTable::~SimpleHashTable (  ) 

関数

osl::search::SimpleHashRecord * osl::search::SimpleHashTable::allocate ( const HashKey key,
int  limit 
)

表を探し,登録されてなければ新規エントリを登録する

戻り値:
テーブルがいっぱいだったりlimit が小さすぎると0。 そうでなければ内部で確保した場所へのポインタ (間違っても delete しないこと)
例外:
TableFull 

simpleHashTable.cc54 行で定義されています。

参照先 osl::container::GeneralSimpleHashTable< SimpleHashRecord >::find(), と minimumRecordLimit().

参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::findCheckmateInPV(), osl::search::AlphaBeta2< EvalT >::makeMove(), osl::search::qallocate(), qsearch(), osl::search::AlphaBeta3::searchRoot(), osl::game_playing::HistoryToTable::setPV(), と osl::search::AlphaBeta2< EvalT >::setRoot().

int osl::search::SimpleHashTable::divSize (  )  const

lock contention を下げるために分割した大きさ

osl::container::GeneralSimpleHashTable< SimpleHashRecord >を再定義しています。

simpleHashTable.cc74 行で定義されています。

void osl::search::SimpleHashTable::getPV ( const HashKey root,
MoveVector &  out,
size_t *  quiesce_start = 0 
) const
bool osl::search::SimpleHashTable::isConsistent (  )  const

simpleHashTable.cc68 行で定義されています。

bool osl::search::SimpleHashTable::isVerbose (  )  const [inline]
int osl::search::SimpleHashTable::minimumRecordLimit (  )  const
void osl::search::SimpleHashTable::setMinimumRecordLimit ( int  new_limit  ) 
引数:
new_limit recordUpperBound, recordLowerBound において limit がこれ未満のものは登録要求を無視する

simpleHashTable.cc41 行で定義されています。

参照先 minimum_limit.

void osl::search::SimpleHashTable::setVerbose ( int  verbose = 1  ) 

simpleHashTable.cc35 行で定義されています。

参照先 verbose.

int osl::search::SimpleHashTable::verboseLevel (  )  const

変数

simpleHashTable.h35 行で定義されています。

参照元 minimumRecordLimit(), と setMinimumRecordLimit().

simpleHashTable.h36 行で定義されています。

参照元 setVerbose(), verboseLevel(), と ~SimpleHashTable().


このクラスの説明は次のファイルから生成されました:
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義
Sun May 16 09:58:57 2010に生成されました。  doxygen 1.6.3