Transposition table

The usage of transposition tables is essentially memoization applied to the tree search and is a form of dynamic programming.

The number of possible positions that may occur in a game tree is an exponential function of depth of search, and can be thousands to millions or even much greater.

Game-playing programs work by analyzing millions of positions that could arise in the next few moves of the game.

Typically, these programs employ strategies resembling depth-first search, which means that they do not keep track of all the positions analyzed so far.

Use of a transposition table can lead to incorrect results if the graph-history interaction problem is not studiously avoided.

A common solution to this problem is to add the castling rights as part of the Zobrist hashing key.

A solution to the general problem is to store history information in each node of the transposition table, but this is inefficient and rarely done in practice.

A transposition table is a cache whose maximum size is limited by available system memory, and it may overflow at any time.