SlideShare una empresa de Scribd logo
1 de 222
Descargar para leer sin conexión
La ciencia del ajedrez por computadora
De Turing a las redes neuronales
La_Morsa
2
Índice
Prólogo 04
Antecedentes del ajedrez por computadora 08
Introducción 09
El primer “autómata”: El Turco de Kempelen 10
La máquina de Torres Quevedo y su receta para ganar el final R vs RT 13
El ajedrez atacado desde la perspectiva de la ciencia 16
Un artículo fundamental de Turing 17
Las ideas de Claude Shannon sobre el ajedrez 24
Intentos de un programa de ajedrez que analice
como los seres humanos 27
Chess Query Language: lenguaje de búsquedas
para posiciones de ajedrez 36
“Chunks”: hablando de ajedrez en términos de bloques de patrones 41
Algunas ideas para un compilador de ajedrez 45
El enfoque de un campeón del mundo por correspondencia 48
Tipos de chunks 49
Introducción a un lenguaje de patrones ajedrecísticos 52
Definición de un lenguaje de patrones para ajedrez 65
La descripción de los patrones de ajedrez 66
El lenguaje de patrones 67
Conectores lógicos 72
Patrones posicionales 72
Resumen del lenguaje de descripción 75
La apuesta de David Levy 76
De los 8 bits hasta las súper computadoras 90
Sargon: Uno de los primeros programas que jugaron ajedrez 91
El asno de Buridán en ajedrez 95
Nimzo 97
CHE++, un lenguaje para representar
conocimiento ajedrecístico 98
El programa que sabía demasiado 101
Rybka 103
La controversia 106
MChess Pro 109
HIARCS 111
Belle 115
3
Rebel 120
Komodo 127
Houdini 132
Stockfish 137
Chessgenius 141
Fritz 145
Junior 149
Shredder 153
Las súper computadoras entran a la batalla 158
Cray Blitz 159
¿Qué tan rápida era una Cray? 161
Hydra 164
Deep Blue 167
AlphaZero 207
¿Cómo funciona AlphaZero? 207
Conclusiones 214
Apéndices 216
Apéndice I: El sistema de rating creado por Arpad Elo 217
Apéndice II: Sistema de notación ajedrecística 220
Bibliografía 221
4
Prólogo
El ajedrez es una piedra de toque para la inteligencia.
Goethe
Desde las primeras computadoras digitales, los investigadores reconocieron el potencial de
las mismas para resolver problemas complejos, desde el poder traducir textos de un idioma
a otro, resolver teoremas matemáticos, hacer simulaciones, poder hacer diagnósticos
médicos e incluso, producir obras artísticas, como componer música o hacer poesía.
Muchos investigadores también pensaron en hacer una máquina que pudiese jugar al
ajedrez.
El ajedrez tiene muchas características que lo colocan como un problema excelente para ser
resuelto: sus reglas están bien definidas, no hay azar y es finalmente un juego de suma-cero
(donde la ventaja de un jugador es la desventaja del rival) y además, es de información
perfecta, es decir, toda la información de lo que ocurre en el juego lo conocen los
jugadores, nada está escondido.
Resolver el ajedrez por computadora, sin embargo, plantea un problema que no podrá
solucionarse incluso en el futuro: el crecimiento exponencial de las posibles jugadas y
variantes que pueden producirse. No importa qué computadora poseamos ni cuanta
memoria podamos instalarle, el crecimiento de las posibles jugadas y respuestas (variantes),
a cierta profundidad es inmanejable, por lo que no es posible en la práctica resolver el juego
totalmente. Por ello, lo que se tiene que hacer es tener una heurística, es decir, una serie de
reglas generales que funcionen en la práctica y que, en general, den buenos resultados.
Muchísimos problemas no se pueden resolver por exhaución, es decir, analizando todas las
posibilidades y sin embargo, se pueden encontrar soluciones eficientes aunque no
necesariamente óptimas. Un punto notable para atacar el ajedrez con la computadora es que
es medible. Podemos poner a prueba nuestras ideas jugando contra ajedrecistas humanos y
ver los resultados. El ajedrez es un juego fascinante y obsesivo. La riqueza del juego es tal
que la vida no alcanza para abarcarla (pero esto es problema de la vida, no del ajedrez), y es
claro que la complejidad de este micro-mundo de 64 casillas y 32 piezas sobrepasa todos
los esfuerzos humanos por dominarlo.
El juego, con las reglas que conocemos, probablemente se estableció alrededor del año
1525 y desde entonces millones de personas lo han estudiado y disfrutado. Eventualmente
salieron los primeros jugadores fuertes, los que reconocieron ciertos principios que poco a
5
poco se fueron develando hasta llegar al conocimiento enorme que se tiene del ajedrez, que
sin embargo, parece aún tener mucho que mostrarnos.
Hoy tenemos Internet y sistemas de cómputo que hace unos 50 años nos eran desconocidos
y el poder de las máquinas actualmente es enorme. Baste decir que cualquier teléfono móvil
tiene más poder de cálculo que las computadoras que se usaron para mandar al hombre a la
Luna. Y este poder digital nos ha permitido atacar el ajedrez con las computadoras actuales,
con la intención de satisfacer el acariciado sueño de crear la máquina que juegue con
corrección este difícil juego. Desde finales de los años 1960s se ha intentado crear un
programa de ajedrez que juegue tan bien de manera tal que derrote a los mejores
exponentes del tablero escaqueado. Los esfuerzos han sido sostenidos por muchos años e
incluso Kasparov tendría la oportunidad de jugar dos veces con Deep Blue, la máquina de
IBM dedicada a jugar al ajedrez, quien finalmente venció al campeón mundial humano en
el ritmo de ajedrez clásico.
Pero los avances no se han detenido. Software de ajedrez en los últimos cinco a diez años
juegan probablemente mejor que la sofisticación de Deep Blue (1997), con la diferencia de
que estos programas corren en una computadora casera y cuyo costo por el programa no
rebasa los 100 dólares, a diferencia de los millones de dólares de la máquina de IBM. El
avance de los programas habla del incesante trabajo que el ajedrez mantiene a los
programadores, buscando ser mejor que el campeón del mundo.
Hay que reconocer algunos eventos que fueron un parte aguas en el mundo del ajedrez
computarizado. Uno de ellos fue la famosa apuesta de David Levy, quien en un Congreso
de Inteligencia Artificial retó a los académicos más importantes de la naciente “Inteligencia
Artificial” a crear un programa que le ganase a él un encuentro a seis partidas. Esta historia,
fascinante y divertida por sí misma, fue un poderoso catalizador para que los investigadores
y desarrolladores trabajaran fuertemente una década para intentar así vencer a Levy que en
su momento fuese un fuerte Maestro Internacional.
Y a partir de ahí los avances se fueron dando con regularidad. Cuando llegaron las
computadoras caseras hubo quienes escribieron los primeros programas de ajedrez para
estos procesadores que sí, tenían muchas limitaciones, que solamente podían ser rebasadas
por el ingenio de los propios programadores. Surgieron programas que se hicieron muy
populares, como Sargon, uno de los primeros. Poco tiempo después llegaron otros más y
entonces era claro que el problema se estaba entendiendo mejor y que había mucha más
gente dedicada al desarrollo de este tipo de software. Al mismo tiempo que había más
programas de ajedrez y las mejoras empezaban a verse.
Se organizaron entonces “Campeonatos Mundiales de Programas de Ajedrez”, en donde
nacieron leyendas como Belle, la máquina especializada en ajedrez, con software escrito
6
por uno de los creadores del sistema operativo Unix, Ken Thompson, quien fuese por un
par de años el mejor programa en el mundo. Pero los avance tecnológicos dejaron atrás a
Belle e incluso hubo un programa de ajedrez que usaba el poder del supercómputo (Cray
Blitz), que destronaría precisamente a la máquina de Thompson. Cabe decir que cuando
comenzaron este tipo de justas, algunos grandes maestros humanos veían las partidas y se
reían un poco de la ingenuidad de las computadoras, de los programas y de los
desarrolladores. Sin embargo, un científico pionero en estas lides, Monty Newborn, hizo la
siguiente mención: “Hoy se ríen de nosotros, mañana nos van a venir a consultar”1
. Sus
palabras resultaron proféticas.
Con el tiempo aparecieron programas para las computadoras caseras, como Fritz,
Schredder, HIARCS y Nimzo, entre muchos otros, los cuales ya empezaban a dar batalla a
los grandes maestros y salían ocasionalmente noticias de la derrota de un fuerte jugador
ante un programa en particular. Entonces se organizaron torneos de hombres contra
máquinas. Los primeros encuentros favorecían abultadamente a los grandes maestros pero
esto empezó a cambiar al grado que hoy en día ya no se hacen este tipo de encuentros
ajedrecísticos. Las máquinas jugadoras de ajedrez parecen haber rebasado el nivel de los
seres humanos y por ello se ha perdido el interés en estas justas.
Hoy ya hay programas sorprendentemente fuertes. Houdini, Komodo y Stockfish son los
más importantes que se disputan el honor de ser el mejor programa de computadora. Sin
embargo, en el 2017 salió un nuevo contendiente: AlphaZero, creado por la empresa
DeepMind, subsidiaria de Google, y que a través del nuevo paradigma de las redes
neuronales, le habría ganado a Stockfish una serie de partidas sin perder ninguna.
AlphaZero, además, indicaba que con un mecanismo de aprendizaje de máquinas, el
programa le había permitido en pocos días alcanzar el nivel de súper gran maestro, sin
siquiera tenerle que enseñar al sistema más allá de los movimientos de ajedrez. Entre el
asombro y la duda, AlphaZero parecía haber pasado al siguiente nivel del ajedrez
computarizado, llevándose entre las piernas a los mejores motores de ajedrez creados con
técnicas más convencionales. Sin embargo, las partidas entre Stockfish y AlphaZero
arrojaron algunas suspicacias. El tiempo de reflexión en la partida era de 1 minuto por
jugada, algo irregular en los encuentros entre máquinas. Además, Stockfish no pudo usar su
libro de aperturas para poder jugar los movimientos que se consideran mejor en esta fase
del juego. Por ello hubo quien dudó –y con razón– de AlphaZero y sus logros.
Y apenas a principios de diciembre del 2018, un año después de ese primer anuncio,
DeepMind volvería a ser noticia al mostrar nuevos avances de AlphaZero en donde ahora
anunciaba que este programa había jugado 1000 partidas contra StockFish, ganando 155 y
1
The Grandmaster,Magnus Carlsen and the match that made chess great again, Brin-Jonathan Butler,
Simon & Schuster, 2019, Kindle Edition.
7
perdiendo sólo 6, empatando las demás. En esta ocasión parecen haber desaparecido las
limitaciones impuestas a StockFish el año anterior. El artículo científico reportando los
hallazgos es asombroso por muchas razones2
y una de ellas es que ahora DeepMind dice
tener un sistema que puede aprender a jugar como el más fuerte jugador en ajedrez, Go y
Shogi (una modalidad de ajedrez chino), es decir, el resultado de su trabajo puede
extenderse a otros juegos.
Así pues, este libro trata precisamente del complejo y emocionante mundo del ajedrez por
computadora. Aquí haremos una revisión somera a la historia de las computadoras y el
ajedrez a través de los años. Mencionaremos con cierta profundidad los eventos más
significativos que fueron ocurriendo y lo salpicaremos –valga la expresión– con una serie
de partidas en donde las máquinas mostraron un ingenio inesperado o un nivel que
empezaba a inquietar a los grandes maestros humanos. Desde luego, intentaremos disectar
las virtudes de las jugadas de las máquinas, sus fallos y sus aciertos, y lo que esto podría
significar para nuestro juego.
El ajedrez se ha convertido en una cama de pruebas para muchas tareas en la programación
de computadoras. El tema permite abordar tópicos como optimización, búsquedas
eficientes, soluciones adecuadas cuando no se puede tener una “mejor solución”, etcétera,
los cuales son temas importantes en otros ámbitos como el ruteo de una central telefónica,
por ejemplo. Pero más allá de esto, el ajedrez ha demostrado que tiene mucho por ofrecer y
los seres humanos estamos empeñados en sacarle sus secretos.
Este libro es pues una narración de lo que se ha vivido en el mundo de la programación de
software de ajedrez y con AlphaZero ahora como la implementación aparentemente más
poderosa, bajo un nuevo paradigma, se renuevan las esperanzas de entender mejor las
sutilezas de este obsesivo juego en apenas 64 casillas. Hay pues mucho camino por
recorrer. Comencemos.
La_Morsa
Diciembre 2019
2
https://arxiv.org/pdf/1712.01815.pdf
8
Antecedentes del ajedrez por computadora
9
Introducción
“El ajedrez” –decía Goethe– “es una piedra de toque para la inteligencia” y quizás esto es
uno de los tantos argumentos que podrían justificar la idea de hacer un programa que
juegue al ajedrez. ¿Se podría escribir un programa que jugase como el Campeón del
Mundo? ¿Cuáles serían los pre-requisitos para semejante tarea? ¿Y si se lograra, qué
demostraría? Estas son apenas algunas de las preguntas que surgen al atacar este problema.
El ajedrez es un juego entre dos personas que está bajo los preceptos de un sistema formal y
de hecho es un juego de suma-cero e información perfecta. Esto quiere decir que al ser de
suma-cero, la ventaja de un bando es exactamente la desventaja del rival, por ello la suma
de ambos términos da cero. Y es de información perfecta, porque todo lo que pasa en el
tablero lo pueden ver los jugadores. Otros juegos, por ejemplo, el Póker, aunque es de
suma-cero no es de información perfecta, pues los jugadores no saben las cartas que tienen
los otros participantes.
Así pues, el ajedrez tiene seis elementos diferentes, de los siguientes tipos: Rey (¢), Dama
(£), Torre (¦), Alfil (¥), Caballo (¤) y Peón (§). Cada jugador tiene 16 elementos de los
tipos indicados en una configuración inicial fija y desde ese punto se inicia el juego.
Además, el ajedrez tiene una propiedad, llamada de “Markov”, que significa que no se
necesitan conocer las jugadas anteriores para entender qué hacer en la siguiente jugada. Así
entonces, la siguiente jugada en cualquier posición dada, puede hallarse por inspección y
analizando los posibles movimientos que finalmente dan una explosión combinatoria de
jugadas, la cual se resuelve al analizar esta estructura como un árbol.
Por otra parte, todos los juegos de mesa tienen los conceptos de táctica y estrategia por lo
que la capacidad para jugar al ajedrez requiere de un grado de habilidad mental. Esto hace
que todo jugador tenga que “ver” hacia adelante (en su imaginación), para ver cómo
quedarían las piezas en el tablero después de una serie de movimientos. Y lo interesante de
todo esto es que una computadora puede seguir estos procesos en su memoria, siguiendo las
reglas del movimiento de las piezas y de cuando el sistema llega a posiciones que pueden
ser, ganadoras o perdedoras para uno de los bandos, o incluso, de una igualdad que lleve al
empate.
Por ende, es claro que el ajedrez puede ser analizado y programado por las computadoras
como un sistema formal, el cual es un sistema de reglas que no requieren una interpretación
adicional a las mismas. Y esta fue la pregunta a resolver cuando el cómputo inició
formalmente después de la Segunda Guerra Mundial, en los años 1950s en adelante:
¿Pueden las computadoras jugar este fascinante pasatiempo mental? ¿Pueden jugarlo tan
bien como los seres humanos?
10
El primer “autómata”: El Turco de Kempelen
La historia del ajedrez por computadora tiene más de cincuenta años de existencia. La idea
de crear una máquina que pudiese realizar algo tan sofisticado y complejo, como el jugar al
ajedrez, es incluso más antiguo que las propias computadoras. Wolfgang von Kempelen
(1734 – 1804) fue quizás el primero que decidió crear un autómata que jugara al ajedrez.
Kempelen era un buen ajedrecista y fue el diseñador y constructor del Turco 3
, que consistía
en la figura de una persona (del torso hacia la cabeza), que jugaba ajedrez en su propio
tablero y piezas, que estaba sobre un escritorio. Kempelen decidió hacer una serie de
demostraciones públicas en donde el Turco jugaba estupendamente bien. El inventor
entonces abría las puertas del escritorio en donde se podían ver engranes que
supuestamente daban la capacidad ajedrecística al muñeco con turbante.
Kempelen mostró por vez primera al Turco en la corte de la Emperatriz de Austria María
Teresa (1770), y poco tiempo después realizó una gira por Europa que duró varios años. El
Turco “jugó” en París en donde dicen, venció a Benjamín Franklin y en otra partida contra
Napoleón Bonaparte, quien hiciese una jugada ilegal y el Turco respondió tirando todas las
piezas del tablero 4
, pero esto podría no ser cierto y más bien sería parte del anecdotario,
muchas veces incompleto o incluso apócrifo.
En 1789 Freiherr Joseph Friedrich zu Racknitz 5
construyó un duplicado de El Turco y
escribió un libro mostrando su posible funcionamiento. Racknitz llegó a la conclusión que
debía haber un enano o alguien de corta estatura dentro del mueble. Cabe destacar que las
medidas del Turco de Racknitz eran diferentes a las del Turco original. Aún así llegó a la
conclusión correcta. Y sí, todo era un gran fraude. El Turco no era un autómata sino un
títere operado por una persona que se escondía en el mueble de madera. Se dice que hubo al
menos 15 ajedrecistas que jugaron dentro del mecanismo, el cual permitía al ser humano
escondido no sólo ver dónde estaban las piezas en el tablero, sino además, poder mover el
brazo del maniquí para realizar la jugada en su oportunidad 6
.
3
, The Turk -The Life and Times of the Famous Eighteen-Century Chess Playing Machine, Tom
Standage, Ed. Walter & Company, NY 2002
4
https://es.wikipedia.org/wiki/El_Turco
5
Joseph Friedrich Freyherr zu Racknitz. Ueber den Schachspieler des Herrn von Kempelen und dessen
Nachbildung. Mit sieben Kupfertafeln. Leipzig und Dresden, 1789.
6
https://es.wikipedia.org/wiki/El_Turco
11
Una imagen de cómo era el Turco de Kempelen 7
El Turco fue donado al Museo Peale de Filadelfia. En el año 1854 fue destruido por las
llamas en un incendio.
Kempelen fue una especie de mago y animador de una ilusión, la de tener una máquina que
podía jugar al ajedrez. Su truco era un fraude sí, pero sin duda hizo que mucha gente
pensara en la posibilidad de crear una verdadera máquina que pudiese realizar una actividad
que siempre se ha considerado un ejemplo de inteligencia: el jugar ajedrez.
Se registra una partida del Turco, jugada contra Napoleón, aunque bien todo esto podría ser
apócrifo 8
:
Napoleón Bonaparte - The Turk (Automaton) [C20]
Schoenbrunn, 1809
1.e4 en esta partida el Turco era operado –presumiblemente– por el ajedrecista Johann
Allgaier 9
. 1...e5 2.£f3 ¤c6 3.¥c4 ¤f6 4.¤e2 ¥c5 5.a3 d6 6.0–0 ¥g4 7.£d3 ¤h5 8.h3
¥xe2 9.£xe2 ¤f4 10.£e1 ¤d4 11.¥b3
7
Imagen cortesía de
https://es.wikipedia.org/wiki/El_Turco#/media/Archivo:Tuerkischer_schachspieler_windisch4.jpg
8
http://www.chessgames.com/perl/chessgame?gid=1250610
12
XABCDEFGHY
8r+-wqk+-tr(
7zppzp-+pzpp'
6-+-zp-+-+&
5+-vl-zp-+-%
4-+-snPsn-+$
3zPL+-+-+P#
2-zPPzP-zPP+"
1tRNvL-wQRmK-!
xabcdefghy
11...¤xh3+ 12.¢h2 el caballo es intocable por el doble jaque en f3. £h4 13.g3 ¤f3+
14.¢g2 ¤xe1+ 15.¦xe1 £g4 16.d3 ¥xf2 17.¦h1 £xg3+ 18.¢f1 ¥d4 19.¢e2 £g2+
20.¢d1 £xh1+ 21.¢d2 £g2+ 22.¢e1 ¤g1 23.¤c3 ¥xc3+ 24.bxc3 £e2# 0–1
9
Johann Baptist Allguier (1763-1823) fue un maestro de ajedrez germano/austriaco. Fue el autor del primer
libro de ajedrez en alemán: Neue theoretisch-praktische Anweisung zum Schachspiel (Vienna 1795–96)
(https://en.wikipedia.org/wiki/Johann_Baptist_Allgaier).
13
La máquina de Torres Quevedo y su receta para ganar el final Rey y Torre vs. Rey
“El Ajedrecista” fue un autómata construido en 1912 por el ingeniero Leonardo Torres
Quevedo (1852-1936). Se presentó por vez primera en la Feria de París de 1914, donde
generó gran expectativa e incluso se mencionó en su momento en la revista Scientific
American Supplement con el encabezado: “Torres and His Remarkable Automatic Device”
(“Torres y su extraordinario dispositivo automático”) (6 de noviembre de 1915). La
máquina podría jugar con éxito el final de Rey y Torre contra Rey, y se considera el primer
autómata real que pudo jugar posiciones de ajedrez 10
.
En este caso, al contrario del Turco de Von Kempelen –que era un fraude – 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.
El mecanismo del autómata de Torres Quevedo lo describió H. Vigneron en Le Nature
(1914). Torres Quevedo usaba electroimanes bajo el tablero de ajedrez y jugaba
automáticamente el final descrito teniendo como rival a un jugador humano. No jugaba de
manera muy precisa y no siempre llegaba al mate en el número mínimo de jugadas a causa
del algoritmo usado, pero lograba la victoria en todas las ocasiones. Claramente no estaba
optimizado pero la idea de tener una máquina que jugase este final básico, ya de por sí era
una idea muy atractiva.
La máquina de Torres Quevedo 11
10
https://es.wikipedia.org/wiki/El_Ajedrecista
11
Imagen cortesía de https://ugc.kn3.net/i/760x/http://cyberneticzoo.com/wp-content/uploads/torresquevedo2-
500x409-x640.jpg
14
¿Cómo será el algoritmo de este inventor español para ganar este final? Está
afortunadamente descrito en el siguiente libro: Chess and Machine Intuition, de George
W. Atkinson 12
. He aquí el algoritmo de Leonardo Torres Quevedo según el apéndice del
libro mencionado:
Torres Quevedo mostrando su autómata a Norbert Wiener 13
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 (quitándole 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
12
Chess and Machine Intuition, George W. Atkinson, Intellect Books 1998
13
Imagen cortesía de https://ugc.kn3.net/i/760x/http://cyberneticzoo.com/wp-
content/uploads/Torres%20y%20Quevedo%20&%20Norbert%20Weiner-x640.jpg
15
then mueve el RB horizontalmente hacia el RN {manteniendo la oposición}
else da jaque moviendo la torre una fila {si es la primera fila entonces
es mate} 14
Si el RN está en a6, con las mejores tácticas dilatorias, el mate puede tardar, con este
algoritmo, unas 61 jugadas.
Desde luego, el poder jugar el final de Rey y Torre vs Rey, el cual es un final relativamente
simple, demuestra que en principio podría hacerse una autómata que jugara el juego
completo del ajedrez. El esfuerzo de Torres Quevedo para crear un robot que moviese las
piezas, y todo un mecanismo ingenieril para poder jugar correcta (aunque no
eficientemente), es sin duda, un gran logro.
Las ideas estaban planteadas pero no había tecnología para poder tratar de demostrarlas.
Hubo que esperar muchos años hasta que la computadora se convirtiera en una realidad. No
obstante esto, hubo grandes pioneros del tema, entre los que destacan Alan Turing y Claude
Shannon. Revisaremos lo que ambos hicieron.
14
Se ha intentado mantener las palabras claves como if, then, elseif, etcétera, como si se tratara de un lenguaje
descriptivo de programación.
16
El ajedrez atacado desde la perspectiva de la ciencia
17
Un artículo fundamental de Turing
Más allá del Turco, el sueño de tener un autómata que juegue al ajedrez seguía presente en
el imaginario colectivo, y el ajedrez pudo entonces pensar en automatizarse cuando
apareció la computadora, accesible realmente después de la Segunda Guerra Mundial. La
nueva máquina se convirtió en una nueva metáfora: “la máquina como un cerebro” y no
como digamos, un reloj o una licuadora.
Alan Turing es reconocido como el padre de la informática. Sus esfuerzos más importantes
los realizó al descifrar el código de la máquina Enigma Nazi 15
y así poder saber los planes
de los alemanes en la Segunda Guerra Mundial. Probablemente su contribución en el
campo de la criptografía logró que la guerra se acortara un par de años.
Alan Turing 16
Pero más allá de eso, Turing (1912 – 1954), escribió un importante artículo 17
, en donde
plantea la pregunta si una computadora puede pensar. Pero aún va más lejos y habla de
cómo podría escribirse un programa que jugase al ajedrez. De hecho, describió un
algoritmo de un eventual programa al que llamó TuroChamp. Cabe decir que no existían
máquinas capaces de poder ser programadas para esta tarea, por lo que su programa
15
https://blogs.elpais.com/turing/2013/06/alan-turing-el-descifrado-de-la-maquina-enigma.html
16
Imagen cortesía de https://www.eluniversal.com.mx/sites/default/files/styles/f03-
651x400/public/2017/08/27/alan_turing.jpg?itok=hXWHhib_
17
http://archive.Computerhistory.org/projects/chess/related_materials/text/2-0%20and%202-
1.Computing_machinery_and_intelligence.turing/2-0%20and%202-
1.Computing_machinery_and_intelligence.turing-alan.mind-59.1950.062303001.pdf
18
ejecutaba el algoritmo, instrucción por instrucción de manera humana, actuando como una
especie de “procesador central humano” y siguiendo las instrucciones planteadas, una por
una en papel. Este proceso podía llevarle al operador del “programa” media hora por
jugada. Se conoce una sola partida jugada con esta “computadora de papel”, en donde la
“máquina” perdió contra un colega de Turing. De hecho, en las conclusiones de la partida,
Turing indica que su programa juega muy mal.
Alan Turing, en su artículo de 1953 comienza planteando la siguiente pregunta: ¿Puede una
máquina jugar al ajedrez? y aclara entonces:
a) ¿Puede una máquina obedecer las reglas del ajedrez, por ejemplo, una que haga
movimientos legales al azar o bien, que pueda decirnos si una jugada es legal o no?
b) ¿Puede una máquina resolver problemas de ajedrez, por ejemplo, decir si una
posición lleva al mate forzado por parte de las blancas en los siguientes tres
movimientos?
c) ¿Puede una máquina jugar un nivel razonable de ajedrez, es decir, dada una
posición (no inusual) en el tablero, después de dos o tres minutos de cálculos,
podría hacer una jugada legal razonablemente buena?
d) ¿Puede una máquina no sólo jugar al ajedrez, sino además, mejorar su juego a partir
de la experiencia adquirida en partidas pasadas?
Esto lleva entonces a Turing a preguntarse (e) ¿Puede hacerse una máquina que pudiese
contestar preguntas de los seres humanos en donde las respuestas de la máquina fuesen
indistinguibles de las que pueden contestar las personas? Y va más allá: (f) ¿Pueden las
máquinas tener sentimientos como los que tenemos los seres humanos?
De hecho, da la impresión que Turing en este artículo presenta un bosquejo de lo que más
adelante se llamaría la prueba de Turing, en su honor, desde luego. Sin embargo, aquí nos
interesa es de alguna manera ver el artículo de Turing en su contexto. Por ejemplo, a las
preguntas (a) y (b), Turing indica que “Ciertamente puede hacerse. Si no se ha hecho es que
hay mejores cosas que hacer”. La pregunta (c) es aún más interesante en la respuesta del
famoso matemático, porque indica: “Seguramente sí, pero para tener un nivel estándar de
juego se requiere que exista una máquina más compleja y más ingeniosa que el propio
diseñador”.
Para la pregunta (d) y (e), Turing se da cuenta ya que el aprendizaje de las máquinas es un
problema que ni siquiera era atacable en su momento e indica: “Creo que es posible [hacer
que una máquina que aprenda de partidas pasadas], o que pueda contestar de forma que sea
indistinguible la respuesta para un ser humano, si se trata de una máquina quien responde o
de otro ser humano. En la última pregunta, la (f), se muestra escéptico porque indica, “No
lo sé y no puedo estar seguro de que tú sientes lo mismo que yo”.
19
Como puede verse, Turing ya tenía en su mente una serie de cuestionamientos que sin duda
eran la marca de los pioneros, porque en ese entonces las computadoras apenas y
empezaban su existencia. Cualquier teléfono moderno tiene millones de veces más
capacidad que las máquinas que Turing pudo usar en su momento. Hoy incluso podrían
parecernos argumentos un poco ingenuos, pero en 1953 el mundo era sin duda diferente.
Para definir la posibilidad de hacer un programa que juegue al ajedrez, Alan Turing hace
algunas suposiciones como por ejemplo, que la máquina que ha de ser programada tenga
los suficientes recursos de almacenamiento, por ejemplo. Lo importante, sin embargo, es
que el matemático indica: “Si uno puede explicarle [en inglés], con la ayuda de símbolos
matemáticos –si esto es requerido– cómo un cálculo debe hacerse, es siempre posible
entonces programar una computadora digital que haga esos cálculos, por supuesto, teniendo
la capacidad de almacenamiento adecuada”.
Turing plantea que para simplificar el problema, asumamos que la máquina puede ser
programada y que además, juega con las piezas blancas. Si la máquina tuviese una cantidad
de memoria ilimitada y una velocidad infinita, una regla comparativa simple sería
suficiente pues daría un resultado en el sentido de que no pudiese mejorarse. Tal regla
podría expresarse así: “Considérese cada continuación posible desde una posición dada.
Hay solamente un número finito de movimientos posibles. Se puede trabajar desde el final
de cada una de estas continuaciones, marcando una posición en donde juegan las blancas y
“ganan”. Si esto no ocurre, podríamos marcar posiciones donde se dé el empate, las
“tablas” y si esto no ocurre, tendríamos que marcar cada posición final como “perdida”
para el bando blanco. Esto mismo podemos hacerlo para las piezas negras”, indica Turing.
De hecho, en el párrafo anterior ya Turing vislumbra la necesidad de un algoritmo que no
es más que el Minimax, el cual es parte de la Teoría de Juegos, ciencia estudiada por John
von Neumann 18
. Sin embargo, Turing se da cuenta que no puede, de ninguna manera,
abarcar todas las posibilidades del ajedrez las cuales se conocen como el “número de
Shannon”, el cual indica que el número posible de partidas es de 10120
, mucho más que la
cantidad de átomos, que se presume, hay en el Universo conocido. Por ello, piensa que en
un análisis de todas las posibles variaciones de una posición dada, debe haber una especie
de función de evaluación que puede decidir sobre la bondad de una jugada en particular. De
alguna manera Turing entiende que el análisis debe detenerse en algún momento, lo que
convierte a su función de evaluación en una heurística, en algo así como una regla que
funciona la mayoría de las ocasiones.
18
Theory of Games and Economic Behavior, Morgenstern, Oskar y John von Neumann, Princeton
University Press, 1947
20
Entonces, después de esta discusión, procede a definir cómo podría bosquejarse un
programa que jugase al ajedrez. Para ello toma el valor conocido de cada pieza, en donde la
tabla siguiente es conocida por cualquier ajedrecista. Las piezas valen numéricamente de la
siguiente manera:
 § = 1
 ¤ = 3
 ¥ = 3.5
 ¦ = 5
 £ = 10
 jaque mate = 1000
