Next: Generación de Movimientos
Up: Representación del Juego -
Previous: Representaciones en programas contemporáneos
  Índice General
A partir del surgimiento de computadoras de palabras de 64 bits,
formas más elaboradas de representar el tablero fueron producidas.
Aparentemente propuestos en la Unión Soviética cerca de los años
60, un bit-board (o mapa de bits) es una palabra de 64 bits la
cual contiene información relativa a algún aspecto particular de
la posición actual. Por ejemplo un bitboard puede contener"el
conjunto de casillas ocupadas por peones negros" o "el conjunto
de casillas a las cuales una dama desde e3 puede mover" o bien
"el conjunto de piezas blancas actualmente atacadas por piezas
negras".
Los bitboards son muy versátiles y permiten un procesamiento muy
rápido al basarse en operaciones lógicas de 1 ciclo en la
computadora. Cada mapa de bits representa un atributo de la
posición, y la intersección de dos mapas de bits define una
combinación de ambos atributos. Dado que las computadoras pueden
intersectar de manera lógica dos palabras de datos muy
rápidamente, esta es una forma muy eficiente de almacenar y
utilizar información. La eficiencia se incrementa así como el
tamaño de palabras de la computadora se aproxima al tamaño del
mapa de bits.
Algunos de los bitmaps que la mayoría de las computadoras
utilizan son :
- 64 mapas los cuales representan las casillas atacadas por
cualquier pieza (si hay alguna) que ocupa una casilla en
particular.
- 64 mapas que representan, inversamente al anterior, las casillas
desde las cuales hay piezas atacando una casilla en particular.
- 2 mapas que representan las casillas atacadas por cada
bando (blancas y negras).
- 12 mapas cada uno de los cuales representa las casillas
ocupadas por cada tipo de pieza de cada bando (por ejemplo,
Caballos blancos).
Muchos atributos de la posición demasiado complicados de
representar por bitmaps son representados en forma de arreglos.
Algunos de estos arreglos representan las piezas en el tablero
combinando la información de varios bitmaps. La información es
guardada en más de una forma para su conveniente manipulación,
utilizando arreglos especiales para traducir de una forma a otra.
Un arreglo en particular especial es el que mantiene la lista de movimientos. Para definir un movimiento el
programa debe saber algo más que la casilla de origen y la de
destino de la jugada, por lo que este arreglo contiene información
del tipo: qué captura involucra, que tipo de pieza es capturada,
si la movida afecta la posibilidad de enrocar, si involucra un
jaque, jaque mate, ahogado, si un peón corona y cómo la movida ha
sido buscada.
La forma básica de cómo generar movimientos con mapas de bits se
describe a continuación:
- Utilizar el mapa de bits para todas las piezas por color.
Si encontramos que una pieza de ese color está ubicada en la
casilla correspondiente sus movimientos deben ser generados. Si
no, ir al siguiente bit.
- Determinar si la pieza en cuestión es un peón. Esto se
realiza mediante la operación lógica AND entre el bitmap de la
posición actual y el de la ubicación de los peones.
- Determinar las casillas a las cuales la pieza en cuestión
puede mover legalmente. Si es un peón el programa inicia la
operación con el bitmap de destinos de peones y casillas de
captura, sino inicia con el bitmap de casillas atacadas desde la
casilla considerada. El bitmap para ubicaciones de piezas de
igual color es complementado o invertido con tal de entregar un
mapa de las casillas no ocupadas por piezas del mismo color. La
intersección de este bitmap con el de los destinos de peones o de
ataque entrega el bitmap de casillas a las cuales la pieza puede
mover. Estas manipulaciones de bitmaps son muy rápidas para las
computadoras.
Debido a la complicación que significaba el considerar si una movida
legal deja al rey propio en jaque muchos programas ignoraron este
hecho en esta etapa con tal de verificarlo durante la búsqueda en
el árbol de variantes.
Next: Generación de Movimientos
Up: Representación del Juego -
Previous: Representaciones en programas contemporáneos
  Índice General
Santiago de Chile, Julio 2003