Representación en el tablero (ajedrez por computadora)


La representación del tablero en el ajedrez por computadora es una estructura de datos en un programa de ajedrez que representa la posición en el tablero de ajedrez y el estado del juego asociado. [1] La representación del tablero es fundamental para todos los aspectos de un programa de ajedrez, incluida la generación de jugadas, la función de evaluación y hacer y deshacer jugadas (es decir, buscar), así como mantener el estado del juego durante el juego. Existen varias representaciones diferentes en la junta. Los programas de ajedrez a menudo utilizan más de una representación del tablero en diferentes momentos, por eficiencia. La eficiencia de ejecución y la huella de memoria son los factores principales al elegir una representación de tablero; las consideraciones secundarias son el esfuerzo requerido para codificar, probar y depurar la aplicación.

Los primeros programas usaban listas de piezas y listas cuadradas, ambas basadas en matrices. La mayoría de las implementaciones modernas utilizan un enfoque de matriz de bits más elaborado pero más eficiente llamado tableros de bits que asigna bits de una palabra de 64 bits o una palabra doble a los cuadrados del tablero.

Una descripción completa de una posición de ajedrez, es decir, la posición "estado", debe contener los siguientes elementos:

La representación de la junta normalmente no incluye el estado de la regla de sorteo de repetición triple . Para determinar esta regla, se debe mantener un historial completo del juego desde la última acción irreversible (captura, movimiento de peón o enroque) y, por lo tanto, generalmente se rastrea en estructuras de datos separadas. Sin esta información, los modelos pueden repetir la posición a pesar de tener una ventaja ganadora, lo que resulta en una cantidad excesiva de tablas. [2]

El estado del tablero también puede contener información derivada secundaria, como qué piezas atacan un cuadrado; para casillas que contienen piezas, qué espacios son atacados o protegidos por esa pieza; qué piezas están clavadas; y otro estado conveniente o temporal.

El estado del tablero está asociado con cada nodo del árbol del juego, lo que representa una posición a la que se llega mediante un movimiento, ya sea que ese movimiento se haya jugado sobre el tablero o se haya generado como parte de la búsqueda del programa. Es conceptualmente local al nodo, pero puede definirse globalmente y actualizarse incrementalmente de nodo a nodo a medida que se recorre el árbol.