Entonces, una primera función elemental podría describirse como la suma total de las
fuerzas blancas entre la fuerza total de la suma de las piezas negras, es decir, la razón W/B,
donde W son las blancas y B son las negras. Turing considera que este valor es mejor que W
– B, pues éste último no incita a los cambios de piezas cuando un bando tiene la ventaja
material. Sin duda que es una primera aproximación a una función de evaluación, muy
simple pero sin duda bien podría ser parte de una función mucho más elaborada.
Turing plantea entonces los siguientes elementos, los cuales son un conjunto particular de
reglas que podrían escribirse inequívocamente dentro de un programa de computadora. Se
sobreentiende que la máquina lleva blancas y que le toca jugar. A esto Turing lo define
como “la posición en el tablero” y las posiciones que surjan de ella se denominan
“posiciones en el análisis”.
El primer tópico es el de los movimientos “a considerar”. Estos movimientos significan
aquellos que van a ser considerados por el programa. Si por ejemplo, una captura es de
consideración, entonces la recaptura también lo es. La captura de una pieza no defendida
tiene un valor más alto que la que está defendida. Un movimiento que da mate es sin duda
una jugada a considerar. A partir de esto, otro precepto es el de las posiciones “muertas”, es
decir, cuando no hay movimientos a considerar. Por ejemplo, cuando en la posición actual,
después de un par de movimientos hacia adelante no hay captura, recaptura o jaque mate.
Esto es, cuando en una profundidad de unos 5 ply o plies (1 ply es un movimiento y 2 ply
(o plies) es una jugada, del blanco con la correspondiente respuesta del negro).
Turing entonces llega a la parte medular, que de hecho es la que 65 años después aún se
discute, y es el valor de la posición. Por ejemplo, el valor de una posición muerta se obtiene
añadiendo el valor de las piezas que están en el tablero y formando la razón W/B 19
. En
otras posiciones, donde juega el blanco, el valor es el máximo valor posible de acuerdo a
19
Del original del inglés en donde W son las blancas (white) y B son las negras (black).
21
los movimientos a considerar 20
. En caso de no hallar un máximo, entonces hablamos de
una posición muerta. Desde luego, este proceso se aplica también cuando el negro es quien
juega primero en la posición dada inicialmente.
Es claro que Turing entendía bastante de ajedrez y entonces define la contribución de cada
pieza a la posición. El matemático define las cosas de la siguiente manera:
Para la cuenta de £, ¦, ¥ y ¤:
a) La raíz cuadrada del número de jugadas que cada pieza puede hacer desde esa
posición, contando la captura como dos movimientos, y no olvidando que el rey no
debe quedar en jaque.
b) (Si no es una £), 1.0 si la pieza está defendida y 0.5 adicional si está doblemente
defendida.
c) Con respecto al ¢:
d) Para jugadas diferentes al enroque, como más arriba.
e) Es necesario hacer un balance sobre la vulnerabilidad del rey y de hecho, este es
uno de los principios del análisis posicional del primer Campeón Mundial, Steinitz.
Para ello, Turing dice que se puede hacer asumiendo que se sustituye al ¢ por la £
en la misma casilla y se estima la raíz cuadrada de esos movimientos, pero restando
en lugar de ir añadiendo valores al conteo.
f) 1.0 por la posibilidad de enrocarse y 1.0 adicional si el enroque puede realizarse en
la siguiente jugada. Otro punto extra por el desarrollo del enroque.
g) 0.2 por cada fila avanzada.
h) 0.3 por tener una pieza defendida por otra (que no sea un §).
i) Con respecto al ¢ negro:
j) 1.0 por la amenaza de jaque mate.
k) 0.5 por el jaque al rey.
Con todo esto, Turing entonces define la regla para hacer un movimiento: “La jugada
elegida debe tener el mayor valor posible y consistente con esto, el mayor valor del juego
en la posición”. Si hay más de una jugada que cumpliese con este criterio, Turing decide
por azar la mejor jugada, o quizás, dando una condición inicial arbitraria. Cabe decir que en
esta idea para elegir una jugada no hay análisis para evaluar la posición, lo cual tiene como
20
Pareciera que lo que quiere decir Turing es que si, por ejemplo, las blancas tienen una cuenta material de 15
y las negras de 14, entonces el cociente 15/14 (=1.0714) es mejor que 15–14 (=1), pues si cambiamos piezas,
entonces la ventaja se incrementa. En este mismo ejemplo, si intercambiásemos dos torres por dama,
tendríamos que el cociente es 10/9 (= 1.111) mientras que 10–9 (=1). Digamos que el cociente es el
comentario de Capablanca (quien fuese campeón del mundo), traducido a las matemáticas: “Para incrementar
la ventaja, quítese toda la hojarazca de la posición”.
22
argumento el reducir el trabajo que se ha hecho en decidir la jugada. En alguna medida esto
podría denominarse un análisis estático de la posición.
Con todo esto a la mano, Turing decidió poner su idea a prueba. La siguiente partida es
probablemente la primera que jugara un programa, aunque éste no se programó en una
computadora real, sino que el propio Turing la hacía de “procesador central”, haciendo los
cálculos correspondientes para decidir las jugadas del programa, que se llamo
“TuroChamp”.
Alan Turing (TuroChamp) - Alick Glennie
Juego amistoso, Manchester, Inglaterra, 1952
1.e4 e5 2.¤c3 ¤f6 3.d4 ¥b4 4.¤f3 d6 5.¥d2 ¤c6 6.d5 ¤d4 7.h4 ¥g4 8.a4 ¤xf3+ 9.gxf3
¥h5 10.¥b5+ c6 11.dxc6 0–0 12.cxb7 ¦b8 13.¥a6 £a5 14.£e2 ¤d7 15.¦g1 ¤c5 16.¦g5
¥g6 17.¥b5 ¤xb7 18.0–0–0 ¤c5 19.¥c6 ¦fc8 20.¥d5 ¥xc3 21.¥xc3 £xa4 22.¢d2 ¤e6
23.¦g4 ¤d4 24.£d3 ¤b5 25.¥b3 £a6 26. ¥c4 ¥h5 27.¦g3 £a4 28.¥xb5 £xb5
29.£xd6 ¦d8 0–1
Cabe decir que el propio Turing critica fuertemente su programa. Dice que no tiene ninguna
protección, es indefendible, contra las horquillas, que es cuando un peón ataca dos piezas.
Sin embargo, indica, el programa puede ver otro tipo de combinaciones. No parece ser
difícil, dice el científico, el poder realizar mejoras sustanciales para por ejemplo, evitar los
dobles ataques a dos piezas por parte de un peón. Curiosamente indica que este tipo de
posibles mejoras puede servir en el medio juego pero probablemente no en el final, lo que
indica que Turing entendía más ajedrez que el que demostró con TuroChamp.
Turing resume el asunto describiendo su programa con las siguientes palabras: “una
caricatura de mi propio juego, el cual se basa en un análisis introspectivo de mis procesos
de pensamiento al jugar ajedrez”. Suponer que esto implica que no se puede programar una
máquina para jugar ajedrez que juegue mejor que el creador del sistema es equivalente a
decir que un animal menos pesado no puede comerse a un animal más pesado. Esto, desde
luego –Turing lo indica– es falso y su argumentación es tan cierta que los programas más
fuertes actualmente son mucho mejores que sus creadores.
100 años después del nacimiento de Alan Turing, en el año 2012, la empresa alemana de
productos de ajedrez informáticos, Chessbase, escribió un motor de ajedrez, un programa
que pudiese jugar como Turing había visualizado lo haría 21
. Los programadores del motor
Turing tuvieron que definir algunas cosas en su programa que el propio matemático dejó
sin explicar. El programa se presentó como parte de los homenajes que se hicieron a Alan
21
http://en.chessbase.com/post/alan-turing-plays-garry-kasparov-at-che-58-years-after-his-death
23
Turing (a 100 años de su nacimiento), en 2012 y logró enfrentar al mejor jugador de todos
los tiempos, Garry Kasparov, con una versión moderna de lo que hubiese sido el programa
de ajedrez planteado por Turing. El video de dicho acontecimiento puede verse en
YouTube 22
.
La partida jugada entre Kasparov y el hipotético motor de ajedrez de Turing fue la
siguiente:
Kasparov (con Frederik Friedel), en el centenario de Alan Turing 23
Turing (Chessbase) - Kasparov,Garry
Manchester, 2 Ply, Hamburg, 25.06.2012
Las valoraciones son posicionales y no por el material en el tablero. Desde luego que este
“motor de ajedrez” es meramente experimental, tratando de probar la tesis de Turing.
1.e3 [-4.40/6] ¤f6 [3.00/6] 2.¤c3 [-3.30/6] d5 [1.80/5] 3.¤h3 [-2.60/5] e5 [1.70/4]
4.£f3 [-2.50/4] ¤c6 [1.10/4] 5.¥d3?? [A dos ply de profundidad, el motor no puede ver la
horquilla. 0.10/4][con cinco ply juega 5.a4] 5...e4 [-0.20/4] 6.¥xe4 [-2.00/4] dxe4 [-
1.00/4]7.¤xe4 [-1.50/4] ¥e7 [1.10/5] 8.¤g3 [-2.30/4] 0–0 [1.70/4] 9.0–0 [-2.20/4] ¥g4
[-0.10/4] 10.£f4 [-1.50/4] ¥d6 [0.90/4] 11.£c4 [-2.00/4] ¥xh3 [0.20/4] 12.gxh3 [-
2.40/4] £d7 [-0.30/4]13.h4 [-1.10/4] £h3 [0.10/4] 14.b3? [-0.60/4][Con 5 ply de
profundidad, el motor de Turing juega 14.f3 previniendo la siguiente jugada del negro.]
14...¤g4 [-0.70/4] 15.¦e1 [Permite mate en dos. -#2/4][De nuevo, a 5 plies la máquina
previene el mate jugando 15. £xg4] 15...£xh2+ [-#1/6] 16.¢f1 [-#1/4] £xf2# 0–1
22
https://youtu.be/wrxdWkjmhKg
23
Imagen cortesía de http://Chessbase.com
24
Las ideas de Claude Shannon sobre el ajedrez
Pero antes del artículo de Turing, llegaría el de Claude Shannon (1949) 24
(1916-2001),
ingeniero eléctrico e investigador del MIT y desde 1941, en los Laboratorios Bell. Es uno
de los pioneros de la teoría de la información. Su texto habla de cómo hacer para que una
computadora pueda jugar al ajedrez. Describe lo que una máquina debería hacer para jugar
una partida razonable. Ahí Shannon plantea el procedimiento Minimax, el cual se basa en
una función de evaluación de la computadora, la cual permite a la máquina decidir qué
jugada hacer de acuerdo con diversos factores.
Claude Shannon 25
La propuesta de Shannon debe considerarse visionaria, pues de alguna manera dio con los
puntos más importantes que debería tener un programa de ajedrez. Su función de
evaluación proponía una serie de características que veremos un poco más adelante.
El artículo de Shannon, a diferencia del de Turing, que de hecho es poco preciso, plantea
los elementos fundamentales para hacer una máquina que pueda jugar al ajedrez y es tan
importante que probablemente la mayoría de los programas en la actualidad funcionan
como Shannon planteó el problema y su posible solución en programación.
En 1951 el Dr. Dietrich Prinz escribió un programa para la computadora Ferranti de
Manchester 26
. El programa seguía las indicaciones del artículo de Shannon y hacía una
búsqueda exhaustiva de 3 plies, es decir, jugada y media (donde una jugada son dos
24
Programming a Computer for Playing Chess, Claude E. Shannon, Philosophical Magazine, Ser. 7, Vol.
41, No. 314, Marzo 1950
25
Imagen cortesía de
https://ep01.epimg.net/elpais/imagenes/2016/04/30/ciencia/1461969990_765784_1461973730_noticia_norm
al_recorte1.jpg
26
https://en.wikipedia.org/wiki/Dietrich_Prinz
25
movimientos, el de blancas y de negras). El programa podía resolver mates en dos jugadas
sin dificultad. Este programa solamente demostró la viabilidad de la idea de Shannon pero
no contribuyó significativamente al desarrollo de los siguientes programas de ajedrez.
Sin embargo, el artículo de Shannon, aunque no lo probó y ni siquiera hizo una simulación
como habría hecho Turing con su “TuroChamp”, es muy importante, porque bosquejó una
función de evaluación, lo cual de nuevo, es visionario en muchos sentidos, para así lograr
que un programa decidiese qué jugada habría que hacer (a partir de una fórmula numérica).
Es claro además que Shannon entendía bastante de ajedrez. La función que habría que
elegir debería tomar en cuenta los siguientes factores 27
:
 Ventaja material
 Estructura de peones
 Peones aislados y retrasados.
 Control del centro.
 Peones en color opuesto al alfil propio.
 Peones pasados
 Posición de las piezas
 Caballos avanzados, protegidos o atacados
 Torres en columnas abiertas o semiabiertas
 Torres en séptima fila
 Torres dobladas
 Posibilidades de ataque
 Piezas que protegen a otras piezas
 Ataques sobre otras piezas
 Ataques sobre casillas adyacentes al rey enemigo
 Clavadas
 Movilidad, medida por el número de movimientos legales posibles.
Shannon también describió dos tipos de estrategias a considerar. La primera, que llamó
“Tipo A”, era el buscar variantes con una profundidad límite a lo largo de cada rama del
árbol generado con todas las posibles jugadas y respuestas. La decisión de qué jugada hacer
se encargaba el algoritmo “Minimax”. La otra estrategia, llamada “Tipo B”, tenía una
manera de hacer una búsqueda selectiva dependiendo de ciertos criterios para analizar una
variante más profundamente que otras.
Shannon es notable en muchos sentidos, porque él mismo indica que su estrategia tipo A
tiene al menos tres desventajas:
27
How Computers Play Chess, David Levy y Monty Newborn, ISHI Press 1991
26
 El crecimiento exponencial de las variantes. Normalmente el ramaje de cada jugada
es de 30 posibilidades, en promedio, lo cual hace que una jugada de cada bando
llegue a unas 900 o más nodos terminales que deben ser evaluados. Si cada rama del
árbol se evalúa en 1 microsegundo, el programa eventualmente tardaría unos 16
minutos por cada movimiento. Cabe sin embargo decir que Shannon no podía haber
previsto la velocidad del desarrollo tecnológico. Por ejemplo, la máquina Deep Blue
de IBM podía analizar unos 200 millones de movimientos por segundo.
 Shannon también demuestra que entendía de ajedrez indicando que los jugadores
humanos muchas veces discriminan líneas poco prometedoras y que en otras pueden
profundizar –en algunos casos– hasta 10 jugadas adelante (20 plies). Esta es la
búsqueda selectiva tipo B que no se contempla en la estrategia tipo A.
 Finalmente, hay posiciones que llamó “inestables”, donde hay cambios de piezas
masivos o secuencias continuas de jaques.
Por ello, propuso dar “estabilidad” a las posiciones proponiendo examinar primero, las
variantes forzadas lo más profundamente posible, además seleccionar mediante algún
proceso las variantes importantes que habría que analizar, evitando perder el tiempo en
jugadas poco prometedoras o inútiles. Esto es lo que en alguna medida hacen los seres
humanos. El segundo criterio se puede establecer en el algoritmo alpha-beta, el cual
empezó a usarse después de los años sesenta, en donde se descubrió que efectivamente era
una mejora con respecto al Minimax para no perder tiempo en líneas de poca utilidad o que
prometían poco.
27
Intentos de un programa de ajedrez que analice como los seres humanos
Ya en un contexto más moderno, en 1973, Albert Zobrist y Frederic Carlson 28
son
probablemente los primeros investigadores que intentaron un nuevo enfoque a la creación
de un programa de ajedrez. De hecho, en términos generales, todos los programas
anteriores a éste se habían escrito siguiendo los lineamientos que Claude Shannon esbozó
en su famoso artículo para escribir un programa que pudiese jugar al ajedrez 29
.
La idea de Zobrist y Carlson se basa en el reconocimiento estructural de patrones y lo
aplica al juego de ajedrez. La estructura del juego puede considerarse de enorme
complejidad y sin embargo, los seres humanos se saben guiar en este sistema con bastante
éxito. Aparentemente los seres humanos reconocen posiciones similares y se familiarizan
con estas. Así pues, el ajedrez parece ser un caso ideal en el reconocimiento de patrones
estructurales.
Zobrist y Carlson plantearon la posibilidad de comunicar el conocimiento del ajedrecista en
términos de un lenguaje, el cual debería tener cuatro requerimientos básicos:
1. El lenguaje debe ser lo suficientemente poderoso para la descripción de las
estrategias ajedrecísticas.
2. Debe ser un lenguaje lo suficientemente simple o sencillo para que los ajedrecistas
puedan entenderlo a pesar de no tener conocimientos de programación.
3. El lenguaje debe poder dar consejos sobre las jugadas que hay que hacer
4. El lenguaje debe poderse implementar en una computadora.
Zobrist y Carlson trabajan con una serie de primitivas y su sintaxis, es decir, las palabras
del lenguaje y su gramática. Entre las primitivas se encuentran: las piezas del ajedrez (12
diferentes piezas, seis blancas y seis negras), las 64 casillas del tablero, el número de
movimientos realizados, el número de peones que tiene cada bando en todo momento así
como saber la posibilidad de enrocar de ambos bandos.
La sintaxis del lenguaje permite describir una combinación de las primitivas. Zobrist y
Carlson definen el término “patrón” como las instrucciones que describen la posición
general de las piezas, que ocurren frecuentemente en el juego de ajedrez entre seres
humanos. A una configuración particular de esto se le denomina “instancia”. Zobrist y
Carlson entonces implementan una rutina que puede buscar en una posición todas las
28
An Advice-Taking Chess Program, Albert L. Zobrist y Frederic R. Carlson Jr., Scientific American, Junio
1973
29
Programming a Computer for Playing Chess, Claude E. Shannon, Philosophical Magazine, Ser. 7, Vol.
41, No. 314, Marzo 1950
28
instancias de los patrones y grabarlos internamente. A esto le llaman “snapshot”
(instantánea).
La rutina que usa Zobrist/Carlson se define en estos términos:
 Un vector con 50 valores que contienen enteros, entre los que están el número de
jugadas, la jugada actual, si alguno de los bandos se puede enrocar (corto o largo),
la suma del valor total de las piezas propias, la suma total de las piezas del
oponente, la cantidad de peones del primer bando, la cantidad de peones del
segundo bando, etcétera.
 28 arreglos de 8x8 enteros, en donde cada arreglo cumple con una función diferente,
por ejemplo, el número de piezas blancas que atacan una casilla, el valor inverso de
una pieza (el peón vale en este caso más que las demás piezas), la posición de las
casillas débiles (agujeros), dejados en la conformación de peones, la estructura de
peones, etcétera.
Un patrón puede ser entonces aquel que detecta todas las instancias en que las piezas
blancas atacan a las piezas negras (o que pueden moverse para atacar a las piezas negras).
En este caso el propio patrón hace uno o dos movimientos, una especie de “lookahead” (ver
hacia adelante en la posición).
Zobrist/Carlson definen 45 patrones que reconocen hasta 3000 instancias para una posición
dada y cada instancia tiene su propio peso. Por ejemplo, una pieza –una torre– que ataca
una dama, tiene más peso que una dama que ataca a una torre. La diferencia entre el valor
de las piezas es importante aquí30
.
El procedimiento se hace en tres pasos:
1. Definir la posición
2. Aplicar patrones
3. Lookahead, evaluación y minimax
Cabe señalar que el tercer elemento es exactamente lo que hacen los programas de ajedrez
tradicionales. Sin embargo, la diferencia contra las técnicas usuales son los primeros dos
pasos.
30
El valor de las piezas se toma en cuenta a partir del valor del peón, al cual se le asigna la unidad. Así, la £
(dama) vale 9 peones; ¦ (torre) 5; ¥ (alfil) 3.5 peones; ¤ (caballo) 3 peones y §(peón) la unidad. El ¢ (rey)
no tiene valor (o se le asigna un valor muy alto, digamos 1000), porque sin rey no hay juego de ajedrez
posible.
29
La idea de Zobrist/Carlson es de los años setenta del siglo pasado 31
y evidentemente la
capacidad de los equipos de cómputo era mucho más limitada de lo que podemos tener
ahora. Por ende, lo que aquí haremos será intentar reproducir las ideas de Zobrist pero en el
contexto moderno.
En ajedrez los temas se repiten. El patrón es el mismo incluso cuando la posición no lo
parece. Si uno ve decenas de situaciones parecidas, si se le presentan en la práctica, es
seguro que hallará la combinación ganadora. En muchos sentidos el ajedrez es búsqueda de
patrones conocidos.
La pregunta es cómo caracterizar esas posiciones. Zobrist/Carlson lo hacen definiendo estas
instancias en un vector de valores y 28 arreglos de 8x8 enteros 32
, en donde muestran
diferentes situaciones de las piezas, qué atacan, qué defienden, hacia dónde pueden ir,
etcétera.
Esto no parece ser necesario hacerlo. Hoy en día podríamos definir un patrón como una
serie de instancias mucho más cercanas al lenguaje coloquial, al que hablamos.
Por ejemplo, tomemos la siguiente posición:
XABCDEFGHY
8-+r+-+k+(
7zp-+-+p+p'
6-zp-+p+-wQ&
5+-+-+-+-%
4-+q+-+-+$
3+-+-zP-+P#
2P+L+-zPP+"
1+-+-+-mK-!
xabcdefghy
Juegan las blancas
Aquí el patrón es claro: hay mate en cuatro jugadas (empezando por 1.¥xh7+). Nótese que
en este caso, la situación de algunas piezas parece irrelevante (por ejemplo, los peones
31
The USC Program, Albert L. Zobrist y Frederic R. Carlson Jr., University of Southern, California, 1973.
32
Lo cual parece ser un interesante antecedente de los bitboards, una técnica muy usada en la actualidad para
definir posiciones usando un solo entero de 64 bits.
30
blancos y el rey blanco). Desde luego que en algunos casos habrá necesidad de observar si
es necesario tomar en cuenta otras figuras en el tablero. Y aunque la idea sería crear un
sistema en donde todas estas cuestiones las decidiera el propio software, aún se requiere
elaborar mucho más.
No obstante esto, si consideramos que los jugadores de ajedrez humanos, al analizar esta
posición, bien nos dirán algo así como esto: “mira, el Alfil de c2 amenaza peligrosamente
h7, que en realidad está indefenso, pues sólo el rey negro lo protege y en cambio las
blancas, además del alfil, tienen su poderosa dama ubicada en h6 con doble ataque a dicho
peón. Por otra parte, el peón de f7 no está defendido por nadie, por lo que la combinación
de mate 1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.£h7+ ¢f8 4.£f7# es posible”.
El patrón entonces será: la amenaza del ¥blanco a h7. La misma amenaza, pero ahora con
la £ blanca que está en h6, y además, hacer notar que el peón de negro no sólo no está
defendido más que por el rey, sino que además, impide el escape del monarca negro del
inevitable mate.
Si colocamos esta posición en estos términos de patrones, hallaremos la siguiente imagen
del mismo:
Las flechas verdes indican cómo se defienden las piezas blancas (una instancia de Zobrist),
mientras que las flechas rojas representan los ataques de las piezas blancas a las rivales
(otra instancia de Zobrist).
Pero hay que señalar que hay un conjunto de piezas que no interactúan en el patrón, por lo
que bien pueden eliminarse. Si quitamos lo superfluo hallamos:
31
XABCDEFGHY
8-+-+-+k+(
7+-+-+p+p'
6-+-+p+-wQ&
5+-+-+-+-%
4-+-+-+-+$
3+-+-+-+-#
2-+L+-+-+"
1+-+-+-+-!
xabcdefghy
Elementos fundamentales del patrón
El cual al analizarlo con el programa de patrones, halla lo siguiente:
Patrón ejemplo (mínimo)
El problema a resolver es cómo caracterizar este patrón de manera que pueda ser leído por
una computadora para después pedirle que busque similitudes, es decir, patrones similares.
Una opción sería crear un lenguaje de descripción, como el que permiten las matemáticas,
por ejemplo, en el caso de la geometría analítica, en donde por ejemplo, la función y = x2
,
que identifica a una parábola con vértice en el origen (véase siguiente figura).
32
y = x2
En lugar de esto, ¿por qué no representar el patrón sobre qué piezas atacan, qué piezas
defienden, qué casillas son importantes y dónde deben estar las piezas? Por ello, podemos
decir, “el ¥ de c2 ataca el § de h7” y punto final. Este es un enunciado del patrón. Para este
particular ejemplo tenemos el patrón definido de la siguiente manera:
 £ blanca en h6
 ¥blanco (de casillas blancas) atacando el punto h7. De hecho, con esta descripción
no tenemos que indicar en dónde está el ¥, si en b1, c2, d3, etcétera.
 ¢ negro en g8
 § negro en f7, defendido solamente por el ¢ negro.
 Puede haber un § negro opcionalmente en h7 pero éste solamente debe estar
defendido por el ¢ negro.
 Solución del patrón: Juegan las blancas y ganan con la combinación 1.¥xh7+ ¢h8
2.¥g6+ ¢g8 3.£h7+ ¢f8 4.£f7#
Patrón ejemplo
Hemos caracterizado simplemente la posición en términos de ataques y defensas. Ahora se
trata de que esta descripción sea pasada a un lenguaje de programación, o a un mecanismo
que permita guardar el patrón y así buscar similitudes.
33
Para ello una opción es usar CQL (Chess Query Language) 33
, el cual es una herramienta
que permite hacer búsquedas complejas que son imposibles de realizar con las herramientas
tradicionales en los manejadores de partidas de ajedrez.
Chess Query Language fue diseñado para permitir a investigadores, autores y jugadores, a
buscar temas en partidas, problemas y estudios. Hay que especificar el tema que se busca y
la base de datos (partidas en PGN – Portable Game Notation) en donde queremos buscar.
Cuando se corre la consulta (usando cql.exe), el sistema crea un nuevo archivo PGN con los
partidos de ajedrez que coinciden con el tema que se busca.
Una ventaja obvia de usar CQL es que se le puede programar la búsqueda de, por ejemplo,
el regalo griego 34
(el sacrificio en h7 con jaque con un alfil), y el sistema dará todas las
partidas que encuentre en la base de datos de referencia que pongamos. Con CQL podemos
redefinir los patrones ganadores y hacer búsquedas sobre las colecciones de partidas de
ajedrez, para así ver en cuales el patrón definido existe.
La sintaxis de CQL permite describir el patrón ejemplo mínimo, que se ha ya mencionado:
(match
:pgn partidas.pgn
:output resultados.pgn
(position Qh6 Bd3 kg8 ph7 Pf7 :wtm)
)
Patrón ejemplo en CQL
El programa en CQL dice:
Búsquese (match) en la base de partidas (:pgn) “partidas.pgn” y póngase el resultado en
(:output) “resultados.pgn”, la posición siguiente: (position Qh6 Bd3 kg8 ph7 Pf7) £blanca
en h6, ¥blanco en d3, ¢negro en g8, § negro en h7 y f7, en donde juegan las blancas
(:wtm)
Un segundo ejemplo de patrón ganador puede verse en el conocido “regalo griego”, el cual
se identifica en el siguiente patrón:
33
Ver descripción del CQL más adelante en este mismo libro. Gady Costeff; The Chess Query Language;
ICGA Journal, Vol. 27, No. 4 (http://www.gadycosteff.com/chess_query_language.pdf). CQL fue desarrollado
por Gady Costeff y Lewis Stiller. Es gratuito (con los correspondientes Derechos de Autor 2003 – 2004).
Utiliza un programa base de datos (partidas en este caso) del software libre llamado Scid, desarrollado por
Shane Hudson. La versión de Windows usa las bibliotecas Cygwin. En el sitio http://rbnn.com/cql/ puede
hallarse el sistema para descargar, instalar y se usar el CQL.
34
El sacrificio en h7 con jaque con un alfil blanco.
34
XABCDEFGHY
8-+-+-trk+(
7+-+-snpzpp'
6-+-+p+-+&
5+-+pzP-+-%
4-+-+-+-+$
3+-+L+N+-#
2-+-+-+-+"
1+-+Q+-mK-!
xabcdefghy
Patrón del regalo griego
 ¦ negra en f8
 ¢ negro en g8
 ¤ negro en e7
 § negro en f7
 § negro en g7
 § negro en h7
 § negro en e6
 § negro en d5
 § blanco en e5
 ¥ atacando h7
 ¤ blanco en f3
 £ blanca en d1
Patrón: el regalo griego
Esto puede expresarse en CQL de la siguiente manera:
(match
:pgn partidas.pgn
:output resultados.pgn
(position Qd1 Bd3 Nf3 Pe5 kg8 rf8 ne7 ph7 pg7 pf7 pe6 pd5
:wtm)
)
35
El autor de este libro ha desarrollado un programa para generar los patrones 35
y buscarlos
en bases de partidas. Además de esto, el software puede hallar las casillas que atacan las
piezas (del blanco o negro), las piezas que defienden, las piezas a las que ataca. La
representación que entrega es visual y en modo de lista de cadenas de caracteres que
representan las acciones de las piezas.
Cabe señalar que este patrón puede ocurrir con los colores cambiados. CQL contiene una
serie de primitivas que permite hacer búsquedas sobre este patrón tanto para blancas como
para las piezas negras.
35
Ver capítulo sobre patrones en ajedrez.
36
Chess Query Language: lenguaje de búsquedas para posiciones de ajedrez
Cuando Boris Spassky iba a defender su título de Campeón del Mundo frente al
estadounidense Bobby Fischer, se sabe que los soviéticos tardaron unos cuatro meses en
transcribir todas las partidas que hallaron sobre el retador. El asunto era muy importante,
porque no se jugaba solamente un título mundial de ajedrez, sino que se ponía en jaque,
literalmente, el liderazgo de los soviéticos en el ajedrez, juego que representaba un símbolo
nacional y que el comunismo soviético había abanderado como parte de su revolución
cultural.
Hoy día, no se necesita un grupo de ajedrecistas que compilen las partidas de un rival en
particular. Gracias a las bases de datos de partidas, de los manejadores de éstas, como
Chessbase o Chess Assistant, se puede tener la colección más grande de partidas de ajedrez
que se pueda uno imaginar, la cual ya tiene más de 6 millones de encuentros ajedrecísticos.
Por supuesto que esta información prácticamente condensa todas las partidas de ajedrez
jugadas desde que éste se practica como lo conocemos (alrededor de 1525).
Pero todas esas partidas requieren de ser analizadas de alguna manera para, por ejemplo,
hallar motivos tácticos, combinaciones ganadoras, configuraciones específicas de peones,
etcétera. Para ello, hay que ver el problema como si fuese un asunto de manejo de bases de
datos. Esto implica escribir una serie de programas que de alguna manera manipulen la
información que contienen más de 6 millones de partidas.
Sin embargo, antes de escribir una sola línea de código, habría que ver si ya alguien ha
trabajado sobre esta idea para no duplicar esfuerzos y he aquí la idea del Chess Query
Language (CQL), un sistema para hacer búsqueda de temas en posiciones de ajedrez.
El Chess Query Language fue diseñado para permitir a investigadores, autores y jugadores,
a buscar temas en partidas, problemas y estudios. Hay que especificar el tema que se busca
y la base de datos (partidas en PGN 36
) en donde queremos buscar. Cuando se corre la
consulta (usando cql.exe), el sistema crea un nuevo archivo PGN con los partidos de
ajedrez que coinciden con el tema que se busca.
Como en todos los manejadores de bases de datos, CQL especifica un conjunto pequeño,
pero poderoso, de primitivas para ser usadas en los temas de ajedrez. CQL puede encontrar
mucho más información relevante que cualquier otro programa de ajedrez. Los usuarios
pueden buscar en temas como ahogado, clavadas múltiples, juegos en donde ocurre la
36
PGN – Portable Game Notation, un sistema para representar partidas de ajedrez en modo de texto simple,
para poderse leer desde cualquier programa, literalmente.
37
misma posición pero en donde en el lado ganador falta una pieza, los temas Grimshaw y
Novotny, juegos con cierto número de capturas en una sola casilla, juegos con cierta
cantidad de peones pasados, blancos o negros, etc. Las posibilidades se antojan infinitas.
Una ventaja obvia de usar CQL es que se le puede programar la búsqueda de, por ejemplo,
el regalo griego (el sacrificio en h7 con jaque con un alfil), y el sistema dará todas las
partidas que encuentre en la base de datos de referencia que pongamos. Imaginen para qué
puede servir esto: crear libros de táctica en base a temas específicos, en donde el autor del
libro no tiene que buscar “a mano” cada posición, sino que puede ayudarse de esta
herramienta para así encontrar las mejores posiciones sobre el tema particular que se
busque.
Por ejemplo, veamos una interesante búsqueda que hace Tim Krabbé en su excelente
página de ajedrez 37
, en donde por cierto, hallé por primera vez referencias al CQL. Dice
Krabbé que en alguna ocasión soñó con una combinación. He aquí la posición de interés:
XABCDEFGHY
8-+-+-+-+(
7+-+q+-+-'
6-+-+-+nmk&
5+-+P+-zpp%
4-+-+-+-+$
3+-wQ-+-mK-#
2-+-+L+-zP"
1+-+-+-+-!
xabcdefghy
Tim Krabbé
Juegan las negras
La solución es sencilla: 1...£h3+!! 2.¢xh3 ¤f4+ 3.¢g3 ¤xe2+ 4.¢f2 ¤xc3 ganando. 0-1.
Muy simple pero... ¿se habría dado esta posición antes? ¿O este tema (no necesariamente
las piezas estrictamente en las posiciones del diagrama). Con CQL Krabbé halló dos
estudios, el primero de 1954:
37
http://timkr.home.xs4all.nl/chess/chess.html
38
XABCDEFGHY
8-+-+-+-+(
7zP-+-+-+-'
6r+-+-zp-+&
5wq-+-mk-+K%
4-+-+pvl-+$
3+-tR-+-+Q#
2-+N+-+-+"
1+-+-+-+-!
xabcdefghy
P. Okonkowski
Schach, 1954
Juegan las blancas y ganan
La solución es 1.¦c6 ¦xc6 y ahora la combinación soñada por Krabbé: 2.£f5+ ¢xf5
3.¤d4+ ¢e5 4.¤xc6+ ¢f5 5.¤xa5 y las blancas ganan.
Sorprendente. Parece magia que algo como CQL pueda hallar este tema cuando las piezas
están en situaciones por demás diferentes.
De acuerdo a Krabbé, y cosa que compartimos, CQL es la respuesta también al viejo
problema de la clasificación de estudios de ajedrez. La base de estudios de Van der
Heijden38
no tiene clasificación por temas, porque entre otras cosas, el asignar y etiquetar
un tema es, como en literatura, algo que tienen que ver con gustos personales y además, la
creación de nuevos temas, o el definir los ya existentes requeriría de tener que clasificar la
base de estudios de nuevo.
Por ello, es quizás mejor definir primero una interpretación y luego entonces, buscar por
estudios y partidas en donde se dé esta interpretación. Por ejemplo, tómese el tema que
tanto le gusta a Krabbé, el de la guardia desguardada –una pieza da jaque y una pieza se
interpone en una casilla no defendida. Esto ha pasado en muchas partidas y estudios, pero
nunca se ha reconocido como un tema por sí mismo. En Chessbase, por ejemplo, es
imposible definir esta búsqueda, pero en CQL esto se hace de manera sorprendentemente
fácil:
38
http://www.hhdbiv.nl/
39
:wtm
:check
:movefrom [QRBNP]
:moveto .d4
:attackcount A Ad4 0
:shift
:flipcolor
Esto dice que juegan las blancas (wtm - white to move) y están en jaque (check), y
que moverán cualquier pieza (movefrom [QRBNP]), a excepción del Rey a la casilla
vacía d4 (moveto .d4), la cual tiene cero ataques después de esto (attackcount A
Ad4 0). Los eventos especificados pueden tener lugar en cualquier casilla (shift).
Finalmente, la última instrucción (flipcolor) nos permite asegurar que se encuentren
ejemplos con los colores cambiados. Se puede poner también “:moveto ?d4”, para
limitar la búsqueda a los casos en donde la pieza interpuesta es capturada.
He aquí uno de los resultados de esta consulta con CQL, que a Krabbé se le pasó por alto
cuando se jugó esta partida:
XABCDEFGHY
8-+-+-+r+(
7+-+-+p+k'
6p+-zP-+-+&
5zP-+-zP-wq-%
4-+-wQp+-zp$
3+-+lsN-+-#
2-+-+-+PzP"
1+-tR-+-mK-!
xabcdefghy
Topalov - Judit Polgar
Novgorod 1996
Juegan las blancas
43.¦c7 un guarda indefenso es la justificación para esta aguda jugada. 43. ... ¦b8 44.¦xf7+
¢g8 45.e6 £xe3+ 46.£xe3 ¦b1+ 47.£c1 dejando libre e3 para impedir el mate. Por
supuesto que Judit habrá visto, pero tal vez no, que después de 47. ... ¦xc1+ 48.¢f2, el
final está perdido. 48 ... ¦c6 49.¦d7 ¥b5 50.¢e3 ¦c2 51.¦c7 ¦e2+ 52.¢f4 ¦f2+ 53.¢xe4
40
¦e2+ 54.¢f5 ¦f2+ 55.¢e5 ¦e2+ 56.¢f6 ¦f2+ 57.¢e7 ¦e2 58.d7 ¥xd7 59.¢xd7 ¦d2+
60.¢e8 y las negras se rindieron. 1-0.
Aunque el CQL se desarrolló para ser usado con la base de estudios de Van der Heijden 39
,
la cual contiene más de 75,000 estudios, CQL puede ser usado también con partidas y con
bases de datos mucho más grandes. Pero como el sistema genera archivos PGN, hay que
convertir las bases de partidas (normalmente en formatos propietarios de Chessbase y/o
Chess Assistant), al formato PGN (Portable Game Notation), Krabbé tuvo que convertir
1.9 millones de partidas a PGN. Después de unos 20 minutos, el holandés obtuvo 1.3
GigaBytes de partidas en un archivo PGN. Hacer búsquedas en estas enormes bases de
datos puede tomar tiempo, muchas horas quizás. Se puede sin embargo hacer una consulta
en CQL que sea muy amplia y así reducir la muestra a buscar. Por ejemplo, a Krabbé le
tomó 15 minutos extraer 4000 partidas en donde ocurre la promoción de un peón, pero en
cualquier pieza a excepción de la dama. Con esta nueva base de datos, se pudo buscar
temas que involucren la sub-promoción, lo cual resulta hacerse en unas 500 veces más
rápido.
Se puede descargar el Chess Query Language 40
de forma gratuita. Viene con manual y
muchos ejemplos (scripts .cql). Es un programa de línea de comandos, pero el compositor
de estudios checoslovaco, Emil Vlasák, ofrece VisualCQL, una utilería que probablemente
haga sentir más cómodo al usuario en un ambiente Windows.
39
http://www.hhdbiv.nl/
40
http://rbnn.com/cql/
41
“Chunks”: hablando de ajedrez en términos de bloques de patrones
En la búsqueda de configuraciones ganadoras, de patrones que le den a un jugador una
ventaja, se tiene –particularmente en el ajedrez– un cuerpo de experiencias pasadas que
están ya documentadas en las bases de datos (partidas de ajedrez), que prácticamente
contienen toda la historia del ajedrez competitivo. Para la mayoría de los juegos, la fuerza
de un jugador, es decir, su habilidad para jugar mejor, puede incrementarse revisando
encuentros anteriores, particularmente de los mejores exponentes de dicho juego. Esto es
aplicable al Go, al Ajedrez y a las damas inglesas, por mencionar algunos juegos de suma-
cero.
El artículo Chunking For Experience, de Michael George y Jonathan Schaeffer, contiene
algunas ideas interesantes. Parte de la idea de que un efecto significativo en los seres
humanos para mejorar su habilidad en un juego depende en su capacidad de recordar
encuentros pasados, propios o de otros jugadores, o bien, fragmentos significativos de
partidas anteriores. Durante una partida un jugador fuerte frecuentemente hace correlación
entre la posición (configuración), que tiene en el tablero y en otras que son parecidas,
similares o incluso idénticas, que ha visto anteriormente.
En fragmentos de posiciones similares, el jugador puede recordar las jugadas ganadoras,
aunque la configuración de las piezas en el tablero no sea estrictamente la misma que
conoce anteriormente. Esta capacidad no ha sido implementada en los programas de
ajedrez, lo cual podría darles algunas ventajas en la búsqueda de las jugadas ganadoras. Un
programa podría ser capaz de extraer estas configuraciones así como los movimientos
hechos y así, hacerse de una experiencia similar a la que tienen los maestros de ajedrez.
Hoy en día, gracias a que existen manejadores de bases de partidas (Chessbase, Chess
Assistant), millones de partidas, literalmente, pueden ser consultadas y además, ya están en
un formato que es un estándar (llamado PGN - Portable Game Notation).
Desafortunadamente, no hay una manera de saber a priori si una jugada es buena o no. Los
investigadores del artículo suponen (y suponen bien), piensan que debe haber alguna
manera de extraer información útil de estos archivos enormes de partidas.
Ya Chase y Simon trabajaron sobre la percepción del ajedrecista, los cuales se basaron en
los trabajos de Adrian de Groot. El hallazgo de este último investigador fue encontrar que
los ajedrecistas utilizan el concepto de similitud de posiciones basándose en “chunking”,
que es básicamente separar los elementos de la posición en patrones elementales. Si se
pudiese hacer esto en términos de un programa de computadora, se podría sacar ventaja a la
experiencia pasada y así aplicar un enfoque más basado en el conocimiento que en un
proceso de búsqueda masiva y de procesamiento de jugadas y respuestas.
42
George y Schaeffer 41
plantean entonces el diseño de MACH (a Master Advisor for Chess),
en donde el sistema usa una base de chunks definidos para acceder a la colección de
partidas de grandes maestros. Cabe decir que los autores indican que estos chunks, que son
los patrones o configuraciones más básicas, fueron descritas por maestros de ajedrez. Estos
chunks definen patrones de ajedrez que frecuentemente ocurren en las partidas. De esta
manera, todas las posiciones de las partidas de los grandes maestros pueden ser analizados
a partir de sus bloques (chunks), constituyentes y organizados de manera tal que puedan ser
puestos en una base de datos para un acceso rápido y eficiente. De esta manera MACH
puede –cada vez que tiene una nueva partida por analizar– hacer los correspondientes
chunks y referenciarlos a la base de datos para así hallar posiciones similares.
Dos temas fundamentales de este artículo son:
i. cómo definir estos bloques elementales (chunks), para así definir las posiciones
y configuraciones de interés
ii. cómo podemos reconocer que dos posiciones son similares.
Es claro que los ajedrecistas tienen esta habilidad de determinar las características más
importantes de una posición, basándose en sus conocimientos previos, reconociendo las
similitudes halladas en otras partidas que han jugado o han visto. Esta capacidad de extraer
esta información, como ya demostraron investigadores anteriores, se hace en fragmentos,
en bloques, dentro del tablero, lo cual es la clave para reconocer otras posiciones similares.
Esto ayuda eventualmente al maestro a guiarse sobre cómo debe entonces jugar. Se sabe,
por los experimentos de De Groot, que la teoría de los chunks es una de las más aceptables
para modelar cómo piensa un maestro de ajedrez. Posnyanskaya y Tikhomirov mostraron
que un jugador experimentado analiza primero la posición en el tablero para buscar
información que le sea relevante, antes de aplicar una estrategia en particular, todo esto
analizando cómo se movían los ojos a través del tablero en el proceso de análisis de las
posiciones.
Otro importante trabajo es el realizado por Bratko, Tancig y Tancig, quienes hallaron un
método para detectar patrones posicionales en ajedrez. Más interesante es saber que Bratko
et al., hallaron que en promedio, hay unos 7.54 chunks (aunque claro, falta aclarar cómo
definen cada chunk). En un trabajo similar, Hans Berliner 42
(ex campeón mundial por
correspondencia), y Campbell pudieron derivar chunks de posiciones para poder jugar
finales de peones de forma automatizada.
41
Chunking For Experience, Michael George y Jonathan Schaeffer, ICCA Journal, 13/1990
42
Ver el capítulo sobre ajedrez dinámico y los chunks definidos por Berliner.
43
El primer trabajo relevante en este sentido es el de Zobrist y Carlson pues fueron los
primeros en modelar la teoría de chunking en el juego del ajedrez. Zobrist y Carlson
primero buscaban todas las instancias de ciertos patrones (que serían los chunks), y al final
de cuentas todo lo hallado lo guardan en algo que llamaron snapshot. A partir de ahí hacían
búsquedas para evaluar las posiciones de ajedrez.
George y Schaeffer decidieron entonces crear un lenguaje de descripción de las posiciones,
en donde se plantean los elementos fundamentales del tablero. Básicamente deciden las
propiedades y características de una posición a partir de los ataques y defensas de las piezas
y de la proximidad entre ellas. Definen además algo que llama la atención, el concepto del
conjunto de chunks que deben existir y que no son opcionales. También tienen el concepto
de las características opcionales, que muchas veces incluso están presentes pero que no son
necesarias para que la configuración sea definida. Importante es que se pueden crear chunks
basados en los ya reconocidos, los cuales bien podrían llamarse meta-chunks, pero esta
notación no la usan los autores. Los chunks deben poder tener parámetros para así evitar, en
la medida de lo posible, las repeticiones sin sentido. Finalmente el lenguaje da un consejo
sobre cómo actuar en las posiciones halladas.
De acuerdo con el lenguaje creado por los autores, esto sería un chunk típico:
Un chunk típico
Los autores entonces analizan una base de partidas y definen los chunks pertinentes de cada
una de las posiciones de las mismas. Ellos consideran que dos posiciones son similares si
contienen chunks idénticos pero incluso los propios autores se dan cuenta que deberían
buscar un criterio de similitud más robusto. Todos los chunks se pre-calculan para
posteriormente ponerlos en una base de datos y acceder a ellos fácilmente.
44
La idea del lenguaje que usan los autores es natural, pero no parece hallar una justificación
de tener que definir los requerimientos obligatorios y los opcionales. Al ser opcionales, por
ejemplo, quiere decir que los chunks no se alteran en términos generales, por lo que da la
impresión que sobran.
La métrica de similitud de los autores suena razonable pero dependerá si el lenguaje de
descripción es lo suficientemente rico para poder entender las similitudes entre posiciones a
partir de criterios simples como el que usan los autores (dos posiciones son similares si
tienen los mismo chunks de forma idéntica).
Parece claro, que estamos ante el problema de representación del conocimiento
ajedrecístico para la definición de los chunks básicos. El artículo en realidad no explora
más que una faceta de estos chunks en posiciones de apertura, pero no considera posiciones
o configuraciones del medio juego o finales, y esto pareciese ser la prueba para saber si el
lenguaje definido es lo suficientemente rico para lidiar con cualquier etapa de la partida. En
cualquier caso, algunas ideas sobre el tema de patrones ganadores son importantes y hay
que tomarlas en cuenta.
45
Algunas ideas para un compilador de ajedrez
La representación de conocimiento en los juegos de suma-cero parece ser una parte
fundamental para poder entender las configuraciones y/o patrones ganadores. Por ello
mismo, el artículo de Clark, Some Ideas for a Chess Compiler 43
, da una idea interesante,
que no se ha llevado a cabo, en donde plantea un lenguaje específico para el desarrollo de
programas que jueguen al ajedrez en particular.
Clark inicialmente plantea dos de los programas de ajedrez que marcaron la pauta de
muchos otros, el de Greenblat (1967) y el de Atkin y Slate (1969), los cuales se basan
estrictamente en el artículo desarrollado por Claude Shannon en 1950. El análisis se basa en
una función de evaluación y un algoritmo Minimax que halle la mejor jugada de acuerdo a
determinada profundidad. La función de evaluación de un programa de ajedrez de ese
entonces era muy limitada, sin embargo, los programas mencionados podían estar como en
el lugar 500 de los jugadores de ajedrez registrados en el Reino Unido. No es esto, desde
luego, algo sorprendente. De hecho, ambos programas califican como un aficionado con
muy poca experiencia.
El autor menciona el programa de Samuel, que competía en las damas inglesas contra el
campeón del mundo. Y aunque el trabajo de Samuel es importante, el problema de jugar a
las damas inglesas se resolvió apenas hace unos años. En cualquier caso es una referencia
obligada pues muchas de las técnicas usadas en los programas de ajedrez tienen un paralelo
con lo que Samuel intentó en su momento.
Un punto importante y quizás un parte aguas en el estudio de la representación de las
posiciones de ajedrez (ganadoras o no), parte del trabajo de De Groot, en donde le pidió a
una serie de jugadores, entre maestros y aficionados, que recordaran posiciones a las que se
les mostraba por pocos segundos. Desafortunadamente, dice Clark, los resultados de De
Groot son cuantitativos y no se analiza cómo un jugador fuerte sabe de las relaciones entre
las piezas, lo que bien podría dar algunas pistas a una representación del conocimiento en
las posiciones en ajedrez.
Por otra parte, Mijaíl Botvinnik (ex campeón mundial y primer campeón mundial de la
posguerra (1948), trabajó en un programa de ajedrez, en la Unión Soviética, en donde
construyó una descripción, la cual llamó un mapa matemático de la posición, basándose en
las casillas que las piezas atacan en la una o más jugadas. Sin embargo, no continúa esa
idea y parece abandonarla por un enfoque más convencional.
43
Some Ideas for a Chess Compiler, Mike Clark, Springer-Verlag 1988
46
Todo lo anterior sugiere que no resulta una mala idea diseñar un lenguaje de programación
orientado al ajedrez, el cual Clark basa en Algol 60, al cual le llamó Algol 64. Cabe
enfatizar que dicho lenguaje no se ha escrito y que sólo es una propuesta, pero parece ser un
camino a explorar, considerando que hay que representar de alguna manera las posiciones
en el tablero de ajedrez.
De acuerdo al autor, un programa escrito en Algol 64 debiese ser un algoritmo para
encontrar una jugada en una posición dada de ajedrez. Se esperaría que un jugador más
fuerte pudiese escribir un programa que jugase mejor que el que pudiese escribir un jugador
débil. Cabe señalar que la idea de Clark es utilizar el modelo de Algol para escribir un pre-
procesador (y no un compilador, que es una tarea mucho más ingrata), que tome como
programa fuente en Algol 64 y lo convierta a Algol 60. Por ello mismo, el usuario podría,
en Algol 64, dar nombres a las variables, tener tipos real, booleano, entero, flotante, y poder
manipular finalmente esto en expresiones, en funciones y procedimientos.
Clark usa la notación algebraica para el ajedrez, la cual es la oficial de la Federación
Internacional de Ajedrez (FIDE, por sus siglas en inglés), y abrevia las piezas como BN
para indicar que hablamos de un caballo negro (Black Knight) y WB, para representar a un
alfil blanco (White Bishop). El autor define entonces:
A partir de esto se generan listas de variables del mismo tipo, referidas como squarelist,
movelist, etcétera. Clark define un vector como una lista de tipos mixtos que describen una
posición. Sin embargo usa la sintaxis de Algol 60 aunque cambia el símbolo de igualdad
por “is”, (como en algunos Prolog), para mejorar la legibilidad del código.
El lenguaje tiene instrucciones como
for <variable name> in <list name> do
47
No obstante, no declara operadores aritméticos y si acaso se requiere hacer alguna
operación aritmética, se hace llamado a procedimientos. El autor además pone detalles
sintácticos para las variables y las constantes. Por ejemplo, los nombres definidos por el
usuario deben aparecer todos en mayúsculas mientras que las constantes y las palabras
reservadas se ponen en minúsculas, usando como separador el guión bajo. Esto hoy en día
no se necesita hacerlo.
Clark define también los siguientes procedimientos y funciones:
etcétera.
El autor propone la creación entonces de un pre-procesador que pueda traducir el código de
Algol 64 al Algol 60 para finalmente poderse compilar. Sin embargo, Clark propone algo
que es de suma importancia y que no se ha hecho (o al menos en forma definitiva, aunque
hay esfuerzos como los citados en Donninger y George) la generación de un lenguaje
especializado para el ajedrez podría ser usado para comunicar algoritmos de ajedrez,
evitando así la duplicación de esfuerzos.
La idea de Clark, sin embargo, no se planteó –como él suponía– en un trabajo doctoral, por
lo que el asunto quedó simplemente como un esquema a investigar.
48
El enfoque de un campeón del mundo por correspondencia
Hans Berliner ha sido campeón mundial por correspondencia, mucho antes de que las
computadoras atacaran el problema del ajedrez. Es además el creador del programa HiTech,
que en los años setenta del siglo pasado participó con éxito en diversas competencias,
incluso humanas. Berliner ha escrito un libro muy original, The System 44
, en donde en su
tercer capítulo habla de ajedrez dinámico e introduce la noción de chunks, pero
enriqueciéndole con la idea del dinamismo de las posiciones en donde se dan.
Hans Berliner (sentado), trabajando en su programa HiTech 45
El autor habla de los experimentos de principios de los años 1930, los cuales fueron
replicados más adelante por Adriaan de Groot. En ellos se demuestra básicamente que los
jugadores de ajedrez mantienen una colección de configuraciones, que les guían para hallar
las mejores jugadas. La diferencia entre un jugador fuerte y uno débil se basa en la cantidad
de patrones, chunks conocidos, los cuales son aplicables en una diversidad de posiciones.
De acuerdo a Berliner, la naturaleza del cerebro humano es tal que solamente puede tener
hasta siete chunks sin perder ninguno (por sobrecarga). Así, hay entre 2 y 7 chunks
presentes en la interpretación del mundo en cierto nivel. Esto –dice el autor– es
esencialmente asignarle una firma a la situación percibida. De esta manera se puede
clasificar y ver sus propiedades de las situaciones que tienen la misma firma.
44
The System, Hans Berliner, Gambit Books 1999. El título alude sin duda al del libro de Aron Nimzowitsch
“Mi Sistema”, que fue uno de los primeros libros de verdadera enseñanza del ajedrez.
45
Imagen cortesía de https://worldchesshof.org/sites/default/files/BerlinerEbeling.jpg
49
En ajedrez hay –ya sabemos– ciertos chunks muy conocidos: la seguridad del rey, la
conformación de los peones en el tablero, el alcance de las piezas, el dominio del centro del
tablero, etcétera. Hay cientos de miles de chunks, los cuales permiten al jugador de ajedrez
el entender cómo orientarse en las diferentes posiciones que se le presentan.
Tipos de chunks
Berliner muestra algunos chunks básicos:
 Cuáles son las mejores piezas menores
 Cómo cooperan las piezas
 Puntos fijos para el ataque
 Que está bien defendido y qué no
 Complejos de casillas de determinado color
El autor muestra cómo reconocer chunks, y los describe como Chunk. Al igual que otros
autores, Berliner indica que la parte crítica que hace que las piezas sean parte de un chunk
son las relaciones de ataque y defensa entre las piezas que hay en el mismo. Por ejemplo,
véase el siguiente diagrama:
XABCDEFGHY
8-+-+-+-+(
7+-+-+-+-'
6-+-zp-+-+&
5+-+-sn-+-%
4-+-+-+-+$
3+-+-+-+-#
2-+-+R+-+"
1+-+-+-+-!
xabcdefghy
Este es el chunk que presenta Berliner: Chunk(e5; W: e2; B: e5, d6), en donde
el caballo negro es el objeto, la torre banca en e2 lo ataca, pero el peón de d6 lo defiende.
Estas tres piezas conforman el chunk básico. Es interesante sin embargo hacer notar que
Berliner no hace mención de las piezas involucradas en el chunk.
50
Hay muchos tipos de chunks, de táctica (en donde una combinación de movimientos decide
la ventaja, en general obligados), o posicionales, donde se observa la fuerza de las piezas
por las configuraciones de peones. Estas configuraciones pueden ser muy complejas, como
por ejemplo, el Chunk “fortaleza”, en donde las blancas no pueden hacer progreso alguno
para ganar, a pesar de su ventaja material. (ver el siguiente diagrama):
XABCDEFGHY
8k+-+-+-+(
7+p+-+-+-'
6-+r+-+-+&
5+K+Q+-+-%
4-+-+-+-+$
3+-+-+-+-#
2-+-+-+-+"
1+-+-+-+-!
xabcdefghy
Berliner indica que los chunks por sí mismos son útiles, pero que en la medida que se
entiende la dinámica de los mismos, resultan mucho más aplicables. Esta dinámica plantea
el concepto de interacción de chunks. De acuerdo al autor El entendimiento correcto de la
interacción de los chunks nos lleva directamente a las estrategias. Berliner define el
espacio de abstracción, donde se trabaja sobre las diferentes posibilidades futuras. En el
caso del ajedrez, no es espacio de posibles jugadas, sino el espacio al que pueden ocupar
piezas y peones en el futuro. Esto es –dice el científico– el espacio de la planeación
estratégica.
Las conclusiones del autor son:
 Los chunks son entidades que apuntan sobre la manera de proceder
estratégicamente
 Los chunks pueden interactuar con otros chunks para cambiar la evaluación que se
aplicaría si solamente existiese uno de ellos presente
Hay muchas estrategias que gobiernan los ataques (la seguridad del rey, tener ventaja en el
desarrollo, una estructura de peones débil, etcétera.
51
El trabajo de Berliner es interesante, pues plantea un esquema de patrones, de chunks y
además, los formaliza. Sin embargo, el enfoque de los siguientes investigadores se enfoca
más a la valoración de las posiciones, como veremos en su momento.
52
Introducción a un lenguaje de patrones ajedrecísticos
Se dice que un maestro fuerte de ajedrez tiene en su cabeza alrededor de 50,000 patrones
típicos que se dan en el juego. Esto podría explicar por qué un jugador débil no ve con la
misma facilidad una buena jugada que su contraparte magistral. Es claro que en muchos
sentidos las posiciones tienen características familiares y el hecho de conocer los detalles
típicos nos dan la pauta para encontrar la jugada correcta en una partida.
Quienes estudien profundamente la táctica ajedrecística notará que ya muchos autores han
hecho la tarea por uno, es decir, han catalogado por temas las posiciones: sacrificios en h7,
clavada, combinaciones de empate por ahogo, doble ataque, ataque al descubierto, etc. Los
temas son muchos pero finitos y en muchos casos las combinaciones, la táctica en ajedrez,
se basa en detalles que describen finalmente una posición y que por ende, no hay ni que
analizar qué jugada hacer: puestos todos los elementos en su lugar, la combinación nace por
sí misma, casi automáticamente. Por eso la recomendación de estudiar táctica no hay que
echarla en saco roto.
¿Qué son estos patrones de ajedrez? Posiciones en donde ciertos elementos se repiten y
permiten generar una secuencia de jugadas muchas veces ganadoras, o que llevan a la
ventaja. Empecemos con la siguiente partida, del autor, contra el Maestro FIDE Isidro Díaz
Lombardo. He aquí la posición crítica:
XABCDEFGHY
8-+-+-trk+(
7zp-+-wQ-vlp'
6-zp-+-+p+&
5+-tr-+-+-%
4-+-+P+-+$
3zP-+-+-+-#
2-zP-wq-zPPzP"
1tRL+-+RmK-!
xabcdefghy
Díaz Lombardo, I. – La_Morsa.
México 1993
Juegan las negras
53
1. ... £xf2!! Y las blancas abandonan, ya que después de 2. ¦xf2 ¦c1+ y mate a la
siguiente. Pero ahora obsérvese la siguiente posición 46
:
XABCDEFGHY
8-+r+-trk+(
7zpR+-vlpzpp'
6q+-+p+-+&
5+-+-zP-+-%
4-+-zP-+-+$
3+-sN-+Q+-#
2P+-+-+PzP"
1+-+-+RmK-!
xabcdefghy
Lee-Sakharov
Campeonato Mundial Juvenil 1963
Juegan las blancas
Es el mismo tema que en la partida contra Díaz Lombardo. Después de 1. ¦xe7 las negras
confiaban en 1. ... ¦xc3 especulando con que la dama blanca está defendiendo la torre de
f1, pero las blancas dieron una sorpresa: 2. £xf7!! Y las negras abandonaron
inmediatamente por el inminente mate.
Una posición más en donde el lector podrá hallar el bosquejo de un patrón es ésta47
:
46
The Inner Game of Chess , Andrew Soltis, McKay Chess Library, 1994.
47
Revista New in Chess 98/2
54
XABCDEFGHY
8-+-+-trk+(
7+Q+-+pzpp'
6p+-zp-+-+&
5+-+Pvl-+-%
4P+-+-+-+$
3+-+-+-+-#
2q+r+-+PzP"
1+R+-+RvLK!
xabcdefghy
Barua-Maherramzade
Ubeda (op) 1998
Juegan las negras
El blanco está perdido. Aquí, sin embargo, el conductor de las negras comete un grave
error: 1. ... ¦xg2?? Y Barua, ni lerdo ni perezoso contestó: 2. £xf7!! Y las negras se
rindieron.
Una posición más al respecto 48
:
XABCDEFGHY
8-+-+-trk+(
7+-+l+pzpp'
6-+-+-+-+&
5+-zPp+-wq-%
4-+-zPn+-+$
3+-+-+Q+-#
2-tr-+-+PzP"
1tRN+-+RmK-!
xabcdefghy
McNab-Mullen
Juegan las blancas
48
Mastering Chess, Danny Kopec, Pergamon Press 1985
55
Después de 1. £xf7!! las negras tienen que rendirse.
Curiosamente, hace poco, en la página de Chessbase 49
, Frederic Friedel publicó una serie
de combinaciones que se dieron en un fuerte torneo en Turquía. Aquí hallé la misma
combinación pero con un nuevo atuendo, es decir, en una posición totalmente diferente a
las ya vistas:
XABCDEFGHY
8-+q+ktr-+(
7+-+l+p+-'
6-+nzPpwQr+&
5+-+-+-+-%
4-+-+-+-+$
3+N+-+-+R#
2-zPP+-+PzP"
1+-mK-+R+-!
xabcdefghy
Atakisi, U – Ruck, R
4th IECC Estanbul, Turquía 2003
Juegan las blancas
Las negras aquí se equivocaron, pues su última jugada fue 30. ... ¦g4-g6 en lugar de la
requerida, 30. ... ¦g4-g8. Y aquí las blancas sorprendieron sin duda a su rival
brillantemente: 31. £f7!! ¦f7 32. ¦h8 ¦f8 33. ¦8f8 mate.
Notará el atento lector que el tema se repite. El patrón es el mismo incluso cuando la
posición no lo parece. Si uno ve decenas de situaciones parecidas, si se le presentan en la
práctica, es seguro que hallará la combinación ganadora. En muchos sentidos el ajedrez es
búsqueda de patrones conocidos. Para conocerlos entonces hay que ejercitarlos. Es decir, en
otras palabras, a trabajar esa visión combinatoria.
La pregunta que surge de todo esto es: ¿se puede programar una computadora para que
encuentre los patrones típicos? (como los mostrados aquí). Sin duda se necesita de un
lenguaje que describa el tablero en las patrones que definan las posiciones ganadoras, y
cómo actuar en esos momentos.
49
http://www.chessbase.com
56
Para tratar de entender cómo hacer esto, veamos la imagen 50
, la cual muestra el rostro de
una mujer (a la izquierda) y la representación de un programa de computadora que “pinta al
óleo” la imagen en cuestión Esto en realidad no es algo nuevo, pues actualmente los
programas de procesamiento de imágenes tienen filtros de todo género, por ejemplo,
acuarela, al carbón, etc. Sin embargo, la diferencia es que este software pinta de manera
imperfecta. Los investigadores a cargo de este trabajo se han preguntado ¿Cómo es que ser
humano hace una pintura? Y a partir de esto se entra en el fascinante mundo del “non-
photorealistic rendering”, lo cual quiere decir, generación de imágenes no foto-realistas.
Las imágenes generadas con este programa nunca se repiten, no son exactamente iguales,
cambian porque el software está diseñado a pintar con errores, como los seres humanos.
De la misma manera podríamos preguntarnos ¿cómo es que los jugadores juegan al
ajedrez? Ya sabemos que ningún jugador de carne y huesos usa los algoritmos que las
computadoras utilizan en general para poder jugar. Muchos investigadores de este
fenómeno han encontrado que los jugadores de ajedrez no perciben una posición como una
entidad estática, sino como una colección de acciones potenciales. Así, entonces, esto
puede verse como que un jugador humano busca seguir las jugadas más prometedoras sin
considerar todas las alternativas que existen. Para que esto pueda suceder, el jugador de
ajedrez tiene que evaluar las posibles jugadas y en muchos casos tiene motivos para
desechar muchas jugadas, pues no son las mejores, o al menos no lo parecen. Entonces
¿qué hace? Aparentemente busca esquemas conocidos, patrones muy específicos, en donde
las jugadas correctas son claramente identificadas porque hay una continuación que gana o
que adquiere una ventaja muy evidente.
50
http://npr.etri.re.kr/
57
A partir de esto surge la pregunta: ¿por qué no incorporar estos patrones a los programas de
computadora? Si esto pudiese hacerse, entonces en lugar de que la máquina analizara todas
las posibilidades, podrían bien ahorrarse análisis que no lleva a ningún lado. El problema
entonces es ¿cómo generar estos patrones de manera que una máquina pueda buscar en
ellos y llegar a la conclusión de que hay un patrón específico aplicable?
Hay que definir un lenguaje que describa los patrones más comunes, y de forma que sean lo
más general posibles, para así llegar a configurar un lenguaje de patrones, que defina de la
manera más humana posible, cómo es que pensamos en cada posición de ajedrez. Esto
significa que debiese poder definir un lenguaje simbólico, algo parecido al que tiene la
geometría analítica, que a través de ecuaciones puede manipular hipérbolas, parábolas y
elipses. Así, para quienes sean avezados en estos temas, les debe quedar claro que y = x²
habla de una parábola, con centro en (0,0).
Por ejemplo, considérese el siguiente patrón, que ya revisamos someramente en el capítulo
de Zobrist:
XABCDEFGHY
8-+r+-+k+(
7zp-+-+p+p'
6-+-+p+-wQ&
5+-+-+-+-%
4-+q+-+-+$
3+-+-zP-+P#
2P+L+-zPP+"
1+-+-+-mK-!
xabcdefghy
Juegan las blancas
Aquí el patrón es claro: hay mate en cuatro jugadas (empezando por 1. ¥xh7+). Nótese que
en este caso, la situación de algunas piezas parece irrelevante (por ejemplo, los peones
blancos y el rey blanco). Desde luego que en algunos casos habrá necesidad de observar si
es necesario tomar en cuenta otras figuras en el tablero. Y aunque la idea sería crear un
sistema en donde todas estas cuestiones las decidiera el propio software, aún se requiere
elaborar mucho más.
No obstante esto, si consideramos que los jugadores de ajedrez humanos, al analizar esta
posición, bien nos dirán algo así como esto: “mira, el Alfil de c2 amenaza peligrosamente
58
h7, que en realidad está indefenso, pues sólo el rey negro lo protege y en cambio las
blancas, además del alfil, tienen su poderosa dama ubicada en h6 con doble ataque a dicho
peón. Por otra parte, el peón de f7 no está defendido por nadie, por lo que la combinación
de mate 1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.£h7+ ¢f8 4.£xf7# es posible”.
El patrón entonces será: la amenaza del Alfil blanco a h7. La misma amenaza, pero ahora
con la dama blanca que está en h6, y además, hacer notar que el peón de negro no sólo no
está defendido más que por el rey, sino que además, impide el escape del monarca negro
del inevitable mate. Esto podría representarse gráficamente así:
Nótese que las flechas azules describen las piezas blancas interactuando unas con otras, es
decir, cómo se defienden entre ellas. Las flechas rojas, en cambio, muestran las piezas
negras que están siendo atacadas por las respectivas piezas blancas. Si quitamos todo lo que
sobra, es decir, lo que no interactúa con el patrón que buscamos tendremos el siguiente
diagrama definido:
XABCDEFGHY
8-+-+-+k+(
7+-+-+p+p'
6-+-+-+-wQ&
5+-+-+-+-%
4-+-+-+-+$
3+-+-+-+-#
2-+L+-+-+"
1+-+-+-+-!
xabcdefghy
59
Y su patrón:
Una vez con esta información, bien podemos poner la secuencia de mate u orientar al
software para que entonces sólo analice esta posición específica, lo cual quitaría de tajo
todos los análisis inútiles que la computadora hace cada vez que valora las jugadas en una
posición dada (aunque lo haga muy velozmente, que conste).
Si se tiene una colección de patrones, el problema se reduce a hacer una búsqueda en la
base de datos de patrones y si se encuentra alguno, ya se sabe qué hacer, cómo jugar, cómo
actuar en el tablero.
Hay mucha información ajedrecística acumulada, en donde los propios ajedrecistas han
catalogado muchas posiciones, con sus correspondientes acciones. Esto es el equivalente a
tener patrones con la solución determinada en cada caso. Hay además patrones en
estructuras de datos de aperturas 51
pero bien podría haber para finales, ara temas
estratégicos, etcétera. Los más comunes son, desde luego, los patrones tácticos.
El punto es pues caracterizar las posiciones en ajedrez y la pregunta es ¿cómo se puede
hacer esto? Consideremos el patrón inicial con el que he comenzado toda esta discusión:
51
Ver el capítulo sobre CHE, el lenguaje creado por Donninger.
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf
La-ciencia-del-ajedrez-por-computadora.pdf

Más contenido relacionado

La actualidad más candente

TACTICAL PERIODIZATION - Mourinho's Secret
TACTICAL PERIODIZATION - Mourinho's SecretTACTICAL PERIODIZATION - Mourinho's Secret
TACTICAL PERIODIZATION - Mourinho's SecretFundação Real Madrid
 
282204131 volumen-4-espacios-reducidos
282204131 volumen-4-espacios-reducidos282204131 volumen-4-espacios-reducidos
282204131 volumen-4-espacios-reducidosDavid MF
 
Guardiola 4v4+3 - Conceptos de Juego de Posicion
Guardiola 4v4+3 - Conceptos de Juego de PosicionGuardiola 4v4+3 - Conceptos de Juego de Posicion
Guardiola 4v4+3 - Conceptos de Juego de PosicionKieran Smith
 
1-4-3-3 Formation Information
1-4-3-3 Formation Information1-4-3-3 Formation Information
1-4-3-3 Formation Informationmistermorio
 
Soccer functional fitness training strength, motor skills, speed, endurance (...
Soccer functional fitness training strength, motor skills, speed, endurance (...Soccer functional fitness training strength, motor skills, speed, endurance (...
Soccer functional fitness training strength, motor skills, speed, endurance (...luansil
 
TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...
TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...
TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...Raúl Oliveira
 
3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones
3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones
3 Tareas de Entrenamiento: Defensa en Zona y BasculacionesJuan Manuel Navarrete
 
5 basic passing_and_cooperation
5 basic passing_and_cooperation5 basic passing_and_cooperation
5 basic passing_and_cooperationWan Rizuan
 
Jose mourinho's presentation to fc porto (translated version).
Jose mourinho's presentation to fc porto (translated version).Jose mourinho's presentation to fc porto (translated version).
Jose mourinho's presentation to fc porto (translated version).Nachiketh Ramesh
 
Sl Benfica modelo de jogo para a formação
Sl Benfica modelo de jogo para a formaçãoSl Benfica modelo de jogo para a formação
Sl Benfica modelo de jogo para a formaçãoMário Torres
 
PE presentation on Football
PE presentation on FootballPE presentation on Football
PE presentation on FootballVishakha Agarwal
 
A bíblia de mourinho no fc porto
A bíblia de mourinho no fc portoA bíblia de mourinho no fc porto
A bíblia de mourinho no fc portoraseslb
 
Liverpool fc academy coaching manual
Liverpool fc academy coaching manualLiverpool fc academy coaching manual
Liverpool fc academy coaching manualAsle Natås Lægreid
 
Horst wein el desarrollo de la inteligencia en el juego
Horst wein   el desarrollo de la inteligencia en el juegoHorst wein   el desarrollo de la inteligencia en el juego
Horst wein el desarrollo de la inteligencia en el juegoDiego Menino
 

La actualidad más candente (20)

Training Fútbol 209
Training Fútbol 209Training Fútbol 209
Training Fútbol 209
 
TACTICAL PERIODIZATION - Mourinho's Secret
TACTICAL PERIODIZATION - Mourinho's SecretTACTICAL PERIODIZATION - Mourinho's Secret
TACTICAL PERIODIZATION - Mourinho's Secret
 
282204131 volumen-4-espacios-reducidos
282204131 volumen-4-espacios-reducidos282204131 volumen-4-espacios-reducidos
282204131 volumen-4-espacios-reducidos
 
Guardiola 4v4+3 - Conceptos de Juego de Posicion
Guardiola 4v4+3 - Conceptos de Juego de PosicionGuardiola 4v4+3 - Conceptos de Juego de Posicion
Guardiola 4v4+3 - Conceptos de Juego de Posicion
 
1-4-3-3 Formation Information
1-4-3-3 Formation Information1-4-3-3 Formation Information
1-4-3-3 Formation Information
 
ATTACKING SOCCER.pdf
ATTACKING SOCCER.pdfATTACKING SOCCER.pdf
ATTACKING SOCCER.pdf
 
Football
FootballFootball
Football
 
Soccer functional fitness training strength, motor skills, speed, endurance (...
Soccer functional fitness training strength, motor skills, speed, endurance (...Soccer functional fitness training strength, motor skills, speed, endurance (...
Soccer functional fitness training strength, motor skills, speed, endurance (...
 
TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...
TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...
TACTICAL PERIODIZATION - THE SECRETS OF SOCCER MOST EFFECTIVE TRAINING METHOD...
 
José Mourinho Exercises
José Mourinho ExercisesJosé Mourinho Exercises
José Mourinho Exercises
 
3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones
3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones
3 Tareas de Entrenamiento: Defensa en Zona y Basculaciones
 
5 basic passing_and_cooperation
5 basic passing_and_cooperation5 basic passing_and_cooperation
5 basic passing_and_cooperation
 
Jose mourinho's presentation to fc porto (translated version).
Jose mourinho's presentation to fc porto (translated version).Jose mourinho's presentation to fc porto (translated version).
Jose mourinho's presentation to fc porto (translated version).
 
Sl Benfica modelo de jogo para a formação
Sl Benfica modelo de jogo para a formaçãoSl Benfica modelo de jogo para a formação
Sl Benfica modelo de jogo para a formação
 
PE presentation on Football
PE presentation on FootballPE presentation on Football
PE presentation on Football
 
A bíblia de mourinho no fc porto
A bíblia de mourinho no fc portoA bíblia de mourinho no fc porto
A bíblia de mourinho no fc porto
 
Liverpool fc academy coaching manual
Liverpool fc academy coaching manualLiverpool fc academy coaching manual
Liverpool fc academy coaching manual
 
A Construção de uma Dinâmica
A Construção de uma DinâmicaA Construção de uma Dinâmica
A Construção de uma Dinâmica
 
Horst wein el desarrollo de la inteligencia en el juego
Horst wein   el desarrollo de la inteligencia en el juegoHorst wein   el desarrollo de la inteligencia en el juego
Horst wein el desarrollo de la inteligencia en el juego
 
Ajax online academy
Ajax online academyAjax online academy
Ajax online academy
 

Similar a La-ciencia-del-ajedrez-por-computadora.pdf

Desarrollo videojuegos
Desarrollo videojuegosDesarrollo videojuegos
Desarrollo videojuegoscalc0805
 
Evolución de los videojuegos
Evolución de los videojuegosEvolución de los videojuegos
Evolución de los videojuegosTanixx
 
Upc2006 desarrollo de videojuegos
Upc2006 desarrollo de videojuegosUpc2006 desarrollo de videojuegos
Upc2006 desarrollo de videojuegosAlvaro Chacon
 
Upc2006 desarrollo devideojuegos
Upc2006 desarrollo devideojuegosUpc2006 desarrollo devideojuegos
Upc2006 desarrollo devideojuegosAlvaro Chacon
 
Taller historia de los videojuegos
Taller historia de los videojuegosTaller historia de los videojuegos
Taller historia de los videojuegosDFERNANDA1
 
OWASP Top 10 y el Machine Learning
OWASP Top 10 y el Machine LearningOWASP Top 10 y el Machine Learning
OWASP Top 10 y el Machine LearningOwaspMadrid Chapter
 
Trabajo del sena exposicion[1]
Trabajo del sena exposicion[1]Trabajo del sena exposicion[1]
Trabajo del sena exposicion[1]oangelajaramillo
 
Tema Investigacion acosta diego
Tema Investigacion acosta diego Tema Investigacion acosta diego
Tema Investigacion acosta diego DiegoSarco
 
Pdf computadoras
Pdf computadorasPdf computadoras
Pdf computadorasmissmaru
 
Pdf computadoras
Pdf computadorasPdf computadoras
Pdf computadorasmissmaru
 
Elaboración de Blog Análisis de Artefactos
Elaboración de Blog Análisis de ArtefactosElaboración de Blog Análisis de Artefactos
Elaboración de Blog Análisis de ArtefactosLaurenSofia6
 
Elaboración de Blog Análisis de Artefactos Tecnológicos
Elaboración de Blog Análisis de Artefactos TecnológicosElaboración de Blog Análisis de Artefactos Tecnológicos
Elaboración de Blog Análisis de Artefactos TecnológicosLaurenSofia6
 
Elaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptx
Elaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptxElaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptx
Elaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptxSamu488690
 
diseño de videojuegos.pptx
diseño de videojuegos.pptxdiseño de videojuegos.pptx
diseño de videojuegos.pptxedgartorres431176
 
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero sofia6322
 
Sexta generacion
Sexta generacionSexta generacion
Sexta generacionSaulSAES
 

Similar a La-ciencia-del-ajedrez-por-computadora.pdf (20)

Desarrollo videojuegos
Desarrollo videojuegosDesarrollo videojuegos
Desarrollo videojuegos
 
Evolución de los videojuegos
Evolución de los videojuegosEvolución de los videojuegos
Evolución de los videojuegos
 
Videojuegos Uc
Videojuegos UcVideojuegos Uc
Videojuegos Uc
 
Upc2006 desarrollo de videojuegos
Upc2006 desarrollo de videojuegosUpc2006 desarrollo de videojuegos
Upc2006 desarrollo de videojuegos
 
Upc2006 desarrollo devideojuegos
Upc2006 desarrollo devideojuegosUpc2006 desarrollo devideojuegos
Upc2006 desarrollo devideojuegos
 
X dvideojuegos.pdf
X dvideojuegos.pdfX dvideojuegos.pdf
X dvideojuegos.pdf
 
Taller historia de los videojuegos
Taller historia de los videojuegosTaller historia de los videojuegos
Taller historia de los videojuegos
 
OWASP Top 10 y el Machine Learning
OWASP Top 10 y el Machine LearningOWASP Top 10 y el Machine Learning
OWASP Top 10 y el Machine Learning
 
X dvideojuegos
X dvideojuegosX dvideojuegos
X dvideojuegos
 
Trabajo del sena exposicion[1]
Trabajo del sena exposicion[1]Trabajo del sena exposicion[1]
Trabajo del sena exposicion[1]
 
Tema Investigacion acosta diego
Tema Investigacion acosta diego Tema Investigacion acosta diego
Tema Investigacion acosta diego
 
Pdf computadoras
Pdf computadorasPdf computadoras
Pdf computadoras
 
Pdf computadoras
Pdf computadorasPdf computadoras
Pdf computadoras
 
Elaboración de Blog Análisis de Artefactos
Elaboración de Blog Análisis de ArtefactosElaboración de Blog Análisis de Artefactos
Elaboración de Blog Análisis de Artefactos
 
Elaboración de Blog Análisis de Artefactos Tecnológicos
Elaboración de Blog Análisis de Artefactos TecnológicosElaboración de Blog Análisis de Artefactos Tecnológicos
Elaboración de Blog Análisis de Artefactos Tecnológicos
 
Elaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptx
Elaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptxElaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptx
Elaboración de Blog Análisis de artefactos tecnológicos equipo No. 4.pptx
 
Rmodmex pc1
Rmodmex pc1Rmodmex pc1
Rmodmex pc1
 
diseño de videojuegos.pptx
diseño de videojuegos.pptxdiseño de videojuegos.pptx
diseño de videojuegos.pptx
 
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
La Tienda De Aplicaciones De Android Ya Supera A La De IOS En Descargas, Pero
 
Sexta generacion
Sexta generacionSexta generacion
Sexta generacion
 

Más de santiagoUribemelgare (8)

149.pdf
149.pdf149.pdf
149.pdf
 
mi_sistema.pdf
mi_sistema.pdfmi_sistema.pdf
mi_sistema.pdf
 
157.pdf
157.pdf157.pdf
157.pdf
 
152.pdf
152.pdf152.pdf
152.pdf
 
Peon_de_Rey_158.pdf
Peon_de_Rey_158.pdfPeon_de_Rey_158.pdf
Peon_de_Rey_158.pdf
 
homenaje-mijail-botvinnik-stamp.pdf
homenaje-mijail-botvinnik-stamp.pdfhomenaje-mijail-botvinnik-stamp.pdf
homenaje-mijail-botvinnik-stamp.pdf
 
homenaje_max_euwe.pdf
homenaje_max_euwe.pdfhomenaje_max_euwe.pdf
homenaje_max_euwe.pdf
 
leyendas.pdf
leyendas.pdfleyendas.pdf
leyendas.pdf
 

Último

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxnandoapperscabanilla
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 

Último (20)

Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 

La-ciencia-del-ajedrez-por-computadora.pdf

  • 1.
  • 2. La ciencia del ajedrez por computadora De Turing a las redes neuronales La_Morsa
  • 3. 2 Índice Prólogo 04 Antecedentes del ajedrez por computadora 08 Introducción 09 El primer “autómata”: El Turco de Kempelen 10 La máquina de Torres Quevedo y su receta para ganar el final R vs RT 13 El ajedrez atacado desde la perspectiva de la ciencia 16 Un artículo fundamental de Turing 17 Las ideas de Claude Shannon sobre el ajedrez 24 Intentos de un programa de ajedrez que analice como los seres humanos 27 Chess Query Language: lenguaje de búsquedas para posiciones de ajedrez 36 “Chunks”: hablando de ajedrez en términos de bloques de patrones 41 Algunas ideas para un compilador de ajedrez 45 El enfoque de un campeón del mundo por correspondencia 48 Tipos de chunks 49 Introducción a un lenguaje de patrones ajedrecísticos 52 Definición de un lenguaje de patrones para ajedrez 65 La descripción de los patrones de ajedrez 66 El lenguaje de patrones 67 Conectores lógicos 72 Patrones posicionales 72 Resumen del lenguaje de descripción 75 La apuesta de David Levy 76 De los 8 bits hasta las súper computadoras 90 Sargon: Uno de los primeros programas que jugaron ajedrez 91 El asno de Buridán en ajedrez 95 Nimzo 97 CHE++, un lenguaje para representar conocimiento ajedrecístico 98 El programa que sabía demasiado 101 Rybka 103 La controversia 106 MChess Pro 109 HIARCS 111 Belle 115
  • 4. 3 Rebel 120 Komodo 127 Houdini 132 Stockfish 137 Chessgenius 141 Fritz 145 Junior 149 Shredder 153 Las súper computadoras entran a la batalla 158 Cray Blitz 159 ¿Qué tan rápida era una Cray? 161 Hydra 164 Deep Blue 167 AlphaZero 207 ¿Cómo funciona AlphaZero? 207 Conclusiones 214 Apéndices 216 Apéndice I: El sistema de rating creado por Arpad Elo 217 Apéndice II: Sistema de notación ajedrecística 220 Bibliografía 221
  • 5. 4 Prólogo El ajedrez es una piedra de toque para la inteligencia. Goethe Desde las primeras computadoras digitales, los investigadores reconocieron el potencial de las mismas para resolver problemas complejos, desde el poder traducir textos de un idioma a otro, resolver teoremas matemáticos, hacer simulaciones, poder hacer diagnósticos médicos e incluso, producir obras artísticas, como componer música o hacer poesía. Muchos investigadores también pensaron en hacer una máquina que pudiese jugar al ajedrez. El ajedrez tiene muchas características que lo colocan como un problema excelente para ser resuelto: sus reglas están bien definidas, no hay azar y es finalmente un juego de suma-cero (donde la ventaja de un jugador es la desventaja del rival) y además, es de información perfecta, es decir, toda la información de lo que ocurre en el juego lo conocen los jugadores, nada está escondido. Resolver el ajedrez por computadora, sin embargo, plantea un problema que no podrá solucionarse incluso en el futuro: el crecimiento exponencial de las posibles jugadas y variantes que pueden producirse. No importa qué computadora poseamos ni cuanta memoria podamos instalarle, el crecimiento de las posibles jugadas y respuestas (variantes), a cierta profundidad es inmanejable, por lo que no es posible en la práctica resolver el juego totalmente. Por ello, lo que se tiene que hacer es tener una heurística, es decir, una serie de reglas generales que funcionen en la práctica y que, en general, den buenos resultados. Muchísimos problemas no se pueden resolver por exhaución, es decir, analizando todas las posibilidades y sin embargo, se pueden encontrar soluciones eficientes aunque no necesariamente óptimas. Un punto notable para atacar el ajedrez con la computadora es que es medible. Podemos poner a prueba nuestras ideas jugando contra ajedrecistas humanos y ver los resultados. El ajedrez es un juego fascinante y obsesivo. La riqueza del juego es tal que la vida no alcanza para abarcarla (pero esto es problema de la vida, no del ajedrez), y es claro que la complejidad de este micro-mundo de 64 casillas y 32 piezas sobrepasa todos los esfuerzos humanos por dominarlo. El juego, con las reglas que conocemos, probablemente se estableció alrededor del año 1525 y desde entonces millones de personas lo han estudiado y disfrutado. Eventualmente salieron los primeros jugadores fuertes, los que reconocieron ciertos principios que poco a
  • 6. 5 poco se fueron develando hasta llegar al conocimiento enorme que se tiene del ajedrez, que sin embargo, parece aún tener mucho que mostrarnos. Hoy tenemos Internet y sistemas de cómputo que hace unos 50 años nos eran desconocidos y el poder de las máquinas actualmente es enorme. Baste decir que cualquier teléfono móvil tiene más poder de cálculo que las computadoras que se usaron para mandar al hombre a la Luna. Y este poder digital nos ha permitido atacar el ajedrez con las computadoras actuales, con la intención de satisfacer el acariciado sueño de crear la máquina que juegue con corrección este difícil juego. Desde finales de los años 1960s se ha intentado crear un programa de ajedrez que juegue tan bien de manera tal que derrote a los mejores exponentes del tablero escaqueado. Los esfuerzos han sido sostenidos por muchos años e incluso Kasparov tendría la oportunidad de jugar dos veces con Deep Blue, la máquina de IBM dedicada a jugar al ajedrez, quien finalmente venció al campeón mundial humano en el ritmo de ajedrez clásico. Pero los avances no se han detenido. Software de ajedrez en los últimos cinco a diez años juegan probablemente mejor que la sofisticación de Deep Blue (1997), con la diferencia de que estos programas corren en una computadora casera y cuyo costo por el programa no rebasa los 100 dólares, a diferencia de los millones de dólares de la máquina de IBM. El avance de los programas habla del incesante trabajo que el ajedrez mantiene a los programadores, buscando ser mejor que el campeón del mundo. Hay que reconocer algunos eventos que fueron un parte aguas en el mundo del ajedrez computarizado. Uno de ellos fue la famosa apuesta de David Levy, quien en un Congreso de Inteligencia Artificial retó a los académicos más importantes de la naciente “Inteligencia Artificial” a crear un programa que le ganase a él un encuentro a seis partidas. Esta historia, fascinante y divertida por sí misma, fue un poderoso catalizador para que los investigadores y desarrolladores trabajaran fuertemente una década para intentar así vencer a Levy que en su momento fuese un fuerte Maestro Internacional. Y a partir de ahí los avances se fueron dando con regularidad. Cuando llegaron las computadoras caseras hubo quienes escribieron los primeros programas de ajedrez para estos procesadores que sí, tenían muchas limitaciones, que solamente podían ser rebasadas por el ingenio de los propios programadores. Surgieron programas que se hicieron muy populares, como Sargon, uno de los primeros. Poco tiempo después llegaron otros más y entonces era claro que el problema se estaba entendiendo mejor y que había mucha más gente dedicada al desarrollo de este tipo de software. Al mismo tiempo que había más programas de ajedrez y las mejoras empezaban a verse. Se organizaron entonces “Campeonatos Mundiales de Programas de Ajedrez”, en donde nacieron leyendas como Belle, la máquina especializada en ajedrez, con software escrito
  • 7. 6 por uno de los creadores del sistema operativo Unix, Ken Thompson, quien fuese por un par de años el mejor programa en el mundo. Pero los avance tecnológicos dejaron atrás a Belle e incluso hubo un programa de ajedrez que usaba el poder del supercómputo (Cray Blitz), que destronaría precisamente a la máquina de Thompson. Cabe decir que cuando comenzaron este tipo de justas, algunos grandes maestros humanos veían las partidas y se reían un poco de la ingenuidad de las computadoras, de los programas y de los desarrolladores. Sin embargo, un científico pionero en estas lides, Monty Newborn, hizo la siguiente mención: “Hoy se ríen de nosotros, mañana nos van a venir a consultar”1 . Sus palabras resultaron proféticas. Con el tiempo aparecieron programas para las computadoras caseras, como Fritz, Schredder, HIARCS y Nimzo, entre muchos otros, los cuales ya empezaban a dar batalla a los grandes maestros y salían ocasionalmente noticias de la derrota de un fuerte jugador ante un programa en particular. Entonces se organizaron torneos de hombres contra máquinas. Los primeros encuentros favorecían abultadamente a los grandes maestros pero esto empezó a cambiar al grado que hoy en día ya no se hacen este tipo de encuentros ajedrecísticos. Las máquinas jugadoras de ajedrez parecen haber rebasado el nivel de los seres humanos y por ello se ha perdido el interés en estas justas. Hoy ya hay programas sorprendentemente fuertes. Houdini, Komodo y Stockfish son los más importantes que se disputan el honor de ser el mejor programa de computadora. Sin embargo, en el 2017 salió un nuevo contendiente: AlphaZero, creado por la empresa DeepMind, subsidiaria de Google, y que a través del nuevo paradigma de las redes neuronales, le habría ganado a Stockfish una serie de partidas sin perder ninguna. AlphaZero, además, indicaba que con un mecanismo de aprendizaje de máquinas, el programa le había permitido en pocos días alcanzar el nivel de súper gran maestro, sin siquiera tenerle que enseñar al sistema más allá de los movimientos de ajedrez. Entre el asombro y la duda, AlphaZero parecía haber pasado al siguiente nivel del ajedrez computarizado, llevándose entre las piernas a los mejores motores de ajedrez creados con técnicas más convencionales. Sin embargo, las partidas entre Stockfish y AlphaZero arrojaron algunas suspicacias. El tiempo de reflexión en la partida era de 1 minuto por jugada, algo irregular en los encuentros entre máquinas. Además, Stockfish no pudo usar su libro de aperturas para poder jugar los movimientos que se consideran mejor en esta fase del juego. Por ello hubo quien dudó –y con razón– de AlphaZero y sus logros. Y apenas a principios de diciembre del 2018, un año después de ese primer anuncio, DeepMind volvería a ser noticia al mostrar nuevos avances de AlphaZero en donde ahora anunciaba que este programa había jugado 1000 partidas contra StockFish, ganando 155 y 1 The Grandmaster,Magnus Carlsen and the match that made chess great again, Brin-Jonathan Butler, Simon & Schuster, 2019, Kindle Edition.
  • 8. 7 perdiendo sólo 6, empatando las demás. En esta ocasión parecen haber desaparecido las limitaciones impuestas a StockFish el año anterior. El artículo científico reportando los hallazgos es asombroso por muchas razones2 y una de ellas es que ahora DeepMind dice tener un sistema que puede aprender a jugar como el más fuerte jugador en ajedrez, Go y Shogi (una modalidad de ajedrez chino), es decir, el resultado de su trabajo puede extenderse a otros juegos. Así pues, este libro trata precisamente del complejo y emocionante mundo del ajedrez por computadora. Aquí haremos una revisión somera a la historia de las computadoras y el ajedrez a través de los años. Mencionaremos con cierta profundidad los eventos más significativos que fueron ocurriendo y lo salpicaremos –valga la expresión– con una serie de partidas en donde las máquinas mostraron un ingenio inesperado o un nivel que empezaba a inquietar a los grandes maestros humanos. Desde luego, intentaremos disectar las virtudes de las jugadas de las máquinas, sus fallos y sus aciertos, y lo que esto podría significar para nuestro juego. El ajedrez se ha convertido en una cama de pruebas para muchas tareas en la programación de computadoras. El tema permite abordar tópicos como optimización, búsquedas eficientes, soluciones adecuadas cuando no se puede tener una “mejor solución”, etcétera, los cuales son temas importantes en otros ámbitos como el ruteo de una central telefónica, por ejemplo. Pero más allá de esto, el ajedrez ha demostrado que tiene mucho por ofrecer y los seres humanos estamos empeñados en sacarle sus secretos. Este libro es pues una narración de lo que se ha vivido en el mundo de la programación de software de ajedrez y con AlphaZero ahora como la implementación aparentemente más poderosa, bajo un nuevo paradigma, se renuevan las esperanzas de entender mejor las sutilezas de este obsesivo juego en apenas 64 casillas. Hay pues mucho camino por recorrer. Comencemos. La_Morsa Diciembre 2019 2 https://arxiv.org/pdf/1712.01815.pdf
  • 9. 8 Antecedentes del ajedrez por computadora
  • 10. 9 Introducción “El ajedrez” –decía Goethe– “es una piedra de toque para la inteligencia” y quizás esto es uno de los tantos argumentos que podrían justificar la idea de hacer un programa que juegue al ajedrez. ¿Se podría escribir un programa que jugase como el Campeón del Mundo? ¿Cuáles serían los pre-requisitos para semejante tarea? ¿Y si se lograra, qué demostraría? Estas son apenas algunas de las preguntas que surgen al atacar este problema. El ajedrez es un juego entre dos personas que está bajo los preceptos de un sistema formal y de hecho es un juego de suma-cero e información perfecta. Esto quiere decir que al ser de suma-cero, la ventaja de un bando es exactamente la desventaja del rival, por ello la suma de ambos términos da cero. Y es de información perfecta, porque todo lo que pasa en el tablero lo pueden ver los jugadores. Otros juegos, por ejemplo, el Póker, aunque es de suma-cero no es de información perfecta, pues los jugadores no saben las cartas que tienen los otros participantes. Así pues, el ajedrez tiene seis elementos diferentes, de los siguientes tipos: Rey (¢), Dama (£), Torre (¦), Alfil (¥), Caballo (¤) y Peón (§). Cada jugador tiene 16 elementos de los tipos indicados en una configuración inicial fija y desde ese punto se inicia el juego. Además, el ajedrez tiene una propiedad, llamada de “Markov”, que significa que no se necesitan conocer las jugadas anteriores para entender qué hacer en la siguiente jugada. Así entonces, la siguiente jugada en cualquier posición dada, puede hallarse por inspección y analizando los posibles movimientos que finalmente dan una explosión combinatoria de jugadas, la cual se resuelve al analizar esta estructura como un árbol. Por otra parte, todos los juegos de mesa tienen los conceptos de táctica y estrategia por lo que la capacidad para jugar al ajedrez requiere de un grado de habilidad mental. Esto hace que todo jugador tenga que “ver” hacia adelante (en su imaginación), para ver cómo quedarían las piezas en el tablero después de una serie de movimientos. Y lo interesante de todo esto es que una computadora puede seguir estos procesos en su memoria, siguiendo las reglas del movimiento de las piezas y de cuando el sistema llega a posiciones que pueden ser, ganadoras o perdedoras para uno de los bandos, o incluso, de una igualdad que lleve al empate. Por ende, es claro que el ajedrez puede ser analizado y programado por las computadoras como un sistema formal, el cual es un sistema de reglas que no requieren una interpretación adicional a las mismas. Y esta fue la pregunta a resolver cuando el cómputo inició formalmente después de la Segunda Guerra Mundial, en los años 1950s en adelante: ¿Pueden las computadoras jugar este fascinante pasatiempo mental? ¿Pueden jugarlo tan bien como los seres humanos?
  • 11. 10 El primer “autómata”: El Turco de Kempelen La historia del ajedrez por computadora tiene más de cincuenta años de existencia. La idea de crear una máquina que pudiese realizar algo tan sofisticado y complejo, como el jugar al ajedrez, es incluso más antiguo que las propias computadoras. Wolfgang von Kempelen (1734 – 1804) fue quizás el primero que decidió crear un autómata que jugara al ajedrez. Kempelen era un buen ajedrecista y fue el diseñador y constructor del Turco 3 , que consistía en la figura de una persona (del torso hacia la cabeza), que jugaba ajedrez en su propio tablero y piezas, que estaba sobre un escritorio. Kempelen decidió hacer una serie de demostraciones públicas en donde el Turco jugaba estupendamente bien. El inventor entonces abría las puertas del escritorio en donde se podían ver engranes que supuestamente daban la capacidad ajedrecística al muñeco con turbante. Kempelen mostró por vez primera al Turco en la corte de la Emperatriz de Austria María Teresa (1770), y poco tiempo después realizó una gira por Europa que duró varios años. El Turco “jugó” en París en donde dicen, venció a Benjamín Franklin y en otra partida contra Napoleón Bonaparte, quien hiciese una jugada ilegal y el Turco respondió tirando todas las piezas del tablero 4 , pero esto podría no ser cierto y más bien sería parte del anecdotario, muchas veces incompleto o incluso apócrifo. En 1789 Freiherr Joseph Friedrich zu Racknitz 5 construyó un duplicado de El Turco y escribió un libro mostrando su posible funcionamiento. Racknitz llegó a la conclusión que debía haber un enano o alguien de corta estatura dentro del mueble. Cabe destacar que las medidas del Turco de Racknitz eran diferentes a las del Turco original. Aún así llegó a la conclusión correcta. Y sí, todo era un gran fraude. El Turco no era un autómata sino un títere operado por una persona que se escondía en el mueble de madera. Se dice que hubo al menos 15 ajedrecistas que jugaron dentro del mecanismo, el cual permitía al ser humano escondido no sólo ver dónde estaban las piezas en el tablero, sino además, poder mover el brazo del maniquí para realizar la jugada en su oportunidad 6 . 3 , The Turk -The Life and Times of the Famous Eighteen-Century Chess Playing Machine, Tom Standage, Ed. Walter & Company, NY 2002 4 https://es.wikipedia.org/wiki/El_Turco 5 Joseph Friedrich Freyherr zu Racknitz. Ueber den Schachspieler des Herrn von Kempelen und dessen Nachbildung. Mit sieben Kupfertafeln. Leipzig und Dresden, 1789. 6 https://es.wikipedia.org/wiki/El_Turco
  • 12. 11 Una imagen de cómo era el Turco de Kempelen 7 El Turco fue donado al Museo Peale de Filadelfia. En el año 1854 fue destruido por las llamas en un incendio. Kempelen fue una especie de mago y animador de una ilusión, la de tener una máquina que podía jugar al ajedrez. Su truco era un fraude sí, pero sin duda hizo que mucha gente pensara en la posibilidad de crear una verdadera máquina que pudiese realizar una actividad que siempre se ha considerado un ejemplo de inteligencia: el jugar ajedrez. Se registra una partida del Turco, jugada contra Napoleón, aunque bien todo esto podría ser apócrifo 8 : Napoleón Bonaparte - The Turk (Automaton) [C20] Schoenbrunn, 1809 1.e4 en esta partida el Turco era operado –presumiblemente– por el ajedrecista Johann Allgaier 9 . 1...e5 2.£f3 ¤c6 3.¥c4 ¤f6 4.¤e2 ¥c5 5.a3 d6 6.0–0 ¥g4 7.£d3 ¤h5 8.h3 ¥xe2 9.£xe2 ¤f4 10.£e1 ¤d4 11.¥b3 7 Imagen cortesía de https://es.wikipedia.org/wiki/El_Turco#/media/Archivo:Tuerkischer_schachspieler_windisch4.jpg 8 http://www.chessgames.com/perl/chessgame?gid=1250610
  • 13. 12 XABCDEFGHY 8r+-wqk+-tr( 7zppzp-+pzpp' 6-+-zp-+-+& 5+-vl-zp-+-% 4-+-snPsn-+$ 3zPL+-+-+P# 2-zPPzP-zPP+" 1tRNvL-wQRmK-! xabcdefghy 11...¤xh3+ 12.¢h2 el caballo es intocable por el doble jaque en f3. £h4 13.g3 ¤f3+ 14.¢g2 ¤xe1+ 15.¦xe1 £g4 16.d3 ¥xf2 17.¦h1 £xg3+ 18.¢f1 ¥d4 19.¢e2 £g2+ 20.¢d1 £xh1+ 21.¢d2 £g2+ 22.¢e1 ¤g1 23.¤c3 ¥xc3+ 24.bxc3 £e2# 0–1 9 Johann Baptist Allguier (1763-1823) fue un maestro de ajedrez germano/austriaco. Fue el autor del primer libro de ajedrez en alemán: Neue theoretisch-praktische Anweisung zum Schachspiel (Vienna 1795–96) (https://en.wikipedia.org/wiki/Johann_Baptist_Allgaier).
  • 14. 13 La máquina de Torres Quevedo y su receta para ganar el final Rey y Torre vs. Rey “El Ajedrecista” fue un autómata construido en 1912 por el ingeniero Leonardo Torres Quevedo (1852-1936). Se presentó por vez primera en la Feria de París de 1914, donde generó gran expectativa e incluso se mencionó en su momento en la revista Scientific American Supplement con el encabezado: “Torres and His Remarkable Automatic Device” (“Torres y su extraordinario dispositivo automático”) (6 de noviembre de 1915). La máquina podría jugar con éxito el final de Rey y Torre contra Rey, y se considera el primer autómata real que pudo jugar posiciones de ajedrez 10 . En este caso, al contrario del Turco de Von Kempelen –que era un fraude – 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. El mecanismo del autómata de Torres Quevedo lo describió H. Vigneron en Le Nature (1914). Torres Quevedo usaba electroimanes bajo el tablero de ajedrez y jugaba automáticamente el final descrito teniendo como rival a un jugador humano. No jugaba de manera muy precisa y no siempre llegaba al mate en el número mínimo de jugadas a causa del algoritmo usado, pero lograba la victoria en todas las ocasiones. Claramente no estaba optimizado pero la idea de tener una máquina que jugase este final básico, ya de por sí era una idea muy atractiva. La máquina de Torres Quevedo 11 10 https://es.wikipedia.org/wiki/El_Ajedrecista 11 Imagen cortesía de https://ugc.kn3.net/i/760x/http://cyberneticzoo.com/wp-content/uploads/torresquevedo2- 500x409-x640.jpg
  • 15. 14 ¿Cómo será el algoritmo de este inventor español para ganar este final? Está afortunadamente descrito en el siguiente libro: Chess and Machine Intuition, de George W. Atkinson 12 . He aquí el algoritmo de Leonardo Torres Quevedo según el apéndice del libro mencionado: Torres Quevedo mostrando su autómata a Norbert Wiener 13 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 (quitándole 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 12 Chess and Machine Intuition, George W. Atkinson, Intellect Books 1998 13 Imagen cortesía de https://ugc.kn3.net/i/760x/http://cyberneticzoo.com/wp- content/uploads/Torres%20y%20Quevedo%20&%20Norbert%20Weiner-x640.jpg
  • 16. 15 then mueve el RB horizontalmente hacia el RN {manteniendo la oposición} else da jaque moviendo la torre una fila {si es la primera fila entonces es mate} 14 Si el RN está en a6, con las mejores tácticas dilatorias, el mate puede tardar, con este algoritmo, unas 61 jugadas. Desde luego, el poder jugar el final de Rey y Torre vs Rey, el cual es un final relativamente simple, demuestra que en principio podría hacerse una autómata que jugara el juego completo del ajedrez. El esfuerzo de Torres Quevedo para crear un robot que moviese las piezas, y todo un mecanismo ingenieril para poder jugar correcta (aunque no eficientemente), es sin duda, un gran logro. Las ideas estaban planteadas pero no había tecnología para poder tratar de demostrarlas. Hubo que esperar muchos años hasta que la computadora se convirtiera en una realidad. No obstante esto, hubo grandes pioneros del tema, entre los que destacan Alan Turing y Claude Shannon. Revisaremos lo que ambos hicieron. 14 Se ha intentado mantener las palabras claves como if, then, elseif, etcétera, como si se tratara de un lenguaje descriptivo de programación.
  • 17. 16 El ajedrez atacado desde la perspectiva de la ciencia
  • 18. 17 Un artículo fundamental de Turing Más allá del Turco, el sueño de tener un autómata que juegue al ajedrez seguía presente en el imaginario colectivo, y el ajedrez pudo entonces pensar en automatizarse cuando apareció la computadora, accesible realmente después de la Segunda Guerra Mundial. La nueva máquina se convirtió en una nueva metáfora: “la máquina como un cerebro” y no como digamos, un reloj o una licuadora. Alan Turing es reconocido como el padre de la informática. Sus esfuerzos más importantes los realizó al descifrar el código de la máquina Enigma Nazi 15 y así poder saber los planes de los alemanes en la Segunda Guerra Mundial. Probablemente su contribución en el campo de la criptografía logró que la guerra se acortara un par de años. Alan Turing 16 Pero más allá de eso, Turing (1912 – 1954), escribió un importante artículo 17 , en donde plantea la pregunta si una computadora puede pensar. Pero aún va más lejos y habla de cómo podría escribirse un programa que jugase al ajedrez. De hecho, describió un algoritmo de un eventual programa al que llamó TuroChamp. Cabe decir que no existían máquinas capaces de poder ser programadas para esta tarea, por lo que su programa 15 https://blogs.elpais.com/turing/2013/06/alan-turing-el-descifrado-de-la-maquina-enigma.html 16 Imagen cortesía de https://www.eluniversal.com.mx/sites/default/files/styles/f03- 651x400/public/2017/08/27/alan_turing.jpg?itok=hXWHhib_ 17 http://archive.Computerhistory.org/projects/chess/related_materials/text/2-0%20and%202- 1.Computing_machinery_and_intelligence.turing/2-0%20and%202- 1.Computing_machinery_and_intelligence.turing-alan.mind-59.1950.062303001.pdf
  • 19. 18 ejecutaba el algoritmo, instrucción por instrucción de manera humana, actuando como una especie de “procesador central humano” y siguiendo las instrucciones planteadas, una por una en papel. Este proceso podía llevarle al operador del “programa” media hora por jugada. Se conoce una sola partida jugada con esta “computadora de papel”, en donde la “máquina” perdió contra un colega de Turing. De hecho, en las conclusiones de la partida, Turing indica que su programa juega muy mal. Alan Turing, en su artículo de 1953 comienza planteando la siguiente pregunta: ¿Puede una máquina jugar al ajedrez? y aclara entonces: a) ¿Puede una máquina obedecer las reglas del ajedrez, por ejemplo, una que haga movimientos legales al azar o bien, que pueda decirnos si una jugada es legal o no? b) ¿Puede una máquina resolver problemas de ajedrez, por ejemplo, decir si una posición lleva al mate forzado por parte de las blancas en los siguientes tres movimientos? c) ¿Puede una máquina jugar un nivel razonable de ajedrez, es decir, dada una posición (no inusual) en el tablero, después de dos o tres minutos de cálculos, podría hacer una jugada legal razonablemente buena? d) ¿Puede una máquina no sólo jugar al ajedrez, sino además, mejorar su juego a partir de la experiencia adquirida en partidas pasadas? Esto lleva entonces a Turing a preguntarse (e) ¿Puede hacerse una máquina que pudiese contestar preguntas de los seres humanos en donde las respuestas de la máquina fuesen indistinguibles de las que pueden contestar las personas? Y va más allá: (f) ¿Pueden las máquinas tener sentimientos como los que tenemos los seres humanos? De hecho, da la impresión que Turing en este artículo presenta un bosquejo de lo que más adelante se llamaría la prueba de Turing, en su honor, desde luego. Sin embargo, aquí nos interesa es de alguna manera ver el artículo de Turing en su contexto. Por ejemplo, a las preguntas (a) y (b), Turing indica que “Ciertamente puede hacerse. Si no se ha hecho es que hay mejores cosas que hacer”. La pregunta (c) es aún más interesante en la respuesta del famoso matemático, porque indica: “Seguramente sí, pero para tener un nivel estándar de juego se requiere que exista una máquina más compleja y más ingeniosa que el propio diseñador”. Para la pregunta (d) y (e), Turing se da cuenta ya que el aprendizaje de las máquinas es un problema que ni siquiera era atacable en su momento e indica: “Creo que es posible [hacer que una máquina que aprenda de partidas pasadas], o que pueda contestar de forma que sea indistinguible la respuesta para un ser humano, si se trata de una máquina quien responde o de otro ser humano. En la última pregunta, la (f), se muestra escéptico porque indica, “No lo sé y no puedo estar seguro de que tú sientes lo mismo que yo”.
  • 20. 19 Como puede verse, Turing ya tenía en su mente una serie de cuestionamientos que sin duda eran la marca de los pioneros, porque en ese entonces las computadoras apenas y empezaban su existencia. Cualquier teléfono moderno tiene millones de veces más capacidad que las máquinas que Turing pudo usar en su momento. Hoy incluso podrían parecernos argumentos un poco ingenuos, pero en 1953 el mundo era sin duda diferente. Para definir la posibilidad de hacer un programa que juegue al ajedrez, Alan Turing hace algunas suposiciones como por ejemplo, que la máquina que ha de ser programada tenga los suficientes recursos de almacenamiento, por ejemplo. Lo importante, sin embargo, es que el matemático indica: “Si uno puede explicarle [en inglés], con la ayuda de símbolos matemáticos –si esto es requerido– cómo un cálculo debe hacerse, es siempre posible entonces programar una computadora digital que haga esos cálculos, por supuesto, teniendo la capacidad de almacenamiento adecuada”. Turing plantea que para simplificar el problema, asumamos que la máquina puede ser programada y que además, juega con las piezas blancas. Si la máquina tuviese una cantidad de memoria ilimitada y una velocidad infinita, una regla comparativa simple sería suficiente pues daría un resultado en el sentido de que no pudiese mejorarse. Tal regla podría expresarse así: “Considérese cada continuación posible desde una posición dada. Hay solamente un número finito de movimientos posibles. Se puede trabajar desde el final de cada una de estas continuaciones, marcando una posición en donde juegan las blancas y “ganan”. Si esto no ocurre, podríamos marcar posiciones donde se dé el empate, las “tablas” y si esto no ocurre, tendríamos que marcar cada posición final como “perdida” para el bando blanco. Esto mismo podemos hacerlo para las piezas negras”, indica Turing. De hecho, en el párrafo anterior ya Turing vislumbra la necesidad de un algoritmo que no es más que el Minimax, el cual es parte de la Teoría de Juegos, ciencia estudiada por John von Neumann 18 . Sin embargo, Turing se da cuenta que no puede, de ninguna manera, abarcar todas las posibilidades del ajedrez las cuales se conocen como el “número de Shannon”, el cual indica que el número posible de partidas es de 10120 , mucho más que la cantidad de átomos, que se presume, hay en el Universo conocido. Por ello, piensa que en un análisis de todas las posibles variaciones de una posición dada, debe haber una especie de función de evaluación que puede decidir sobre la bondad de una jugada en particular. De alguna manera Turing entiende que el análisis debe detenerse en algún momento, lo que convierte a su función de evaluación en una heurística, en algo así como una regla que funciona la mayoría de las ocasiones. 18 Theory of Games and Economic Behavior, Morgenstern, Oskar y John von Neumann, Princeton University Press, 1947
  • 21. 20 Entonces, después de esta discusión, procede a definir cómo podría bosquejarse un programa que jugase al ajedrez. Para ello toma el valor conocido de cada pieza, en donde la tabla siguiente es conocida por cualquier ajedrecista. Las piezas valen numéricamente de la siguiente manera:  § = 1  ¤ = 3  ¥ = 3.5  ¦ = 5  £ = 10  jaque mate = 1000 Entonces, una primera función elemental podría describirse como la suma total de las fuerzas blancas entre la fuerza total de la suma de las piezas negras, es decir, la razón W/B, donde W son las blancas y B son las negras. Turing considera que este valor es mejor que W – B, pues éste último no incita a los cambios de piezas cuando un bando tiene la ventaja material. Sin duda que es una primera aproximación a una función de evaluación, muy simple pero sin duda bien podría ser parte de una función mucho más elaborada. Turing plantea entonces los siguientes elementos, los cuales son un conjunto particular de reglas que podrían escribirse inequívocamente dentro de un programa de computadora. Se sobreentiende que la máquina lleva blancas y que le toca jugar. A esto Turing lo define como “la posición en el tablero” y las posiciones que surjan de ella se denominan “posiciones en el análisis”. El primer tópico es el de los movimientos “a considerar”. Estos movimientos significan aquellos que van a ser considerados por el programa. Si por ejemplo, una captura es de consideración, entonces la recaptura también lo es. La captura de una pieza no defendida tiene un valor más alto que la que está defendida. Un movimiento que da mate es sin duda una jugada a considerar. A partir de esto, otro precepto es el de las posiciones “muertas”, es decir, cuando no hay movimientos a considerar. Por ejemplo, cuando en la posición actual, después de un par de movimientos hacia adelante no hay captura, recaptura o jaque mate. Esto es, cuando en una profundidad de unos 5 ply o plies (1 ply es un movimiento y 2 ply (o plies) es una jugada, del blanco con la correspondiente respuesta del negro). Turing entonces llega a la parte medular, que de hecho es la que 65 años después aún se discute, y es el valor de la posición. Por ejemplo, el valor de una posición muerta se obtiene añadiendo el valor de las piezas que están en el tablero y formando la razón W/B 19 . En otras posiciones, donde juega el blanco, el valor es el máximo valor posible de acuerdo a 19 Del original del inglés en donde W son las blancas (white) y B son las negras (black).
  • 22. 21 los movimientos a considerar 20 . En caso de no hallar un máximo, entonces hablamos de una posición muerta. Desde luego, este proceso se aplica también cuando el negro es quien juega primero en la posición dada inicialmente. Es claro que Turing entendía bastante de ajedrez y entonces define la contribución de cada pieza a la posición. El matemático define las cosas de la siguiente manera: Para la cuenta de £, ¦, ¥ y ¤: a) La raíz cuadrada del número de jugadas que cada pieza puede hacer desde esa posición, contando la captura como dos movimientos, y no olvidando que el rey no debe quedar en jaque. b) (Si no es una £), 1.0 si la pieza está defendida y 0.5 adicional si está doblemente defendida. c) Con respecto al ¢: d) Para jugadas diferentes al enroque, como más arriba. e) Es necesario hacer un balance sobre la vulnerabilidad del rey y de hecho, este es uno de los principios del análisis posicional del primer Campeón Mundial, Steinitz. Para ello, Turing dice que se puede hacer asumiendo que se sustituye al ¢ por la £ en la misma casilla y se estima la raíz cuadrada de esos movimientos, pero restando en lugar de ir añadiendo valores al conteo. f) 1.0 por la posibilidad de enrocarse y 1.0 adicional si el enroque puede realizarse en la siguiente jugada. Otro punto extra por el desarrollo del enroque. g) 0.2 por cada fila avanzada. h) 0.3 por tener una pieza defendida por otra (que no sea un §). i) Con respecto al ¢ negro: j) 1.0 por la amenaza de jaque mate. k) 0.5 por el jaque al rey. Con todo esto, Turing entonces define la regla para hacer un movimiento: “La jugada elegida debe tener el mayor valor posible y consistente con esto, el mayor valor del juego en la posición”. Si hay más de una jugada que cumpliese con este criterio, Turing decide por azar la mejor jugada, o quizás, dando una condición inicial arbitraria. Cabe decir que en esta idea para elegir una jugada no hay análisis para evaluar la posición, lo cual tiene como 20 Pareciera que lo que quiere decir Turing es que si, por ejemplo, las blancas tienen una cuenta material de 15 y las negras de 14, entonces el cociente 15/14 (=1.0714) es mejor que 15–14 (=1), pues si cambiamos piezas, entonces la ventaja se incrementa. En este mismo ejemplo, si intercambiásemos dos torres por dama, tendríamos que el cociente es 10/9 (= 1.111) mientras que 10–9 (=1). Digamos que el cociente es el comentario de Capablanca (quien fuese campeón del mundo), traducido a las matemáticas: “Para incrementar la ventaja, quítese toda la hojarazca de la posición”.
  • 23. 22 argumento el reducir el trabajo que se ha hecho en decidir la jugada. En alguna medida esto podría denominarse un análisis estático de la posición. Con todo esto a la mano, Turing decidió poner su idea a prueba. La siguiente partida es probablemente la primera que jugara un programa, aunque éste no se programó en una computadora real, sino que el propio Turing la hacía de “procesador central”, haciendo los cálculos correspondientes para decidir las jugadas del programa, que se llamo “TuroChamp”. Alan Turing (TuroChamp) - Alick Glennie Juego amistoso, Manchester, Inglaterra, 1952 1.e4 e5 2.¤c3 ¤f6 3.d4 ¥b4 4.¤f3 d6 5.¥d2 ¤c6 6.d5 ¤d4 7.h4 ¥g4 8.a4 ¤xf3+ 9.gxf3 ¥h5 10.¥b5+ c6 11.dxc6 0–0 12.cxb7 ¦b8 13.¥a6 £a5 14.£e2 ¤d7 15.¦g1 ¤c5 16.¦g5 ¥g6 17.¥b5 ¤xb7 18.0–0–0 ¤c5 19.¥c6 ¦fc8 20.¥d5 ¥xc3 21.¥xc3 £xa4 22.¢d2 ¤e6 23.¦g4 ¤d4 24.£d3 ¤b5 25.¥b3 £a6 26. ¥c4 ¥h5 27.¦g3 £a4 28.¥xb5 £xb5 29.£xd6 ¦d8 0–1 Cabe decir que el propio Turing critica fuertemente su programa. Dice que no tiene ninguna protección, es indefendible, contra las horquillas, que es cuando un peón ataca dos piezas. Sin embargo, indica, el programa puede ver otro tipo de combinaciones. No parece ser difícil, dice el científico, el poder realizar mejoras sustanciales para por ejemplo, evitar los dobles ataques a dos piezas por parte de un peón. Curiosamente indica que este tipo de posibles mejoras puede servir en el medio juego pero probablemente no en el final, lo que indica que Turing entendía más ajedrez que el que demostró con TuroChamp. Turing resume el asunto describiendo su programa con las siguientes palabras: “una caricatura de mi propio juego, el cual se basa en un análisis introspectivo de mis procesos de pensamiento al jugar ajedrez”. Suponer que esto implica que no se puede programar una máquina para jugar ajedrez que juegue mejor que el creador del sistema es equivalente a decir que un animal menos pesado no puede comerse a un animal más pesado. Esto, desde luego –Turing lo indica– es falso y su argumentación es tan cierta que los programas más fuertes actualmente son mucho mejores que sus creadores. 100 años después del nacimiento de Alan Turing, en el año 2012, la empresa alemana de productos de ajedrez informáticos, Chessbase, escribió un motor de ajedrez, un programa que pudiese jugar como Turing había visualizado lo haría 21 . Los programadores del motor Turing tuvieron que definir algunas cosas en su programa que el propio matemático dejó sin explicar. El programa se presentó como parte de los homenajes que se hicieron a Alan 21 http://en.chessbase.com/post/alan-turing-plays-garry-kasparov-at-che-58-years-after-his-death
  • 24. 23 Turing (a 100 años de su nacimiento), en 2012 y logró enfrentar al mejor jugador de todos los tiempos, Garry Kasparov, con una versión moderna de lo que hubiese sido el programa de ajedrez planteado por Turing. El video de dicho acontecimiento puede verse en YouTube 22 . La partida jugada entre Kasparov y el hipotético motor de ajedrez de Turing fue la siguiente: Kasparov (con Frederik Friedel), en el centenario de Alan Turing 23 Turing (Chessbase) - Kasparov,Garry Manchester, 2 Ply, Hamburg, 25.06.2012 Las valoraciones son posicionales y no por el material en el tablero. Desde luego que este “motor de ajedrez” es meramente experimental, tratando de probar la tesis de Turing. 1.e3 [-4.40/6] ¤f6 [3.00/6] 2.¤c3 [-3.30/6] d5 [1.80/5] 3.¤h3 [-2.60/5] e5 [1.70/4] 4.£f3 [-2.50/4] ¤c6 [1.10/4] 5.¥d3?? [A dos ply de profundidad, el motor no puede ver la horquilla. 0.10/4][con cinco ply juega 5.a4] 5...e4 [-0.20/4] 6.¥xe4 [-2.00/4] dxe4 [- 1.00/4]7.¤xe4 [-1.50/4] ¥e7 [1.10/5] 8.¤g3 [-2.30/4] 0–0 [1.70/4] 9.0–0 [-2.20/4] ¥g4 [-0.10/4] 10.£f4 [-1.50/4] ¥d6 [0.90/4] 11.£c4 [-2.00/4] ¥xh3 [0.20/4] 12.gxh3 [- 2.40/4] £d7 [-0.30/4]13.h4 [-1.10/4] £h3 [0.10/4] 14.b3? [-0.60/4][Con 5 ply de profundidad, el motor de Turing juega 14.f3 previniendo la siguiente jugada del negro.] 14...¤g4 [-0.70/4] 15.¦e1 [Permite mate en dos. -#2/4][De nuevo, a 5 plies la máquina previene el mate jugando 15. £xg4] 15...£xh2+ [-#1/6] 16.¢f1 [-#1/4] £xf2# 0–1 22 https://youtu.be/wrxdWkjmhKg 23 Imagen cortesía de http://Chessbase.com
  • 25. 24 Las ideas de Claude Shannon sobre el ajedrez Pero antes del artículo de Turing, llegaría el de Claude Shannon (1949) 24 (1916-2001), ingeniero eléctrico e investigador del MIT y desde 1941, en los Laboratorios Bell. Es uno de los pioneros de la teoría de la información. Su texto habla de cómo hacer para que una computadora pueda jugar al ajedrez. Describe lo que una máquina debería hacer para jugar una partida razonable. Ahí Shannon plantea el procedimiento Minimax, el cual se basa en una función de evaluación de la computadora, la cual permite a la máquina decidir qué jugada hacer de acuerdo con diversos factores. Claude Shannon 25 La propuesta de Shannon debe considerarse visionaria, pues de alguna manera dio con los puntos más importantes que debería tener un programa de ajedrez. Su función de evaluación proponía una serie de características que veremos un poco más adelante. El artículo de Shannon, a diferencia del de Turing, que de hecho es poco preciso, plantea los elementos fundamentales para hacer una máquina que pueda jugar al ajedrez y es tan importante que probablemente la mayoría de los programas en la actualidad funcionan como Shannon planteó el problema y su posible solución en programación. En 1951 el Dr. Dietrich Prinz escribió un programa para la computadora Ferranti de Manchester 26 . El programa seguía las indicaciones del artículo de Shannon y hacía una búsqueda exhaustiva de 3 plies, es decir, jugada y media (donde una jugada son dos 24 Programming a Computer for Playing Chess, Claude E. Shannon, Philosophical Magazine, Ser. 7, Vol. 41, No. 314, Marzo 1950 25 Imagen cortesía de https://ep01.epimg.net/elpais/imagenes/2016/04/30/ciencia/1461969990_765784_1461973730_noticia_norm al_recorte1.jpg 26 https://en.wikipedia.org/wiki/Dietrich_Prinz
  • 26. 25 movimientos, el de blancas y de negras). El programa podía resolver mates en dos jugadas sin dificultad. Este programa solamente demostró la viabilidad de la idea de Shannon pero no contribuyó significativamente al desarrollo de los siguientes programas de ajedrez. Sin embargo, el artículo de Shannon, aunque no lo probó y ni siquiera hizo una simulación como habría hecho Turing con su “TuroChamp”, es muy importante, porque bosquejó una función de evaluación, lo cual de nuevo, es visionario en muchos sentidos, para así lograr que un programa decidiese qué jugada habría que hacer (a partir de una fórmula numérica). Es claro además que Shannon entendía bastante de ajedrez. La función que habría que elegir debería tomar en cuenta los siguientes factores 27 :  Ventaja material  Estructura de peones  Peones aislados y retrasados.  Control del centro.  Peones en color opuesto al alfil propio.  Peones pasados  Posición de las piezas  Caballos avanzados, protegidos o atacados  Torres en columnas abiertas o semiabiertas  Torres en séptima fila  Torres dobladas  Posibilidades de ataque  Piezas que protegen a otras piezas  Ataques sobre otras piezas  Ataques sobre casillas adyacentes al rey enemigo  Clavadas  Movilidad, medida por el número de movimientos legales posibles. Shannon también describió dos tipos de estrategias a considerar. La primera, que llamó “Tipo A”, era el buscar variantes con una profundidad límite a lo largo de cada rama del árbol generado con todas las posibles jugadas y respuestas. La decisión de qué jugada hacer se encargaba el algoritmo “Minimax”. La otra estrategia, llamada “Tipo B”, tenía una manera de hacer una búsqueda selectiva dependiendo de ciertos criterios para analizar una variante más profundamente que otras. Shannon es notable en muchos sentidos, porque él mismo indica que su estrategia tipo A tiene al menos tres desventajas: 27 How Computers Play Chess, David Levy y Monty Newborn, ISHI Press 1991
  • 27. 26  El crecimiento exponencial de las variantes. Normalmente el ramaje de cada jugada es de 30 posibilidades, en promedio, lo cual hace que una jugada de cada bando llegue a unas 900 o más nodos terminales que deben ser evaluados. Si cada rama del árbol se evalúa en 1 microsegundo, el programa eventualmente tardaría unos 16 minutos por cada movimiento. Cabe sin embargo decir que Shannon no podía haber previsto la velocidad del desarrollo tecnológico. Por ejemplo, la máquina Deep Blue de IBM podía analizar unos 200 millones de movimientos por segundo.  Shannon también demuestra que entendía de ajedrez indicando que los jugadores humanos muchas veces discriminan líneas poco prometedoras y que en otras pueden profundizar –en algunos casos– hasta 10 jugadas adelante (20 plies). Esta es la búsqueda selectiva tipo B que no se contempla en la estrategia tipo A.  Finalmente, hay posiciones que llamó “inestables”, donde hay cambios de piezas masivos o secuencias continuas de jaques. Por ello, propuso dar “estabilidad” a las posiciones proponiendo examinar primero, las variantes forzadas lo más profundamente posible, además seleccionar mediante algún proceso las variantes importantes que habría que analizar, evitando perder el tiempo en jugadas poco prometedoras o inútiles. Esto es lo que en alguna medida hacen los seres humanos. El segundo criterio se puede establecer en el algoritmo alpha-beta, el cual empezó a usarse después de los años sesenta, en donde se descubrió que efectivamente era una mejora con respecto al Minimax para no perder tiempo en líneas de poca utilidad o que prometían poco.
  • 28. 27 Intentos de un programa de ajedrez que analice como los seres humanos Ya en un contexto más moderno, en 1973, Albert Zobrist y Frederic Carlson 28 son probablemente los primeros investigadores que intentaron un nuevo enfoque a la creación de un programa de ajedrez. De hecho, en términos generales, todos los programas anteriores a éste se habían escrito siguiendo los lineamientos que Claude Shannon esbozó en su famoso artículo para escribir un programa que pudiese jugar al ajedrez 29 . La idea de Zobrist y Carlson se basa en el reconocimiento estructural de patrones y lo aplica al juego de ajedrez. La estructura del juego puede considerarse de enorme complejidad y sin embargo, los seres humanos se saben guiar en este sistema con bastante éxito. Aparentemente los seres humanos reconocen posiciones similares y se familiarizan con estas. Así pues, el ajedrez parece ser un caso ideal en el reconocimiento de patrones estructurales. Zobrist y Carlson plantearon la posibilidad de comunicar el conocimiento del ajedrecista en términos de un lenguaje, el cual debería tener cuatro requerimientos básicos: 1. El lenguaje debe ser lo suficientemente poderoso para la descripción de las estrategias ajedrecísticas. 2. Debe ser un lenguaje lo suficientemente simple o sencillo para que los ajedrecistas puedan entenderlo a pesar de no tener conocimientos de programación. 3. El lenguaje debe poder dar consejos sobre las jugadas que hay que hacer 4. El lenguaje debe poderse implementar en una computadora. Zobrist y Carlson trabajan con una serie de primitivas y su sintaxis, es decir, las palabras del lenguaje y su gramática. Entre las primitivas se encuentran: las piezas del ajedrez (12 diferentes piezas, seis blancas y seis negras), las 64 casillas del tablero, el número de movimientos realizados, el número de peones que tiene cada bando en todo momento así como saber la posibilidad de enrocar de ambos bandos. La sintaxis del lenguaje permite describir una combinación de las primitivas. Zobrist y Carlson definen el término “patrón” como las instrucciones que describen la posición general de las piezas, que ocurren frecuentemente en el juego de ajedrez entre seres humanos. A una configuración particular de esto se le denomina “instancia”. Zobrist y Carlson entonces implementan una rutina que puede buscar en una posición todas las 28 An Advice-Taking Chess Program, Albert L. Zobrist y Frederic R. Carlson Jr., Scientific American, Junio 1973 29 Programming a Computer for Playing Chess, Claude E. Shannon, Philosophical Magazine, Ser. 7, Vol. 41, No. 314, Marzo 1950
  • 29. 28 instancias de los patrones y grabarlos internamente. A esto le llaman “snapshot” (instantánea). La rutina que usa Zobrist/Carlson se define en estos términos:  Un vector con 50 valores que contienen enteros, entre los que están el número de jugadas, la jugada actual, si alguno de los bandos se puede enrocar (corto o largo), la suma del valor total de las piezas propias, la suma total de las piezas del oponente, la cantidad de peones del primer bando, la cantidad de peones del segundo bando, etcétera.  28 arreglos de 8x8 enteros, en donde cada arreglo cumple con una función diferente, por ejemplo, el número de piezas blancas que atacan una casilla, el valor inverso de una pieza (el peón vale en este caso más que las demás piezas), la posición de las casillas débiles (agujeros), dejados en la conformación de peones, la estructura de peones, etcétera. Un patrón puede ser entonces aquel que detecta todas las instancias en que las piezas blancas atacan a las piezas negras (o que pueden moverse para atacar a las piezas negras). En este caso el propio patrón hace uno o dos movimientos, una especie de “lookahead” (ver hacia adelante en la posición). Zobrist/Carlson definen 45 patrones que reconocen hasta 3000 instancias para una posición dada y cada instancia tiene su propio peso. Por ejemplo, una pieza –una torre– que ataca una dama, tiene más peso que una dama que ataca a una torre. La diferencia entre el valor de las piezas es importante aquí30 . El procedimiento se hace en tres pasos: 1. Definir la posición 2. Aplicar patrones 3. Lookahead, evaluación y minimax Cabe señalar que el tercer elemento es exactamente lo que hacen los programas de ajedrez tradicionales. Sin embargo, la diferencia contra las técnicas usuales son los primeros dos pasos. 30 El valor de las piezas se toma en cuenta a partir del valor del peón, al cual se le asigna la unidad. Así, la £ (dama) vale 9 peones; ¦ (torre) 5; ¥ (alfil) 3.5 peones; ¤ (caballo) 3 peones y §(peón) la unidad. El ¢ (rey) no tiene valor (o se le asigna un valor muy alto, digamos 1000), porque sin rey no hay juego de ajedrez posible.
  • 30. 29 La idea de Zobrist/Carlson es de los años setenta del siglo pasado 31 y evidentemente la capacidad de los equipos de cómputo era mucho más limitada de lo que podemos tener ahora. Por ende, lo que aquí haremos será intentar reproducir las ideas de Zobrist pero en el contexto moderno. En ajedrez los temas se repiten. El patrón es el mismo incluso cuando la posición no lo parece. Si uno ve decenas de situaciones parecidas, si se le presentan en la práctica, es seguro que hallará la combinación ganadora. En muchos sentidos el ajedrez es búsqueda de patrones conocidos. La pregunta es cómo caracterizar esas posiciones. Zobrist/Carlson lo hacen definiendo estas instancias en un vector de valores y 28 arreglos de 8x8 enteros 32 , en donde muestran diferentes situaciones de las piezas, qué atacan, qué defienden, hacia dónde pueden ir, etcétera. Esto no parece ser necesario hacerlo. Hoy en día podríamos definir un patrón como una serie de instancias mucho más cercanas al lenguaje coloquial, al que hablamos. Por ejemplo, tomemos la siguiente posición: XABCDEFGHY 8-+r+-+k+( 7zp-+-+p+p' 6-zp-+p+-wQ& 5+-+-+-+-% 4-+q+-+-+$ 3+-+-zP-+P# 2P+L+-zPP+" 1+-+-+-mK-! xabcdefghy Juegan las blancas Aquí el patrón es claro: hay mate en cuatro jugadas (empezando por 1.¥xh7+). Nótese que en este caso, la situación de algunas piezas parece irrelevante (por ejemplo, los peones 31 The USC Program, Albert L. Zobrist y Frederic R. Carlson Jr., University of Southern, California, 1973. 32 Lo cual parece ser un interesante antecedente de los bitboards, una técnica muy usada en la actualidad para definir posiciones usando un solo entero de 64 bits.
  • 31. 30 blancos y el rey blanco). Desde luego que en algunos casos habrá necesidad de observar si es necesario tomar en cuenta otras figuras en el tablero. Y aunque la idea sería crear un sistema en donde todas estas cuestiones las decidiera el propio software, aún se requiere elaborar mucho más. No obstante esto, si consideramos que los jugadores de ajedrez humanos, al analizar esta posición, bien nos dirán algo así como esto: “mira, el Alfil de c2 amenaza peligrosamente h7, que en realidad está indefenso, pues sólo el rey negro lo protege y en cambio las blancas, además del alfil, tienen su poderosa dama ubicada en h6 con doble ataque a dicho peón. Por otra parte, el peón de f7 no está defendido por nadie, por lo que la combinación de mate 1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.£h7+ ¢f8 4.£f7# es posible”. El patrón entonces será: la amenaza del ¥blanco a h7. La misma amenaza, pero ahora con la £ blanca que está en h6, y además, hacer notar que el peón de negro no sólo no está defendido más que por el rey, sino que además, impide el escape del monarca negro del inevitable mate. Si colocamos esta posición en estos términos de patrones, hallaremos la siguiente imagen del mismo: Las flechas verdes indican cómo se defienden las piezas blancas (una instancia de Zobrist), mientras que las flechas rojas representan los ataques de las piezas blancas a las rivales (otra instancia de Zobrist). Pero hay que señalar que hay un conjunto de piezas que no interactúan en el patrón, por lo que bien pueden eliminarse. Si quitamos lo superfluo hallamos:
  • 32. 31 XABCDEFGHY 8-+-+-+k+( 7+-+-+p+p' 6-+-+p+-wQ& 5+-+-+-+-% 4-+-+-+-+$ 3+-+-+-+-# 2-+L+-+-+" 1+-+-+-+-! xabcdefghy Elementos fundamentales del patrón El cual al analizarlo con el programa de patrones, halla lo siguiente: Patrón ejemplo (mínimo) El problema a resolver es cómo caracterizar este patrón de manera que pueda ser leído por una computadora para después pedirle que busque similitudes, es decir, patrones similares. Una opción sería crear un lenguaje de descripción, como el que permiten las matemáticas, por ejemplo, en el caso de la geometría analítica, en donde por ejemplo, la función y = x2 , que identifica a una parábola con vértice en el origen (véase siguiente figura).
  • 33. 32 y = x2 En lugar de esto, ¿por qué no representar el patrón sobre qué piezas atacan, qué piezas defienden, qué casillas son importantes y dónde deben estar las piezas? Por ello, podemos decir, “el ¥ de c2 ataca el § de h7” y punto final. Este es un enunciado del patrón. Para este particular ejemplo tenemos el patrón definido de la siguiente manera:  £ blanca en h6  ¥blanco (de casillas blancas) atacando el punto h7. De hecho, con esta descripción no tenemos que indicar en dónde está el ¥, si en b1, c2, d3, etcétera.  ¢ negro en g8  § negro en f7, defendido solamente por el ¢ negro.  Puede haber un § negro opcionalmente en h7 pero éste solamente debe estar defendido por el ¢ negro.  Solución del patrón: Juegan las blancas y ganan con la combinación 1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.£h7+ ¢f8 4.£f7# Patrón ejemplo Hemos caracterizado simplemente la posición en términos de ataques y defensas. Ahora se trata de que esta descripción sea pasada a un lenguaje de programación, o a un mecanismo que permita guardar el patrón y así buscar similitudes.
  • 34. 33 Para ello una opción es usar CQL (Chess Query Language) 33 , el cual es una herramienta que permite hacer búsquedas complejas que son imposibles de realizar con las herramientas tradicionales en los manejadores de partidas de ajedrez. Chess Query Language fue diseñado para permitir a investigadores, autores y jugadores, a buscar temas en partidas, problemas y estudios. Hay que especificar el tema que se busca y la base de datos (partidas en PGN – Portable Game Notation) en donde queremos buscar. Cuando se corre la consulta (usando cql.exe), el sistema crea un nuevo archivo PGN con los partidos de ajedrez que coinciden con el tema que se busca. Una ventaja obvia de usar CQL es que se le puede programar la búsqueda de, por ejemplo, el regalo griego 34 (el sacrificio en h7 con jaque con un alfil), y el sistema dará todas las partidas que encuentre en la base de datos de referencia que pongamos. Con CQL podemos redefinir los patrones ganadores y hacer búsquedas sobre las colecciones de partidas de ajedrez, para así ver en cuales el patrón definido existe. La sintaxis de CQL permite describir el patrón ejemplo mínimo, que se ha ya mencionado: (match :pgn partidas.pgn :output resultados.pgn (position Qh6 Bd3 kg8 ph7 Pf7 :wtm) ) Patrón ejemplo en CQL El programa en CQL dice: Búsquese (match) en la base de partidas (:pgn) “partidas.pgn” y póngase el resultado en (:output) “resultados.pgn”, la posición siguiente: (position Qh6 Bd3 kg8 ph7 Pf7) £blanca en h6, ¥blanco en d3, ¢negro en g8, § negro en h7 y f7, en donde juegan las blancas (:wtm) Un segundo ejemplo de patrón ganador puede verse en el conocido “regalo griego”, el cual se identifica en el siguiente patrón: 33 Ver descripción del CQL más adelante en este mismo libro. Gady Costeff; The Chess Query Language; ICGA Journal, Vol. 27, No. 4 (http://www.gadycosteff.com/chess_query_language.pdf). CQL fue desarrollado por Gady Costeff y Lewis Stiller. Es gratuito (con los correspondientes Derechos de Autor 2003 – 2004). Utiliza un programa base de datos (partidas en este caso) del software libre llamado Scid, desarrollado por Shane Hudson. La versión de Windows usa las bibliotecas Cygwin. En el sitio http://rbnn.com/cql/ puede hallarse el sistema para descargar, instalar y se usar el CQL. 34 El sacrificio en h7 con jaque con un alfil blanco.
  • 35. 34 XABCDEFGHY 8-+-+-trk+( 7+-+-snpzpp' 6-+-+p+-+& 5+-+pzP-+-% 4-+-+-+-+$ 3+-+L+N+-# 2-+-+-+-+" 1+-+Q+-mK-! xabcdefghy Patrón del regalo griego  ¦ negra en f8  ¢ negro en g8  ¤ negro en e7  § negro en f7  § negro en g7  § negro en h7  § negro en e6  § negro en d5  § blanco en e5  ¥ atacando h7  ¤ blanco en f3  £ blanca en d1 Patrón: el regalo griego Esto puede expresarse en CQL de la siguiente manera: (match :pgn partidas.pgn :output resultados.pgn (position Qd1 Bd3 Nf3 Pe5 kg8 rf8 ne7 ph7 pg7 pf7 pe6 pd5 :wtm) )
  • 36. 35 El autor de este libro ha desarrollado un programa para generar los patrones 35 y buscarlos en bases de partidas. Además de esto, el software puede hallar las casillas que atacan las piezas (del blanco o negro), las piezas que defienden, las piezas a las que ataca. La representación que entrega es visual y en modo de lista de cadenas de caracteres que representan las acciones de las piezas. Cabe señalar que este patrón puede ocurrir con los colores cambiados. CQL contiene una serie de primitivas que permite hacer búsquedas sobre este patrón tanto para blancas como para las piezas negras. 35 Ver capítulo sobre patrones en ajedrez.
  • 37. 36 Chess Query Language: lenguaje de búsquedas para posiciones de ajedrez Cuando Boris Spassky iba a defender su título de Campeón del Mundo frente al estadounidense Bobby Fischer, se sabe que los soviéticos tardaron unos cuatro meses en transcribir todas las partidas que hallaron sobre el retador. El asunto era muy importante, porque no se jugaba solamente un título mundial de ajedrez, sino que se ponía en jaque, literalmente, el liderazgo de los soviéticos en el ajedrez, juego que representaba un símbolo nacional y que el comunismo soviético había abanderado como parte de su revolución cultural. Hoy día, no se necesita un grupo de ajedrecistas que compilen las partidas de un rival en particular. Gracias a las bases de datos de partidas, de los manejadores de éstas, como Chessbase o Chess Assistant, se puede tener la colección más grande de partidas de ajedrez que se pueda uno imaginar, la cual ya tiene más de 6 millones de encuentros ajedrecísticos. Por supuesto que esta información prácticamente condensa todas las partidas de ajedrez jugadas desde que éste se practica como lo conocemos (alrededor de 1525). Pero todas esas partidas requieren de ser analizadas de alguna manera para, por ejemplo, hallar motivos tácticos, combinaciones ganadoras, configuraciones específicas de peones, etcétera. Para ello, hay que ver el problema como si fuese un asunto de manejo de bases de datos. Esto implica escribir una serie de programas que de alguna manera manipulen la información que contienen más de 6 millones de partidas. Sin embargo, antes de escribir una sola línea de código, habría que ver si ya alguien ha trabajado sobre esta idea para no duplicar esfuerzos y he aquí la idea del Chess Query Language (CQL), un sistema para hacer búsqueda de temas en posiciones de ajedrez. El Chess Query Language fue diseñado para permitir a investigadores, autores y jugadores, a buscar temas en partidas, problemas y estudios. Hay que especificar el tema que se busca y la base de datos (partidas en PGN 36 ) en donde queremos buscar. Cuando se corre la consulta (usando cql.exe), el sistema crea un nuevo archivo PGN con los partidos de ajedrez que coinciden con el tema que se busca. Como en todos los manejadores de bases de datos, CQL especifica un conjunto pequeño, pero poderoso, de primitivas para ser usadas en los temas de ajedrez. CQL puede encontrar mucho más información relevante que cualquier otro programa de ajedrez. Los usuarios pueden buscar en temas como ahogado, clavadas múltiples, juegos en donde ocurre la 36 PGN – Portable Game Notation, un sistema para representar partidas de ajedrez en modo de texto simple, para poderse leer desde cualquier programa, literalmente.
  • 38. 37 misma posición pero en donde en el lado ganador falta una pieza, los temas Grimshaw y Novotny, juegos con cierto número de capturas en una sola casilla, juegos con cierta cantidad de peones pasados, blancos o negros, etc. Las posibilidades se antojan infinitas. Una ventaja obvia de usar CQL es que se le puede programar la búsqueda de, por ejemplo, el regalo griego (el sacrificio en h7 con jaque con un alfil), y el sistema dará todas las partidas que encuentre en la base de datos de referencia que pongamos. Imaginen para qué puede servir esto: crear libros de táctica en base a temas específicos, en donde el autor del libro no tiene que buscar “a mano” cada posición, sino que puede ayudarse de esta herramienta para así encontrar las mejores posiciones sobre el tema particular que se busque. Por ejemplo, veamos una interesante búsqueda que hace Tim Krabbé en su excelente página de ajedrez 37 , en donde por cierto, hallé por primera vez referencias al CQL. Dice Krabbé que en alguna ocasión soñó con una combinación. He aquí la posición de interés: XABCDEFGHY 8-+-+-+-+( 7+-+q+-+-' 6-+-+-+nmk& 5+-+P+-zpp% 4-+-+-+-+$ 3+-wQ-+-mK-# 2-+-+L+-zP" 1+-+-+-+-! xabcdefghy Tim Krabbé Juegan las negras La solución es sencilla: 1...£h3+!! 2.¢xh3 ¤f4+ 3.¢g3 ¤xe2+ 4.¢f2 ¤xc3 ganando. 0-1. Muy simple pero... ¿se habría dado esta posición antes? ¿O este tema (no necesariamente las piezas estrictamente en las posiciones del diagrama). Con CQL Krabbé halló dos estudios, el primero de 1954: 37 http://timkr.home.xs4all.nl/chess/chess.html
  • 39. 38 XABCDEFGHY 8-+-+-+-+( 7zP-+-+-+-' 6r+-+-zp-+& 5wq-+-mk-+K% 4-+-+pvl-+$ 3+-tR-+-+Q# 2-+N+-+-+" 1+-+-+-+-! xabcdefghy P. Okonkowski Schach, 1954 Juegan las blancas y ganan La solución es 1.¦c6 ¦xc6 y ahora la combinación soñada por Krabbé: 2.£f5+ ¢xf5 3.¤d4+ ¢e5 4.¤xc6+ ¢f5 5.¤xa5 y las blancas ganan. Sorprendente. Parece magia que algo como CQL pueda hallar este tema cuando las piezas están en situaciones por demás diferentes. De acuerdo a Krabbé, y cosa que compartimos, CQL es la respuesta también al viejo problema de la clasificación de estudios de ajedrez. La base de estudios de Van der Heijden38 no tiene clasificación por temas, porque entre otras cosas, el asignar y etiquetar un tema es, como en literatura, algo que tienen que ver con gustos personales y además, la creación de nuevos temas, o el definir los ya existentes requeriría de tener que clasificar la base de estudios de nuevo. Por ello, es quizás mejor definir primero una interpretación y luego entonces, buscar por estudios y partidas en donde se dé esta interpretación. Por ejemplo, tómese el tema que tanto le gusta a Krabbé, el de la guardia desguardada –una pieza da jaque y una pieza se interpone en una casilla no defendida. Esto ha pasado en muchas partidas y estudios, pero nunca se ha reconocido como un tema por sí mismo. En Chessbase, por ejemplo, es imposible definir esta búsqueda, pero en CQL esto se hace de manera sorprendentemente fácil: 38 http://www.hhdbiv.nl/
  • 40. 39 :wtm :check :movefrom [QRBNP] :moveto .d4 :attackcount A Ad4 0 :shift :flipcolor Esto dice que juegan las blancas (wtm - white to move) y están en jaque (check), y que moverán cualquier pieza (movefrom [QRBNP]), a excepción del Rey a la casilla vacía d4 (moveto .d4), la cual tiene cero ataques después de esto (attackcount A Ad4 0). Los eventos especificados pueden tener lugar en cualquier casilla (shift). Finalmente, la última instrucción (flipcolor) nos permite asegurar que se encuentren ejemplos con los colores cambiados. Se puede poner también “:moveto ?d4”, para limitar la búsqueda a los casos en donde la pieza interpuesta es capturada. He aquí uno de los resultados de esta consulta con CQL, que a Krabbé se le pasó por alto cuando se jugó esta partida: XABCDEFGHY 8-+-+-+r+( 7+-+-+p+k' 6p+-zP-+-+& 5zP-+-zP-wq-% 4-+-wQp+-zp$ 3+-+lsN-+-# 2-+-+-+PzP" 1+-tR-+-mK-! xabcdefghy Topalov - Judit Polgar Novgorod 1996 Juegan las blancas 43.¦c7 un guarda indefenso es la justificación para esta aguda jugada. 43. ... ¦b8 44.¦xf7+ ¢g8 45.e6 £xe3+ 46.£xe3 ¦b1+ 47.£c1 dejando libre e3 para impedir el mate. Por supuesto que Judit habrá visto, pero tal vez no, que después de 47. ... ¦xc1+ 48.¢f2, el final está perdido. 48 ... ¦c6 49.¦d7 ¥b5 50.¢e3 ¦c2 51.¦c7 ¦e2+ 52.¢f4 ¦f2+ 53.¢xe4
  • 41. 40 ¦e2+ 54.¢f5 ¦f2+ 55.¢e5 ¦e2+ 56.¢f6 ¦f2+ 57.¢e7 ¦e2 58.d7 ¥xd7 59.¢xd7 ¦d2+ 60.¢e8 y las negras se rindieron. 1-0. Aunque el CQL se desarrolló para ser usado con la base de estudios de Van der Heijden 39 , la cual contiene más de 75,000 estudios, CQL puede ser usado también con partidas y con bases de datos mucho más grandes. Pero como el sistema genera archivos PGN, hay que convertir las bases de partidas (normalmente en formatos propietarios de Chessbase y/o Chess Assistant), al formato PGN (Portable Game Notation), Krabbé tuvo que convertir 1.9 millones de partidas a PGN. Después de unos 20 minutos, el holandés obtuvo 1.3 GigaBytes de partidas en un archivo PGN. Hacer búsquedas en estas enormes bases de datos puede tomar tiempo, muchas horas quizás. Se puede sin embargo hacer una consulta en CQL que sea muy amplia y así reducir la muestra a buscar. Por ejemplo, a Krabbé le tomó 15 minutos extraer 4000 partidas en donde ocurre la promoción de un peón, pero en cualquier pieza a excepción de la dama. Con esta nueva base de datos, se pudo buscar temas que involucren la sub-promoción, lo cual resulta hacerse en unas 500 veces más rápido. Se puede descargar el Chess Query Language 40 de forma gratuita. Viene con manual y muchos ejemplos (scripts .cql). Es un programa de línea de comandos, pero el compositor de estudios checoslovaco, Emil Vlasák, ofrece VisualCQL, una utilería que probablemente haga sentir más cómodo al usuario en un ambiente Windows. 39 http://www.hhdbiv.nl/ 40 http://rbnn.com/cql/
  • 42. 41 “Chunks”: hablando de ajedrez en términos de bloques de patrones En la búsqueda de configuraciones ganadoras, de patrones que le den a un jugador una ventaja, se tiene –particularmente en el ajedrez– un cuerpo de experiencias pasadas que están ya documentadas en las bases de datos (partidas de ajedrez), que prácticamente contienen toda la historia del ajedrez competitivo. Para la mayoría de los juegos, la fuerza de un jugador, es decir, su habilidad para jugar mejor, puede incrementarse revisando encuentros anteriores, particularmente de los mejores exponentes de dicho juego. Esto es aplicable al Go, al Ajedrez y a las damas inglesas, por mencionar algunos juegos de suma- cero. El artículo Chunking For Experience, de Michael George y Jonathan Schaeffer, contiene algunas ideas interesantes. Parte de la idea de que un efecto significativo en los seres humanos para mejorar su habilidad en un juego depende en su capacidad de recordar encuentros pasados, propios o de otros jugadores, o bien, fragmentos significativos de partidas anteriores. Durante una partida un jugador fuerte frecuentemente hace correlación entre la posición (configuración), que tiene en el tablero y en otras que son parecidas, similares o incluso idénticas, que ha visto anteriormente. En fragmentos de posiciones similares, el jugador puede recordar las jugadas ganadoras, aunque la configuración de las piezas en el tablero no sea estrictamente la misma que conoce anteriormente. Esta capacidad no ha sido implementada en los programas de ajedrez, lo cual podría darles algunas ventajas en la búsqueda de las jugadas ganadoras. Un programa podría ser capaz de extraer estas configuraciones así como los movimientos hechos y así, hacerse de una experiencia similar a la que tienen los maestros de ajedrez. Hoy en día, gracias a que existen manejadores de bases de partidas (Chessbase, Chess Assistant), millones de partidas, literalmente, pueden ser consultadas y además, ya están en un formato que es un estándar (llamado PGN - Portable Game Notation). Desafortunadamente, no hay una manera de saber a priori si una jugada es buena o no. Los investigadores del artículo suponen (y suponen bien), piensan que debe haber alguna manera de extraer información útil de estos archivos enormes de partidas. Ya Chase y Simon trabajaron sobre la percepción del ajedrecista, los cuales se basaron en los trabajos de Adrian de Groot. El hallazgo de este último investigador fue encontrar que los ajedrecistas utilizan el concepto de similitud de posiciones basándose en “chunking”, que es básicamente separar los elementos de la posición en patrones elementales. Si se pudiese hacer esto en términos de un programa de computadora, se podría sacar ventaja a la experiencia pasada y así aplicar un enfoque más basado en el conocimiento que en un proceso de búsqueda masiva y de procesamiento de jugadas y respuestas.
  • 43. 42 George y Schaeffer 41 plantean entonces el diseño de MACH (a Master Advisor for Chess), en donde el sistema usa una base de chunks definidos para acceder a la colección de partidas de grandes maestros. Cabe decir que los autores indican que estos chunks, que son los patrones o configuraciones más básicas, fueron descritas por maestros de ajedrez. Estos chunks definen patrones de ajedrez que frecuentemente ocurren en las partidas. De esta manera, todas las posiciones de las partidas de los grandes maestros pueden ser analizados a partir de sus bloques (chunks), constituyentes y organizados de manera tal que puedan ser puestos en una base de datos para un acceso rápido y eficiente. De esta manera MACH puede –cada vez que tiene una nueva partida por analizar– hacer los correspondientes chunks y referenciarlos a la base de datos para así hallar posiciones similares. Dos temas fundamentales de este artículo son: i. cómo definir estos bloques elementales (chunks), para así definir las posiciones y configuraciones de interés ii. cómo podemos reconocer que dos posiciones son similares. Es claro que los ajedrecistas tienen esta habilidad de determinar las características más importantes de una posición, basándose en sus conocimientos previos, reconociendo las similitudes halladas en otras partidas que han jugado o han visto. Esta capacidad de extraer esta información, como ya demostraron investigadores anteriores, se hace en fragmentos, en bloques, dentro del tablero, lo cual es la clave para reconocer otras posiciones similares. Esto ayuda eventualmente al maestro a guiarse sobre cómo debe entonces jugar. Se sabe, por los experimentos de De Groot, que la teoría de los chunks es una de las más aceptables para modelar cómo piensa un maestro de ajedrez. Posnyanskaya y Tikhomirov mostraron que un jugador experimentado analiza primero la posición en el tablero para buscar información que le sea relevante, antes de aplicar una estrategia en particular, todo esto analizando cómo se movían los ojos a través del tablero en el proceso de análisis de las posiciones. Otro importante trabajo es el realizado por Bratko, Tancig y Tancig, quienes hallaron un método para detectar patrones posicionales en ajedrez. Más interesante es saber que Bratko et al., hallaron que en promedio, hay unos 7.54 chunks (aunque claro, falta aclarar cómo definen cada chunk). En un trabajo similar, Hans Berliner 42 (ex campeón mundial por correspondencia), y Campbell pudieron derivar chunks de posiciones para poder jugar finales de peones de forma automatizada. 41 Chunking For Experience, Michael George y Jonathan Schaeffer, ICCA Journal, 13/1990 42 Ver el capítulo sobre ajedrez dinámico y los chunks definidos por Berliner.
  • 44. 43 El primer trabajo relevante en este sentido es el de Zobrist y Carlson pues fueron los primeros en modelar la teoría de chunking en el juego del ajedrez. Zobrist y Carlson primero buscaban todas las instancias de ciertos patrones (que serían los chunks), y al final de cuentas todo lo hallado lo guardan en algo que llamaron snapshot. A partir de ahí hacían búsquedas para evaluar las posiciones de ajedrez. George y Schaeffer decidieron entonces crear un lenguaje de descripción de las posiciones, en donde se plantean los elementos fundamentales del tablero. Básicamente deciden las propiedades y características de una posición a partir de los ataques y defensas de las piezas y de la proximidad entre ellas. Definen además algo que llama la atención, el concepto del conjunto de chunks que deben existir y que no son opcionales. También tienen el concepto de las características opcionales, que muchas veces incluso están presentes pero que no son necesarias para que la configuración sea definida. Importante es que se pueden crear chunks basados en los ya reconocidos, los cuales bien podrían llamarse meta-chunks, pero esta notación no la usan los autores. Los chunks deben poder tener parámetros para así evitar, en la medida de lo posible, las repeticiones sin sentido. Finalmente el lenguaje da un consejo sobre cómo actuar en las posiciones halladas. De acuerdo con el lenguaje creado por los autores, esto sería un chunk típico: Un chunk típico Los autores entonces analizan una base de partidas y definen los chunks pertinentes de cada una de las posiciones de las mismas. Ellos consideran que dos posiciones son similares si contienen chunks idénticos pero incluso los propios autores se dan cuenta que deberían buscar un criterio de similitud más robusto. Todos los chunks se pre-calculan para posteriormente ponerlos en una base de datos y acceder a ellos fácilmente.
  • 45. 44 La idea del lenguaje que usan los autores es natural, pero no parece hallar una justificación de tener que definir los requerimientos obligatorios y los opcionales. Al ser opcionales, por ejemplo, quiere decir que los chunks no se alteran en términos generales, por lo que da la impresión que sobran. La métrica de similitud de los autores suena razonable pero dependerá si el lenguaje de descripción es lo suficientemente rico para poder entender las similitudes entre posiciones a partir de criterios simples como el que usan los autores (dos posiciones son similares si tienen los mismo chunks de forma idéntica). Parece claro, que estamos ante el problema de representación del conocimiento ajedrecístico para la definición de los chunks básicos. El artículo en realidad no explora más que una faceta de estos chunks en posiciones de apertura, pero no considera posiciones o configuraciones del medio juego o finales, y esto pareciese ser la prueba para saber si el lenguaje definido es lo suficientemente rico para lidiar con cualquier etapa de la partida. En cualquier caso, algunas ideas sobre el tema de patrones ganadores son importantes y hay que tomarlas en cuenta.
  • 46. 45 Algunas ideas para un compilador de ajedrez La representación de conocimiento en los juegos de suma-cero parece ser una parte fundamental para poder entender las configuraciones y/o patrones ganadores. Por ello mismo, el artículo de Clark, Some Ideas for a Chess Compiler 43 , da una idea interesante, que no se ha llevado a cabo, en donde plantea un lenguaje específico para el desarrollo de programas que jueguen al ajedrez en particular. Clark inicialmente plantea dos de los programas de ajedrez que marcaron la pauta de muchos otros, el de Greenblat (1967) y el de Atkin y Slate (1969), los cuales se basan estrictamente en el artículo desarrollado por Claude Shannon en 1950. El análisis se basa en una función de evaluación y un algoritmo Minimax que halle la mejor jugada de acuerdo a determinada profundidad. La función de evaluación de un programa de ajedrez de ese entonces era muy limitada, sin embargo, los programas mencionados podían estar como en el lugar 500 de los jugadores de ajedrez registrados en el Reino Unido. No es esto, desde luego, algo sorprendente. De hecho, ambos programas califican como un aficionado con muy poca experiencia. El autor menciona el programa de Samuel, que competía en las damas inglesas contra el campeón del mundo. Y aunque el trabajo de Samuel es importante, el problema de jugar a las damas inglesas se resolvió apenas hace unos años. En cualquier caso es una referencia obligada pues muchas de las técnicas usadas en los programas de ajedrez tienen un paralelo con lo que Samuel intentó en su momento. Un punto importante y quizás un parte aguas en el estudio de la representación de las posiciones de ajedrez (ganadoras o no), parte del trabajo de De Groot, en donde le pidió a una serie de jugadores, entre maestros y aficionados, que recordaran posiciones a las que se les mostraba por pocos segundos. Desafortunadamente, dice Clark, los resultados de De Groot son cuantitativos y no se analiza cómo un jugador fuerte sabe de las relaciones entre las piezas, lo que bien podría dar algunas pistas a una representación del conocimiento en las posiciones en ajedrez. Por otra parte, Mijaíl Botvinnik (ex campeón mundial y primer campeón mundial de la posguerra (1948), trabajó en un programa de ajedrez, en la Unión Soviética, en donde construyó una descripción, la cual llamó un mapa matemático de la posición, basándose en las casillas que las piezas atacan en la una o más jugadas. Sin embargo, no continúa esa idea y parece abandonarla por un enfoque más convencional. 43 Some Ideas for a Chess Compiler, Mike Clark, Springer-Verlag 1988
  • 47. 46 Todo lo anterior sugiere que no resulta una mala idea diseñar un lenguaje de programación orientado al ajedrez, el cual Clark basa en Algol 60, al cual le llamó Algol 64. Cabe enfatizar que dicho lenguaje no se ha escrito y que sólo es una propuesta, pero parece ser un camino a explorar, considerando que hay que representar de alguna manera las posiciones en el tablero de ajedrez. De acuerdo al autor, un programa escrito en Algol 64 debiese ser un algoritmo para encontrar una jugada en una posición dada de ajedrez. Se esperaría que un jugador más fuerte pudiese escribir un programa que jugase mejor que el que pudiese escribir un jugador débil. Cabe señalar que la idea de Clark es utilizar el modelo de Algol para escribir un pre- procesador (y no un compilador, que es una tarea mucho más ingrata), que tome como programa fuente en Algol 64 y lo convierta a Algol 60. Por ello mismo, el usuario podría, en Algol 64, dar nombres a las variables, tener tipos real, booleano, entero, flotante, y poder manipular finalmente esto en expresiones, en funciones y procedimientos. Clark usa la notación algebraica para el ajedrez, la cual es la oficial de la Federación Internacional de Ajedrez (FIDE, por sus siglas en inglés), y abrevia las piezas como BN para indicar que hablamos de un caballo negro (Black Knight) y WB, para representar a un alfil blanco (White Bishop). El autor define entonces: A partir de esto se generan listas de variables del mismo tipo, referidas como squarelist, movelist, etcétera. Clark define un vector como una lista de tipos mixtos que describen una posición. Sin embargo usa la sintaxis de Algol 60 aunque cambia el símbolo de igualdad por “is”, (como en algunos Prolog), para mejorar la legibilidad del código. El lenguaje tiene instrucciones como for <variable name> in <list name> do
  • 48. 47 No obstante, no declara operadores aritméticos y si acaso se requiere hacer alguna operación aritmética, se hace llamado a procedimientos. El autor además pone detalles sintácticos para las variables y las constantes. Por ejemplo, los nombres definidos por el usuario deben aparecer todos en mayúsculas mientras que las constantes y las palabras reservadas se ponen en minúsculas, usando como separador el guión bajo. Esto hoy en día no se necesita hacerlo. Clark define también los siguientes procedimientos y funciones: etcétera. El autor propone la creación entonces de un pre-procesador que pueda traducir el código de Algol 64 al Algol 60 para finalmente poderse compilar. Sin embargo, Clark propone algo que es de suma importancia y que no se ha hecho (o al menos en forma definitiva, aunque hay esfuerzos como los citados en Donninger y George) la generación de un lenguaje especializado para el ajedrez podría ser usado para comunicar algoritmos de ajedrez, evitando así la duplicación de esfuerzos. La idea de Clark, sin embargo, no se planteó –como él suponía– en un trabajo doctoral, por lo que el asunto quedó simplemente como un esquema a investigar.
  • 49. 48 El enfoque de un campeón del mundo por correspondencia Hans Berliner ha sido campeón mundial por correspondencia, mucho antes de que las computadoras atacaran el problema del ajedrez. Es además el creador del programa HiTech, que en los años setenta del siglo pasado participó con éxito en diversas competencias, incluso humanas. Berliner ha escrito un libro muy original, The System 44 , en donde en su tercer capítulo habla de ajedrez dinámico e introduce la noción de chunks, pero enriqueciéndole con la idea del dinamismo de las posiciones en donde se dan. Hans Berliner (sentado), trabajando en su programa HiTech 45 El autor habla de los experimentos de principios de los años 1930, los cuales fueron replicados más adelante por Adriaan de Groot. En ellos se demuestra básicamente que los jugadores de ajedrez mantienen una colección de configuraciones, que les guían para hallar las mejores jugadas. La diferencia entre un jugador fuerte y uno débil se basa en la cantidad de patrones, chunks conocidos, los cuales son aplicables en una diversidad de posiciones. De acuerdo a Berliner, la naturaleza del cerebro humano es tal que solamente puede tener hasta siete chunks sin perder ninguno (por sobrecarga). Así, hay entre 2 y 7 chunks presentes en la interpretación del mundo en cierto nivel. Esto –dice el autor– es esencialmente asignarle una firma a la situación percibida. De esta manera se puede clasificar y ver sus propiedades de las situaciones que tienen la misma firma. 44 The System, Hans Berliner, Gambit Books 1999. El título alude sin duda al del libro de Aron Nimzowitsch “Mi Sistema”, que fue uno de los primeros libros de verdadera enseñanza del ajedrez. 45 Imagen cortesía de https://worldchesshof.org/sites/default/files/BerlinerEbeling.jpg
  • 50. 49 En ajedrez hay –ya sabemos– ciertos chunks muy conocidos: la seguridad del rey, la conformación de los peones en el tablero, el alcance de las piezas, el dominio del centro del tablero, etcétera. Hay cientos de miles de chunks, los cuales permiten al jugador de ajedrez el entender cómo orientarse en las diferentes posiciones que se le presentan. Tipos de chunks Berliner muestra algunos chunks básicos:  Cuáles son las mejores piezas menores  Cómo cooperan las piezas  Puntos fijos para el ataque  Que está bien defendido y qué no  Complejos de casillas de determinado color El autor muestra cómo reconocer chunks, y los describe como Chunk. Al igual que otros autores, Berliner indica que la parte crítica que hace que las piezas sean parte de un chunk son las relaciones de ataque y defensa entre las piezas que hay en el mismo. Por ejemplo, véase el siguiente diagrama: XABCDEFGHY 8-+-+-+-+( 7+-+-+-+-' 6-+-zp-+-+& 5+-+-sn-+-% 4-+-+-+-+$ 3+-+-+-+-# 2-+-+R+-+" 1+-+-+-+-! xabcdefghy Este es el chunk que presenta Berliner: Chunk(e5; W: e2; B: e5, d6), en donde el caballo negro es el objeto, la torre banca en e2 lo ataca, pero el peón de d6 lo defiende. Estas tres piezas conforman el chunk básico. Es interesante sin embargo hacer notar que Berliner no hace mención de las piezas involucradas en el chunk.
  • 51. 50 Hay muchos tipos de chunks, de táctica (en donde una combinación de movimientos decide la ventaja, en general obligados), o posicionales, donde se observa la fuerza de las piezas por las configuraciones de peones. Estas configuraciones pueden ser muy complejas, como por ejemplo, el Chunk “fortaleza”, en donde las blancas no pueden hacer progreso alguno para ganar, a pesar de su ventaja material. (ver el siguiente diagrama): XABCDEFGHY 8k+-+-+-+( 7+p+-+-+-' 6-+r+-+-+& 5+K+Q+-+-% 4-+-+-+-+$ 3+-+-+-+-# 2-+-+-+-+" 1+-+-+-+-! xabcdefghy Berliner indica que los chunks por sí mismos son útiles, pero que en la medida que se entiende la dinámica de los mismos, resultan mucho más aplicables. Esta dinámica plantea el concepto de interacción de chunks. De acuerdo al autor El entendimiento correcto de la interacción de los chunks nos lleva directamente a las estrategias. Berliner define el espacio de abstracción, donde se trabaja sobre las diferentes posibilidades futuras. En el caso del ajedrez, no es espacio de posibles jugadas, sino el espacio al que pueden ocupar piezas y peones en el futuro. Esto es –dice el científico– el espacio de la planeación estratégica. Las conclusiones del autor son:  Los chunks son entidades que apuntan sobre la manera de proceder estratégicamente  Los chunks pueden interactuar con otros chunks para cambiar la evaluación que se aplicaría si solamente existiese uno de ellos presente Hay muchas estrategias que gobiernan los ataques (la seguridad del rey, tener ventaja en el desarrollo, una estructura de peones débil, etcétera.
  • 52. 51 El trabajo de Berliner es interesante, pues plantea un esquema de patrones, de chunks y además, los formaliza. Sin embargo, el enfoque de los siguientes investigadores se enfoca más a la valoración de las posiciones, como veremos en su momento.
  • 53. 52 Introducción a un lenguaje de patrones ajedrecísticos Se dice que un maestro fuerte de ajedrez tiene en su cabeza alrededor de 50,000 patrones típicos que se dan en el juego. Esto podría explicar por qué un jugador débil no ve con la misma facilidad una buena jugada que su contraparte magistral. Es claro que en muchos sentidos las posiciones tienen características familiares y el hecho de conocer los detalles típicos nos dan la pauta para encontrar la jugada correcta en una partida. Quienes estudien profundamente la táctica ajedrecística notará que ya muchos autores han hecho la tarea por uno, es decir, han catalogado por temas las posiciones: sacrificios en h7, clavada, combinaciones de empate por ahogo, doble ataque, ataque al descubierto, etc. Los temas son muchos pero finitos y en muchos casos las combinaciones, la táctica en ajedrez, se basa en detalles que describen finalmente una posición y que por ende, no hay ni que analizar qué jugada hacer: puestos todos los elementos en su lugar, la combinación nace por sí misma, casi automáticamente. Por eso la recomendación de estudiar táctica no hay que echarla en saco roto. ¿Qué son estos patrones de ajedrez? Posiciones en donde ciertos elementos se repiten y permiten generar una secuencia de jugadas muchas veces ganadoras, o que llevan a la ventaja. Empecemos con la siguiente partida, del autor, contra el Maestro FIDE Isidro Díaz Lombardo. He aquí la posición crítica: XABCDEFGHY 8-+-+-trk+( 7zp-+-wQ-vlp' 6-zp-+-+p+& 5+-tr-+-+-% 4-+-+P+-+$ 3zP-+-+-+-# 2-zP-wq-zPPzP" 1tRL+-+RmK-! xabcdefghy Díaz Lombardo, I. – La_Morsa. México 1993 Juegan las negras
  • 54. 53 1. ... £xf2!! Y las blancas abandonan, ya que después de 2. ¦xf2 ¦c1+ y mate a la siguiente. Pero ahora obsérvese la siguiente posición 46 : XABCDEFGHY 8-+r+-trk+( 7zpR+-vlpzpp' 6q+-+p+-+& 5+-+-zP-+-% 4-+-zP-+-+$ 3+-sN-+Q+-# 2P+-+-+PzP" 1+-+-+RmK-! xabcdefghy Lee-Sakharov Campeonato Mundial Juvenil 1963 Juegan las blancas Es el mismo tema que en la partida contra Díaz Lombardo. Después de 1. ¦xe7 las negras confiaban en 1. ... ¦xc3 especulando con que la dama blanca está defendiendo la torre de f1, pero las blancas dieron una sorpresa: 2. £xf7!! Y las negras abandonaron inmediatamente por el inminente mate. Una posición más en donde el lector podrá hallar el bosquejo de un patrón es ésta47 : 46 The Inner Game of Chess , Andrew Soltis, McKay Chess Library, 1994. 47 Revista New in Chess 98/2
  • 55. 54 XABCDEFGHY 8-+-+-trk+( 7+Q+-+pzpp' 6p+-zp-+-+& 5+-+Pvl-+-% 4P+-+-+-+$ 3+-+-+-+-# 2q+r+-+PzP" 1+R+-+RvLK! xabcdefghy Barua-Maherramzade Ubeda (op) 1998 Juegan las negras El blanco está perdido. Aquí, sin embargo, el conductor de las negras comete un grave error: 1. ... ¦xg2?? Y Barua, ni lerdo ni perezoso contestó: 2. £xf7!! Y las negras se rindieron. Una posición más al respecto 48 : XABCDEFGHY 8-+-+-trk+( 7+-+l+pzpp' 6-+-+-+-+& 5+-zPp+-wq-% 4-+-zPn+-+$ 3+-+-+Q+-# 2-tr-+-+PzP" 1tRN+-+RmK-! xabcdefghy McNab-Mullen Juegan las blancas 48 Mastering Chess, Danny Kopec, Pergamon Press 1985
  • 56. 55 Después de 1. £xf7!! las negras tienen que rendirse. Curiosamente, hace poco, en la página de Chessbase 49 , Frederic Friedel publicó una serie de combinaciones que se dieron en un fuerte torneo en Turquía. Aquí hallé la misma combinación pero con un nuevo atuendo, es decir, en una posición totalmente diferente a las ya vistas: XABCDEFGHY 8-+q+ktr-+( 7+-+l+p+-' 6-+nzPpwQr+& 5+-+-+-+-% 4-+-+-+-+$ 3+N+-+-+R# 2-zPP+-+PzP" 1+-mK-+R+-! xabcdefghy Atakisi, U – Ruck, R 4th IECC Estanbul, Turquía 2003 Juegan las blancas Las negras aquí se equivocaron, pues su última jugada fue 30. ... ¦g4-g6 en lugar de la requerida, 30. ... ¦g4-g8. Y aquí las blancas sorprendieron sin duda a su rival brillantemente: 31. £f7!! ¦f7 32. ¦h8 ¦f8 33. ¦8f8 mate. Notará el atento lector que el tema se repite. El patrón es el mismo incluso cuando la posición no lo parece. Si uno ve decenas de situaciones parecidas, si se le presentan en la práctica, es seguro que hallará la combinación ganadora. En muchos sentidos el ajedrez es búsqueda de patrones conocidos. Para conocerlos entonces hay que ejercitarlos. Es decir, en otras palabras, a trabajar esa visión combinatoria. La pregunta que surge de todo esto es: ¿se puede programar una computadora para que encuentre los patrones típicos? (como los mostrados aquí). Sin duda se necesita de un lenguaje que describa el tablero en las patrones que definan las posiciones ganadoras, y cómo actuar en esos momentos. 49 http://www.chessbase.com
  • 57. 56 Para tratar de entender cómo hacer esto, veamos la imagen 50 , la cual muestra el rostro de una mujer (a la izquierda) y la representación de un programa de computadora que “pinta al óleo” la imagen en cuestión Esto en realidad no es algo nuevo, pues actualmente los programas de procesamiento de imágenes tienen filtros de todo género, por ejemplo, acuarela, al carbón, etc. Sin embargo, la diferencia es que este software pinta de manera imperfecta. Los investigadores a cargo de este trabajo se han preguntado ¿Cómo es que ser humano hace una pintura? Y a partir de esto se entra en el fascinante mundo del “non- photorealistic rendering”, lo cual quiere decir, generación de imágenes no foto-realistas. Las imágenes generadas con este programa nunca se repiten, no son exactamente iguales, cambian porque el software está diseñado a pintar con errores, como los seres humanos. De la misma manera podríamos preguntarnos ¿cómo es que los jugadores juegan al ajedrez? Ya sabemos que ningún jugador de carne y huesos usa los algoritmos que las computadoras utilizan en general para poder jugar. Muchos investigadores de este fenómeno han encontrado que los jugadores de ajedrez no perciben una posición como una entidad estática, sino como una colección de acciones potenciales. Así, entonces, esto puede verse como que un jugador humano busca seguir las jugadas más prometedoras sin considerar todas las alternativas que existen. Para que esto pueda suceder, el jugador de ajedrez tiene que evaluar las posibles jugadas y en muchos casos tiene motivos para desechar muchas jugadas, pues no son las mejores, o al menos no lo parecen. Entonces ¿qué hace? Aparentemente busca esquemas conocidos, patrones muy específicos, en donde las jugadas correctas son claramente identificadas porque hay una continuación que gana o que adquiere una ventaja muy evidente. 50 http://npr.etri.re.kr/
  • 58. 57 A partir de esto surge la pregunta: ¿por qué no incorporar estos patrones a los programas de computadora? Si esto pudiese hacerse, entonces en lugar de que la máquina analizara todas las posibilidades, podrían bien ahorrarse análisis que no lleva a ningún lado. El problema entonces es ¿cómo generar estos patrones de manera que una máquina pueda buscar en ellos y llegar a la conclusión de que hay un patrón específico aplicable? Hay que definir un lenguaje que describa los patrones más comunes, y de forma que sean lo más general posibles, para así llegar a configurar un lenguaje de patrones, que defina de la manera más humana posible, cómo es que pensamos en cada posición de ajedrez. Esto significa que debiese poder definir un lenguaje simbólico, algo parecido al que tiene la geometría analítica, que a través de ecuaciones puede manipular hipérbolas, parábolas y elipses. Así, para quienes sean avezados en estos temas, les debe quedar claro que y = x² habla de una parábola, con centro en (0,0). Por ejemplo, considérese el siguiente patrón, que ya revisamos someramente en el capítulo de Zobrist: XABCDEFGHY 8-+r+-+k+( 7zp-+-+p+p' 6-+-+p+-wQ& 5+-+-+-+-% 4-+q+-+-+$ 3+-+-zP-+P# 2P+L+-zPP+" 1+-+-+-mK-! xabcdefghy Juegan las blancas Aquí el patrón es claro: hay mate en cuatro jugadas (empezando por 1. ¥xh7+). Nótese que en este caso, la situación de algunas piezas parece irrelevante (por ejemplo, los peones blancos y el rey blanco). Desde luego que en algunos casos habrá necesidad de observar si es necesario tomar en cuenta otras figuras en el tablero. Y aunque la idea sería crear un sistema en donde todas estas cuestiones las decidiera el propio software, aún se requiere elaborar mucho más. No obstante esto, si consideramos que los jugadores de ajedrez humanos, al analizar esta posición, bien nos dirán algo así como esto: “mira, el Alfil de c2 amenaza peligrosamente
  • 59. 58 h7, que en realidad está indefenso, pues sólo el rey negro lo protege y en cambio las blancas, además del alfil, tienen su poderosa dama ubicada en h6 con doble ataque a dicho peón. Por otra parte, el peón de f7 no está defendido por nadie, por lo que la combinación de mate 1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.£h7+ ¢f8 4.£xf7# es posible”. El patrón entonces será: la amenaza del Alfil blanco a h7. La misma amenaza, pero ahora con la dama blanca que está en h6, y además, hacer notar que el peón de negro no sólo no está defendido más que por el rey, sino que además, impide el escape del monarca negro del inevitable mate. Esto podría representarse gráficamente así: Nótese que las flechas azules describen las piezas blancas interactuando unas con otras, es decir, cómo se defienden entre ellas. Las flechas rojas, en cambio, muestran las piezas negras que están siendo atacadas por las respectivas piezas blancas. Si quitamos todo lo que sobra, es decir, lo que no interactúa con el patrón que buscamos tendremos el siguiente diagrama definido: XABCDEFGHY 8-+-+-+k+( 7+-+-+p+p' 6-+-+-+-wQ& 5+-+-+-+-% 4-+-+-+-+$ 3+-+-+-+-# 2-+L+-+-+" 1+-+-+-+-! xabcdefghy
  • 60. 59 Y su patrón: Una vez con esta información, bien podemos poner la secuencia de mate u orientar al software para que entonces sólo analice esta posición específica, lo cual quitaría de tajo todos los análisis inútiles que la computadora hace cada vez que valora las jugadas en una posición dada (aunque lo haga muy velozmente, que conste). Si se tiene una colección de patrones, el problema se reduce a hacer una búsqueda en la base de datos de patrones y si se encuentra alguno, ya se sabe qué hacer, cómo jugar, cómo actuar en el tablero. Hay mucha información ajedrecística acumulada, en donde los propios ajedrecistas han catalogado muchas posiciones, con sus correspondientes acciones. Esto es el equivalente a tener patrones con la solución determinada en cada caso. Hay además patrones en estructuras de datos de aperturas 51 pero bien podría haber para finales, ara temas estratégicos, etcétera. Los más comunes son, desde luego, los patrones tácticos. El punto es pues caracterizar las posiciones en ajedrez y la pregunta es ¿cómo se puede hacer esto? Consideremos el patrón inicial con el que he comenzado toda esta discusión: 51 Ver el capítulo sobre CHE, el lenguaje creado por Donninger.