Changes

Jump to: navigation, search

Encoding Moves

73 bytes added, 10:15, 13 May 2018
m
no edit summary
'''Encoding Moves''' inside a chess program refers to both [[Chess Game#GameRecord|game records]] or [[Game Notation|game notation]], and [[Search|search]] related [[Move Generation|generation]], [[Make Move|make]] and [[Unmake Move|unmake move]] to [[Incremental Updates|incremental update]] the [[Chessboard|board]]. During generation, moves are stored inside [[Move List|move lists]], and [[Best Move|best moves]] or [[Refutation Move|refutation moves]] [[Fail-High|failing high]] inside the [[Search|search]] are stored inside the [[Transposition Table|transposition table]], [[Killer Heuristic|Killer slots]], [[Triangular PV-Table|PV-]] or [[Refutation Table|refutation table]], and moves, or certain aspects of a move, such as [[Origin Square|origin square]] and the [[Target Square|target square]] are used to index [[Butterfly Boards|butterfly boards]] for [[History Heuristic|history]]- or [[Countermove Heuristic|countermove heuristic]].
=Space-Time Tradeoff=Move encoding in [[Chess Game#GameRecord|game records ]] and [[Databases|game databases ]] is usually designed to minimize size, while in [[Search|search ]] efficiency in generating is the main concern, considering [[Board Representation|board representation]] and other data structures like [[Attack and Defend Maps|attack and defend maps]]. In general, move encoding either comprehend full information, that is contains involved [[Pieces|pieces]] and square coordinates, or more common, omits the redundant piece information and relies on a adequate board representation to lookup the pieces by square. In [[Alpha-Beta]] like search, an important consideration is lazy move generation, to delay acquisition of certain information until it is really needed, which might be never in case of [[Node Types#CUT|Cut-nodes]].
=Information Required=

Navigation menu