Tuesday, September 15, 2015

La máquina de Torres Quevedo y el algoritmo para dar mate en el final R vs. RT


Leonardo Torres Quevedo (1852-1936), fue un inventor español, el cual además de todo, tiene un lugar de honor en el ajedrez, al haber inventado una máquina que podía jugar el final de torre y rey vs. rey.  En este caso, al contrario del Turco de Von Kempelen, la máquina de Torres Quevedo ganaba este final básico, pero si pensamos que esto se mostró para antes del 1920, el resultado es notable.


Me he preguntado ¿cómo será el algoritmo de este inventor español para ganar este final? Y lo he hallado descrito en el siguiente libro: Chess and Machine Intuition, de George W. Atkinson, Intellect Books. Este libro me parece fascinante. He aquí el algoritmo de Leonardo Torres Quevedo según el apéndice del libro mencionado:


El esquema de Torres para dar mate en este final de rey y torre vs rey asume una posición inicial con el rey del autómata en a8, torre en b8 y el rey enemigo en cualquier casilla en donde no esté en jaque en las primeras seis filas. He aquí el algoritmo en seudocódigo RB = Rey Blanco; RN = Rey negro y T = Torre blanca:

,
if RN y la T están en las columna a, b o c

  then mueve la T a la columna h (mantén a la T fuera del alcance del RN)

elseif ambos RN y la T están en las columnas f, g o h

  then mueve la T a la columna a (mantén a la T fuera del alcance del RN)

elseif si la fila de la T excede por más de una fila del RN

  then mueve el R una fila (quitandole espacio al RN)

elseif la fila del RB excede por más de dos filas a la del RN

  then mueve el RB una fila (para apoyar a la T)

elseif la distancia entre reyes es impar

  then haz tiempo moviendo la T



     if T es en la columna a then mueve T a la columna b

     elseif T está en la columna b 
          then mueve T a la columna a

        elseif T está en la columna g 
          then mueve T a la columna h

       else {T está en la columna h} mueve la T a la columna g

     endif



elseif la distancia horizontal entre reyes no es cero

  then mueve el RB horizontalment hacia el RN {mnanteniendo la oposición}

else da jaque moviendo la torre una fila {si es la primera fila entonces es mate}

Si el RN está en a6, con las mejores tácticas dilatorias, el mate puede tardar, con este algoritmo, unas 61 jugadas.

No comments: