Next: Generando Movimientos a nivel
Up: Representación del Juego -
Previous: Generando todos los movimientos
  Índice General
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:
- La búsqueda no requiere demasiada memoria. Los programas de
la década de 1970 combinaban este proceso con pequeñas tablas de
transposición y algunas otras técnicas lo que limitaba las
deficiencias propias de buscar sobre todas las posibilidades.
- La generación de movimientos es particularmente complicada
en el juego del ajedrez a diferencia de otros juegos, con
enroques, capturas al paso y diferentes reglas de movimiento para
cada pieza.
- A menudo una refutación es una captura
(involucra ganancia de material). Dado que usualmente hay pocas
capturas en una posición y dado que generar capturas en forma
separada es relativamente fácil (ver punto de los bitboards),
computar capturas es a menudo suficiente para lograr un corte en
el análisis de variantes.
- Las capturas son uno de los pocos movimientos analizados
durante la búsqueda en posiciones "estables", por lo cual
generarlas resulta doblemente útil.
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: Generando Movimientos a nivel
Up: Representación del Juego -
Previous: Generando todos los movimientos
  Índice General
Santiago de Chile, Julio 2003