next up previous contents
Next: Generación de Movimientos Up: Representación del Juego - Previous: Representaciones en programas contemporáneos   Índice General

El avance de los BitBoards



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 : 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:
  1. 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.
  2. 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.
  3. 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 up previous contents
Next: Generación de Movimientos Up: Representación del Juego - Previous: Representaciones en programas contemporáneos   Índice General
Santiago de Chile, Julio 2003