¿Son los bitboards más rápidos que una implementación de 12 * 12 tableros en motores de ajedrez?

12 x 12? Suelo jugar en un tablero de 8 x 8, pero de todos modos …

Esas son sólo estructuras de datos. Lo que hace que el código sea más rápido o más lento es … el código. Ciertamente, la elección de las estructuras de datos puede ser muy importante para el rendimiento, pero podría tener las mejores estructuras de datos del mundo y un código absolutamente terrible que las operó.

Me imagino que los bitboards tendrían una ventaja en cuanto a la cantidad de memoria necesaria para calcular un movimiento óptimo (para el jugador de IA), porque ese análisis debe mirar hacia adelante muchos movimientos, que se expanden exponencialmente. Cada movimiento está acompañado por una ‘imagen’ completa del tablero en cada paso, de modo que cuando hay millones de estos, reducirlos a unas pocas decenas de bytes bien podría ser un ahorro muy valioso.

Solo he mirado el código de uno o dos motores de ajedrez, y uno de los bitboards usados. Me resultó extremadamente difícil de entender, aunque no podría decir si fue por los tableros de bits o por la forma en que estaba codificado. Otro motor de ajedrez utilizó un enfoque mucho más obvio, orientado a objetos, para describir todo en el juego: tablero, piezas, etc. Personalmente lo encontré mucho más fácil de entender. Que yo sepa, no tuvieron un rendimiento dramáticamente diferente. La IA en el corazón del ajedrez es a menudo un código autocontenido: el acceso al tablero y las posiciones de las piezas forma parte naturalmente, pero no está claro que una estructura de datos sería inherentemente más rápida de acceder que otra.

Sí, en una arquitectura de 64 bits, los tableros de bits de la máquina tienen alguna ventaja … ¡pero no tan grandes! Hoy en día, los motores de ajedrez son modernos pero implementan tableros de ajedrez como 8 × 8, 10 × 12, 12 × 12 y también 16 × 12 o, a veces, 16 × 16 matrices. El desafío con la construcción del motor de ajedrez es que primero se juegue correctamente y luego se continúe agregando fuerza mediante el ajuste fino de la evaluación y la búsqueda. La optimización de la representación de tableros con tableros de bits solo es necesaria si desea que su motor de ajedrez juegue en torneos internacionales de ajedrez informático; incluso la representación de tableros que no sea la estructura de datos de tableros no es una desventaja. ¡Pero la búsqueda y la evaluación son los aspectos clave!