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.