Changes

Jump to: navigation, search

Endgame Tablebases

1,780 bytes added, 18:15, 18 April 2020
no edit summary
* The side to move may not give check.
* The distance between the two Kings must be greater than one.
 
=Retrieving=
==Probe==
When a chess program (e.g., a chess engine or a chess GUI) works with an EGTB, it needs to retrieve data (integer numbers) for some given chess positions. The process named probe. It is not a search but retrieve data which below steps:
* convert a given chess position into an index via indexing algorithms
* access data (typically organized as an integer array) using the index to retrieve the integer of that chess position
 
If data of that endgame is not ready in memory, usually the probe process has to do some extra work:
* From data index calculate to block index
* Read data of that block from storage into memory
* Uncompress the block (if it is compressed)
* Convert the endgame index into block index and retrieve the right data
 
==Searching==
After probing the chess engine may have the result as an integer number for the queried position. Depending on the metric, the number may be a distance to mate or distance to conversion, the position is a draw or a win or loss for the querying side. Sometimes that value (state of draw/win/loss) may be enough for searching. However, sometimes that state is not enough and it needs to know which is the best move to make. The solution is to generate all legal moves from that position, make one by one, probe that EGTB for values of each new position. After all, compare the values of all children's positions to find which one is the best to make.
 
==Speed==
Typically the probe process requires some computing and it may access storage which is usually so slow, compared with one stored in memory. All may make it be a slow one. An engine that probes EGTB when searching may make the search be slower. The good point is that the engine can stop searching on the branch probed the EGTB.
 
=Generator=
=Brief Info=

Navigation menu