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

La Propuesta de Shannon

Shannon propuso en [68] una de las primeras ideas de representación del juego mediante números y operaciones sobre ellos.

Según su propuesta, una casilla puede ser representada por un número que puede tomar 13 valores distintos: puede estar vacía (0) o bien ocupada por una de las seis piezas blancas (P=1, C=2, A=3, T=4, D=5, R=6) o bien por una de las seis piezas negras (P=-1, C=-2, A=-3, T=-4, D=-5, R=-6), vale decir, el estado de una casilla queda especificado por un entero entre -6 y +6. Las 64 casillas del tablero pueden ser numeradas de acuerdo a un sistema de coordenadas como el representado en la figura [*].

Figura: Representación del Juego en una máquina según Shannon

Un total de 256 bits (dígitos binarios) serían suficientes para utilizar esta representación. Un número extra, al cual Shannon denominó "λ" tendría los valores -1 ó +1 de acuerdo al turno de jugar de las Negras o Blancas respectivamente. Algunos parámetros extras deben ser agregados para efectos de movimientos como el enroque y capturas al paso.

Bajo esta representación la posición inicial de las piezas queda dada por la tabla [*]

 4, 2, 3, 5, 6, 3, 2, 4,
 1, 1, 1, 1, 1, 1, 1, 1,
 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0,
-1,-1,-1,-1,-1,-1,-1,-1,
-4,-2,-3,-5,-6,-3,-2,-4,
+1
Tabla: Esquema de la posición inicial de las piezas según la representación de Shannon. Notar que el +1 al final señala el turno de movimiento de las blancas.


Un movimiento (aparte del enroque y la coronación) puede especificarse mediante los valores de las casillas de origen y destino de la pieza que se mueve. Una casilla es un número entre 64 posibilidades, para cuya representación 6 dígitos binarios son suficientes lo cual nos da un total de 12 para el movimiento. Para representar coronaciones de peón tres dígitos binarios son necesarios para especificar la pieza que corona. El enroque puede ser descrito mediante el movimiento del Rey (la única forma en que el rey puede moverse 2 casillas). Por lo tanto, una movida es representada por el vector (a,b,c)donde a y b son las casillas y c la pieza que llega al tablero en caso de coronación. Con esto la representación del juego es entregada a 8 subrutinas T0,T1,...,T7 cuyas funciones básicas son :
T0 : Realiza el movimiento (a,b,c) en la posición P obteniendo una posición resultante.
T1 : Realiza una lista de todos los movimientos posibles de peón en la posición P.
T2,..,T6 : Similar a T1 pero para las otras piezas : Caballo, Alfil, Torre, Dama y Rey.
T7 : Realiza una lista de todos los movimientos posibles en una posición. Con esto la realización de un movimiento (a,b,c) sería estructurado de la siguiente manera :
  1. La casilla correspondiente al número a es ubicada en la posición de memoria.
  2. El número presente en la casilla (x) es extraído y reemplazado por 0 (vacío).
    1. Si x = 1 y la primera coordenada de a es 6 (peón blanco coronando) o si x = -1 y la primera coordenada de a es 1 (peón negro coronando) el número c es ubicado en la casilla b (reemplazando lo que allí había).
    2. Si x = 6 y a - b = 2 (enroque corto del blanco) un 0 es ubicado en la casilla 04 y 07 y un 6 y 4 en las casillas 06 y 05 respectivamente. Similarmente para los casos de x = 6, b - a = 2 (enroque largo del blanco) y x = -6, a - b = ±2 (enroque negro).
    3. En cualquier otro caso, x es ubicado en b.
  3. El signo de "λ" es cambiado.
Para cada tipo de pieza existe una subrutina encargada de generar sus movimientos. Un ejemplo típico es el programa para los movimientos del Alfil T3. Sean (x,y) las coordenadas de la casilla ocupada por el Alfil.
  1. Construir (x+1,y+1) y leer el contenido u de esta casilla en la posición P.
  2. Si u = 0 (casilla vacía) listar el movimiento (x,y),(x+1,y+1) y seguir con (x+2,y+2) en vez de (x+1,y+1).
    Si λu es positivo (pieza propia en casilla)continuar con 3.
    Si λu es negativo (pieza del oponente en la casilla) listar el movimiento y continuar con 3. Si la casilla no existe continuar con 3
  3. Construir (x+1,y-1) y realizar el mismo proceso.
  4. Similarmente con (x-1,y+1).
  5. Similarmente con (x-1,y-1).
Mediante este programa es posible construir una lista de movimientos posibles de un Alfil dada una posición P. Programas similares listarían los movimientos de las otras piezas. Hay considerables opciones de simplificar estos programas. Por ejemplo, el programa de movimientos de Dama T5 puede ser una combinación de los programas de Alfil y Torre (T4 y T4 respectivamente). Utilizando los programas generadores de movimientos T1..T6 y un programa controlador T7 la máquina puede construir una lista de todos los movimientos posibles en una posición P. El programa T7 se estructuraría de la siguiente forma:
  1. Iniciar en la casilla (0,0) y extraer su contenido x.
  2. Si λx es positivo iniciar el programa correspondiente Tx y luego retornar a 1 sumando 1 al numero de la casilla.
  3. Testear la legalidad de los movimientos generados y descartar aquellos que sean ilegales. Esto se logra realizando cada uno de los movimientos en la posición P (mediante T0) y examinando si el rey queda en jaque.
Con los programas T0..T7 la máquina puede jugar ajedrez legal realizando una selección aleatoria de alguno de los movimientos obtenidos. Shannon mismo jugó un par de juegos contra una máquina con esta estrategia siendo capaz de vencer por jaque mate en 4 o 5 jugadas lo cual demostraba lo deficiente de esta estrategia..
next up previous contents
Next: Representaciones en programas contemporáneos Up: Representación del Juego - Previous: Representación del Juego -   Índice General
Santiago de Chile, Julio 2003