next up previous contents
Next: Generando Movimientos a nivel Up: Representación del Juego - Previous: Generando todos los movimientos   Índice General

De vuelta a los inicios:Una movida a la vez

Programas de ajedrez más sofisticados creados en la década del 70 adoptaron la estrategia opuesta: generar algunos movimientos, realizar una búsqueda sobre ellos y si un corte es alcanzado entonces no habrá necesidad de buscar en el resto de los movimientos.

Una combinación de diferentes factores volvieron a hacer esta técnica muy popular: Muchos programas generan primero las capturas, ordenándolas de acuerdo a aquellas que logran una mayor ganancia de material y buscando un corte en las variantes. Algunos métodos fueron desarrollados con tal de acelerar la generación de movimientos de captura involucrando bitboards.

CHESS 4.5 mantenía dos conjuntos de 64 bitboards, con uno por cada casilla del tablero. Uno contenía las casillas atacadas por cada pieza que estaba ubicada en un casilla dada (de existir alguna pieza en esa casilla). La otra era la transpuesta, conteniendo todas las casillas ocupadas por piezas que atacan esa casilla. Luego, si el programa busca movimientos que logran la captura de la Dama negra entonces busca su casilla de ubicación en el bitboard de ubicación de las piezas, usa los otros bitboards para encontrar las casillas desde donde es atacada la posición de la dama y genera solo movimientos para las piezas ubicadas en esas casillas.

El mantenimiento de estos "bitboards de ataque" luego de cada movimiento requiere bastantes operaciones en cada estructura mantenida en memoria, pero una herramienta denominada "bitboards rotados" (rotated bitboards) puede acelerar el trabajo en forma significante.


next up previous contents
Next: Generando Movimientos a nivel Up: Representación del Juego - Previous: Generando todos los movimientos   Índice General
Santiago de Chile, Julio 2003