Vous êtes sur la page 1sur 15

Motor de Juego de Ajedrez Alessandro v1.

0
Chess Engine Alessandro v1.0

Rubiel Alejandro Gonzlez Labarta


Miranda3

1*

, Roniel Lpez lvarez 2, Rolando Jess Hidalgo-Gato Gonzlez-

Universidad de las Ciencias informticas, Cuba, km 5 carretera San Antonio de los Baos, Rpto. Torrens, Boyero, Habana
(email: ralabarta@estudiantes.uci.cu )
1
Universidad de las Ciencias informticas, Cuba, km 5 carretera San Antonio de los Baos, Rpto. Torrens, Boyero, Habana
(email: rlopez@estudiantes.uci.cu )
1
Universidad de las Ciencias informticas, Cuba, km 5 carretera San Antonio de los Baos, Rpto. Torrens, Boyero, Habana
(email: rjhidalgogato@estudiantes.uci.cu )
*

Autor para correspondencia: ralabarta@estudiantes.uci.cu

Resumen
En las ltimas dcadas el anlisis ajedrecstico ha encontrado un complemento imprescindible en el uso de la
computacin como soporte para la realizacin de tareas cada vez ms arduas y complejas, y ampliando los horizontes
del juego ms all de la intuicin y del razonamiento humano. En este contexto los motores de juego de ajedrez
ocupan un lugar privilegiado en el proceso de enseanza aprendizaje, en el ciclo de entrenamiento deportivo, o el
simple entretenimiento. Por otra parte, desde el comienzo del nuevo siglo, con la revolucin tecnolgica
experimentada por la sociedad a nivel global, ha habido un auge en la creacin de motores de ajedrez, que ha derivado
en el surgimiento de abundantes torneos para medir fuerzas entre jugadores virtuales, hacindose casi tan populares
como los que enfrentan a jugadores en vivo, a la vieja usanza. A pesar de ser Cuba una potencia ajedrecstica, careca
de esta clase de software que representara el potencial de los trebejos antillanos a nivel internacional. Por tal motivo el
grupo de desarrollo de soluciones informticas Proteus GDI se plante la creacin de un motor de juego de ajedrez
robusto, adaptable y multiplataforma, obteniendo como resultado la primera versin de Alessandro, que ha superado
las expectativas, convirtindose en uno de los motores de ajedrez ms slidos de Latinoamrica. Alessandro v1.0 es el
primer motor desarrollado en Cuba y representa un hito en la integracin de experiencia deportiva de alto nivel con la
aplicacin de resultados cientficos en campos como la inteligencia artificial.
Palabras clave: motor de juego de ajedrez 1, matemtica aplicada 2, inteligencia artificial 3, Alessandro v1.0 4,
ajedrez por computadora 5
Grupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

Abstract
On last decades the chess analysis has found an indispensable complement in the use of the computers like support
for the realization of tasks each time more arduous and complex, and enlarging the horizons of the game beyond
intuition and of the human reasoning. In this context chess engines conquer a prime site in the process of teaching
learning, in the cycle of sports training, or the simple entertainment. On the other hand, from the beginning of the
new century, with the technological revolution of our society to global level, there has been a prosperity in the
creation of chess engines, that he has drifted in the surging of abundant tournaments to measure forces between
virtual players, becoming almost as popular like the ones that confront real players, to the old usage. In spite of being
Cuba a chess potency, lacked this kind of software that represents the international potential of chess in our country.
For such motive the group of development of information-technology solutions Proteus GDI proposed the creation of
a robust chess engine, adaptable and multi-platform, getting as a result Alessandro's first version, which it has turned
up trumps, becoming more solid one of chess engines in Latin America. Alessandro v1.0 is the first engine developed
in Cuba and represents a milestone in the integration of sports high-level experience with the application of scientific
results in fields like artificial intelligence.
Keywords: chess engine 1, applied mathematics 2, artificial intelligence 3, Alessandro v1.0 4, computers chess 5

Introduccin
Un motor de ajedrez es un programa que sabe jugar ajedrez y que implementa un lenguaje de comunicacin que le
permite hablar con otros programas. El principal objetivo de esta investigacin consiste en la creacin de un motor de
ajedrez de elevado nivel de juego, aplicable a diferentes ramas como la educacin, el entrenamiento deportivo de
carcter profesional o la simple diversin y que sea capaz de lograr una adecuada integracin tanto con las
plataformas visuales existentes como con los sistemas operativos ms populares en la actualidad. Se expondrn una
serie de temticas introductorias al tema, adems de una breve panormica acerca del panorama internacional en
cuanto a motores de ajedrez se refiere. Posteriormente se hace exposicin de las herramientas, mtodos, medios,
tcnicas, algoritmos y otros usados durante el proceso investigativo y de creacin del chess engine en cuestin, y
finalmente se muestras los resultados a nivel de software y durante el proceso de validacin de la aplicacin.
En el siglo XVIII empez a difundirse la idea de crear una computadora capaz de jugar al ajedrez. En el ao 1769, un
jugador de ajedrez autmata llamado El Turco se hizo famoso antes de que se descubriera que era un engao. El
espaol Leonardo Torres y Quevedo construy, en 1912, un autmata capaz de jugar al ajedrez, llamado El
Ajedrecista. Despus de aquellos sucesos, el tema del ajedrez mecnico no se volvi a mencionar y cay en el olvido,
hasta la aparicin de la computadora en la dcada de los 50. Desde entonces, los aficionados del ajedrez y de la
ingeniera informtica han construido mquinas y programas que juegan al ajedrez.

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

Actualmente, las computadoras de ajedrez estn disponibles a precios accesibles, y existen numerosos programas que
pueden jugar al ajedrez en cualquier ordenador personal y derrotar a jugadores profesionales bajo condiciones de
torneo, mientras que algunos de entre los mejores programas comerciales de ajedrez, como Shredder, Fritz, Rybka o
Fruit, han vencido a muchos jugadores de calibre y varios campeones del mundo en tiempos de control muy cortos y
partidas relmpago.
Existen varias causas que motivaron la existencia del ajedrez computarizado, como el entretenimiento propio
(pudiendo permitir que los jugadores practiquen y se diviertan cuando no hay ningn oponente disponible), tambin
como herramienta o soporte de anlisis, para competiciones entre computadoras de ajedrez, y como investigacin o
abastecimiento del conocimiento humano.
Sin embargo, y a pesar de la sorpresa de muchos, el ajedrez nos ha enseado muy poco en lo referente a la
construccin de mquinas que proporcionen inteligencia humana, o hacer cualquier otra cosa que no sea jugar
prodigiosamente al ajedrez. El funcionamiento de los programas de ajedrez consiste, esencialmente, en explorar un
nmero muy elevado de posibles futuros movimientos y aplicarles una funcin de evaluacin al resultado, e idear
nuevos enfoques y estrategias de juego.
Las tcticas basadas en la fuerza bruta son prcticamente intiles para la mayora de problemas que han afrontado los
investigadores de la inteligencia artificial (IA). El estilo de juego de un programa de ajedrez se diferencia en gran
medida del estilo de juego humano, ya que la eleccin del movimiento a jugar es totalmente distinta. En algunos
juegos de estrategia, las computadoras suelen vencer fcilmente la gran mayora de partidas, mientras que en otros,
los principiantes vencen a las mquinas sin mayor esfuerzo. En el ajedrez, el resultado de la fusin de las habilidades
de los expertos, con los programas de ajedrez, es mayor que el de cualquiera de los dos a solas.

Materiales y mtodos o Metodologa computacional


Alessandro v1.0 fue creado usando la metodologa de desarrollo de software SCRUM, y est en el lenguaje de
programacin C++, usando la plataforma Qt Creator como Entorno de Desarrollo Integrado (IDE) y el Qt Framework
como soporte a las diversas tecnologas integradas en la aplicacin.
CRUM: es un marco de trabajo para la gestin y desarrollo de software basada en un proceso iterativo e incremental
utilizado comnmente en entornos basados en el desarrollo gil de software.
Qt Framework: es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con una interfaz
grfica de usuario as como tambin para el desarrollo de programas sin interfaz grfica como herramientas para la
lnea de comandos y consolas para servidores. Utiliza el lenguaje de programacin C++ de forma nativa, y funciona
con independencia del sistema operativo sobre el que est ejecutndose el cdigo, y tiene un amplio soporte.
Qt Creator: es un IDE creado por Trolltech para el desarrollo de aplicaciones con las bibliotecas Qt Framework,
requiriendo su versin 4.x. Los sistemas operativos que soporta en forma oficial son:
Grupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

GNU/Linux 2.6.x, para versiones de 32 y 64 bits con Qt 4.x instalado.


Mac OS X 10.4 o superior, requiriendo Qt 4.x
Windows XP y superiores, requiriendo el compilador MinGW y Qt 4.4.3 para MinGW.

Arquitectura
El primer artculo sobre el tema fue escrito por Claude Shannon1, y publicado en 1950, antes de la existencia de una
computadora que jugara al ajedrez, y predijo acertadamente las dos posibles principales formas de bsqueda de
cualquier programa, a las que nombr de 'Tipo A', y de 'Tipo B'.
Los programas 'Tipo A', ms rudimentarios, utilizaran una bsqueda basada en la "fuerza bruta", los cuales
examinaran todas posibles posiciones de cada rama del rbol de movimientos usando el algoritmo minimax. Shannon
crey que esto sera muy poco prctico por dos razones:

Primero, con aproximadamente 30 movimientos posibles en una posicin tpica de medio juego, Shannon
predijo que buscando las 302 (ms de 700.000.000) posiciones contenidas en los primeros tres movimientos
(de ambos bandos, lo que son 6 plies), tardara aproximadamente 16 minutos, incluso en el caso "muy
optimista" que el programa evaluara un milln de posiciones por segundo. Despus de esta conjetura, se tard
alrededor de 40 aos para conseguir esa velocidad.

Segundo, se ignoraba el problema de la latencia, ya que el programa trata de evaluar la posicin resultante
despus de todo el intercambio de piezas ocurrido durante todos esos movimientos al final de cada rama del
rbol. Los programas de 'Tipo A' funcionan as, pero el inconveniente es que se incrementa enormemente el
nmero de posiciones necesarias para el anlisis, y de este modo el programa se ralentizaba todava ms.

En vez de este gastar la potencia de proceso examinando movimientos malos o triviales, Shannon sugiri que a los
programas tipo B utilizaran una especie de "inteligencia artificial estratgica" para solucionar estos problemas en los
que nicamente se analizaran solo las mejores jugadas de cada posicin, algo parecido a lo que hacen los jugadores
humanos. Esto permitira al programa analizar las lneas significantes de manera ms profunda en un tiempo
razonable.
Adriaan de Groot entrevist a varios jugadores de ajedrez de varios niveles y su conclusin fue que tanto los grandes
maestros como los principiantes calculan aproximadamente cuarenta o cincuenta posiciones antes de decidir que
jugada mover. Lo que realmente diferencia a jugadores expertos de jugadores mediocres es la habilidad del
reconocimiento de patrones, que se va adquiriendo con la experiencia. Esto permite analizar ms profundamente las
mejores lneas y no perder el tiempo con otras peores. Una prueba de ello es que los jugadores de ajedrez recuerdan
muchas de las posiciones jugadas en anteriores partidas y aprenden de la experiencia, sin embargo, las computadoras
no lo tienen tan fcil.

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

El problema de los programas 'Tipo B' es que se confa demasiado en que el programa puede decidir qu movimientos
son suficientemente buenos para ser dignos de consideracin en cualquier posicin, siendo un problema mucho ms
grave que en programas 'Tipo A' con un hardware de gran velocidad.
En 1973, la Universidad de Northwestern, encargada de la creacin de programas de Tipo B, dej de programarlos,
pasando al bando de los programas de Tipo A. Fue la creadora de una varios de programas de ajedrez que ganaron los
primeros tres torneos ACM Computer Chess Championships (1970-1972). El programa de Tipo A resultante fue
"Chess 4.0", ganador del torneo ACM durante 5 aos seguidos, adems de inaugurar uno de los campeonatos ms
importantes, el World Computer Chess Championship (WCCC).
Una de las razones por las que realizaron el cambio fue porque encontraban a los programas de Tipo B poco
estimulantes durante los torneos, ya que es muy difcil predecir lo que van a mover, y mucho menos el por qu. Otra
razn fue que en los programas de Tipo A era mucho ms fcil detectar los fallos del programa y depurarlos, y
lograron hacer de l un programa lo suficientemente rpido: en el tiempo que solan tomar para decidir los
movimientos que eran dignos de ser buscados, era posible nicamente buscar todos ellos.
De hecho, Chess 4.0 estableci un paradigma que era y contina utilizndose en todos los programas de ajedrez
actuales. Los programas tipo Chess 4.0 ganaban por la simple razn que sus programas simplemente jugaban un
mejor ajedrez. Tales programas no intentaban imitar los procesos de pensamiento humanos, pero confiaban
completamente en bsquedas alfa-beta y Negascout. Muchos de tales programas (incluyendo todos los programas
actuales) tambin incluyen una parte selectiva bastante limitada de la bsqueda basada en bsquedas latentes y
normalmente extensiones y podado (particularmente podado de movimientos nulos desde los aos 1990) que eran
lanzadas basadas en ciertas condiciones en un intento de eliminar o reducir los movimientos malos obvios (histricos
de movimientos) o investigar nodos interesantes (p.ej. comprobacin de extensiones, peones pasados en la sptima
fila, etc). Sin embargo, los lanzamientos de extensin y poda tienen que utilizarse con mucho cuidado. Si se
sobrextiende el programa gastan demasiado tiempo analizando posiciones sin inters. Si se poda demasiado, hay
riesgos de cortar nodos interesantes. Los programas de ajedrez difieren en trminos de cmo y qu tipos de reglas de
poda y extensin se utilizan as como de la funcin de evaluacin. Se cree que algunos programas son ms selectivos
que otros (por ejemplo Deep Blue se sabe que es menos selectivo que muchos programas comerciales porque poda
permitirse hacer ms bsquedas completas), pero todos tienen una base de bsquedas como fundamento y todos
tienen componente selectivos (bsqueda-Q, poda/extensiones).
Aunque tales adiciones significa que el programa realmente no examinara cada nodo dentro de la profundidad de
bsqueda (de tal manera que no sera realmente fuerza bruta en ese sentido), los extraos errores debidos a estas
bsquedas selectivas se encuentra que consumen en tiempo extra que es ahorrado debido a que se podra aumentar la
profundidad. De esa manera los programas de ajedrez pueden obtener lo mejor de ambos mundos.
Adems, el desarrollo y los avances tecnolgicos hicieron que el sistema de fuerza bruta continuara en alza y se
intensificara mucho ms en los aos 90. El resultado ha sido la creacin de programas mucho ms slidos, con una IA
Grupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

tctica realmente asombrosa, programas mucho ms exactos sin apenas errores, y conducidos hacia el lmite de su
profundidad de bsqueda. Esto ha producido resultados extraordinarios, por lo menos en lo referente al ajedrez,
dejando que las computadoras hagan lo que mejor saben hacer, calcular, en vez de intentar emular la inteligencia y
conocimiento humanos. En 1997, Deep Blue, una computadora de Tipo A, derrot al Campen del Mundo Garry
Kasparov, siendo la primera vez que una computadora derrotara al campen del mundo en tiempos de control de
torneo.
Sin embargo, a finales de los aos 1990, los programadores empezaron a preferir los programas de Tipo B, y
empezaron a sustituir a los de Tipo A. En 1998 se publica Rebel 10, un programa comercial de Tipo B, quien derrot
a Viswanathan Anand por 5-3, y se proclam el segundo motor de ajedrez ms fuerte del mundo aquel ao. Cabe
decir que de las cuatro partidas de ajedrez rpido (tiempo de control: 5 min + 5 s por jugada) que se jugaron, Rebel
gan 3 de ellas, en las dos partidas semirrpidas, quedaron 1.5-0.5 a favor de Rebel, y en la partida con tiempo de
control ms largo (40/2:00, 1 hora), fue Anand quien venci. De esto se puede deducir que las computadoras juegan
mejor que los humanos en tiempos de control ms rpidos, pero que la fuerza de los jugadores se mide con tiempos de
control ms largos, donde Anand demostr que los humanos siguen siendo mejores.3
A principios del Siglo XXI surgieron nuevos programas de ajedrez comerciales, como Deep Junior, o Fritz, quienes
lograron empatar a los campeones del mundo Garry Kasparov y Vladmir Krmnik. En el 2005, Hydra, una
computadora de ajedrez del Tipo B, derrot al mejor jugador britnico y sptimo mejor clasificado del mundo,
Michael Adams, en un encuentro de seis partidas con un contundente resultado: 5.5 - 0.5 a favor de Hydra.4

La Novedad: En Alessandro v1.0 se combinan los programas Tipo A con los Tipo B aprovechando las fortalezas que
brinda cada uno, la imitacin de los procesos del pensamiento humano de los primeros y la intencin de aprovechar
las capacidades de cmputo de los ordenadores del segundo. Con tales intenciones se hace uso de un conjunto de
algoritmos propios de la IA que aseguran incrementar exponencialmente la fuerza de juego del motor.
Algoritmo Minimax: En teora de juegos, Minimax es un mtodo de decisin para minimizar la prdida mxima
esperada en juegos con adversario y con informacin perfecta. Minimax es un algoritmo recursivo.
Su funcionamiento puede resumirse como elegir el mejor movimiento para ti mismo suponiendo que tu contrincante
escoger el peor para ti.

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

Figura 1. Algoritmo Minimax.

Poda alfa beta: es una tcnica de bsqueda que reduce el nmero de nodos evaluados en un rbol de juego por el
algoritmo Minimax. Se trata de una tcnica muy utilizada en programas de juegos entre adversarios como el ajedrez.
El problema de la bsqueda Minimax es que el nmero de estados a explorar es exponencial al nmero de
movimientos. Partiendo de este hecho, la tcnica de poda alfa-beta trata de eliminar partes grandes del rbol,
aplicndolo a un rbol Minimax estndar, de forma que se devuelva el mismo movimiento que devolvera este,
gracias a que la poda de dichas ramas no influye en la decisin final.

Figura 2. Poda alpha-beta.

En Pseudocdigo:
funcin alfabeta(nodo, profundidad, , )
si nodo es un nodo terminal o profundidad = 0
devolver el valor heurstico del nodo
para cada hijo de nodo
:= max(, -alfabeta(hijo, profundidad-1, -, -))
si
break
devolver
(* Llamada inicial *)
alfabeta(origen, profundidad, -infinito, +infinito)

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

Negascout: es una variante del algoritmo Minimax, es un algoritmo que combina la relacin matemtica del
Negamax y el uso de ventana nula. Tambin llamado "bsqueda de la variante principal" este algoritmo puede ofrecer
rendimientos incluso mayores a la poda alfa-beta si los nodos se encuentran correctamente ordenados.
Al igual que alfa-beta, negascout es un algoritmo de bsqueda direccional para calcular el valor minimax de un nodo
en un rbol. La mejora del algoritmo negascout sobre el algoritmo alfa-beta es que el primero no examinar un nodo
que el segundo podara.

En Pseudocdigo:
int negascout(nodo, profundidad, , ) {
if (esTernimal(nodo) || profundidad==0)
return valorHeuristico(nodo);
b = ; // la ventana inicial es (-, -)
foreach nodoHijo
a = -negascout (hijo, profundidad-1, -b, -);
if (a>) = a;
if (>=)
return ; //Corte Beta
if (>=b) //comprueba si fallo la ventana nula
= -negascout(hijo, profundidad-1, -, -);
bsqueda completa
if (>=)
return ; //Corte Beta
b = +1; //Crea nuava ventana nula
return ;
}

//Nueva

Otros algoritmos empleados son el de poda del movimiento nulo y bsquedas latentes, facilitado este ltimo por una
estructura de almacenamiento en forma de histrico de movimientos que hace posible su efectividad.
Inteligencia Artificial (IA o AI): Es la caracterstica ms importante que se le atribuye a un motor al lado de la
representacin de modelos. La IA provee de estmulo al juego. Es crtico en la parte de la forma de juego (game play).
La inteligencia artificial de determinado juego puede tornarse muy compleja, primero se debe definir la lnea base del
comportamiento de los elementos implicados en el juego. Es un sistema de reglas para las acciones que responden (o
inician) y que el jugador debe responder.
Game play Emergente (Forma de Juego Emergente): Consiste en programar al AI con un conjunto de reglas que le
permitan la aplicacin adherir situaciones que el programador no previera.

Resultados y discusin
Tablas de finales
Las computadoras, desde sus inicios, analizaban completamente las posiciones de los finales. Las bases de datos de
finales10 estn generadas por adelantado usando el anlisis retrospectivo, empezando con posiciones donde el
Grupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

resultado final es conocido (por ejemplo en posiciones donde un bando ha ganado por jaque mate), y analizar qu
movimientos han conducido a la combinacin final de piezas. Ken Thompson, ms conocido por ser uno de los
creadores del sistema operativo UNIX, fue uno de los pioneros en este tema.
Durante mucho tiempo, los programas de ajedrez tuvieron graves problemas al jugar los finales, y eran muy dbiles
en dicho tramo de la partida, debido a la necesidad de una alta profundidad de bsqueda. Con distintos programas de
alto nivel fueron incapaces de vencer en posiciones que cualquier humano de nivel intermedio sera capaz de ganar.
A veces, los resultados de los anlisis de las computadoras sorprenden a las personas. En 1977, Belle, la mquina de
ajedrez de Ken Thompson, usando la tabla de finales KQKR, logr empatar una posicin, en teora perdida, de Rey y
Torre contra Rey y Dama, contra varios jugadores norteamericanos profesionales.
Muchos Grandes Maestros rehusaron jugar contra la computadora en los finales de dama contra torre, pero Walter
Browne acept el desafo. En la partida se produjo un final de dama contra torre, donde la dama poda ganar en treinta
movimientos, con un juego perfecto. Browne dispona de dos horas y media para jugar cincuenta movimientos.
Despus de cuarenta y cinco movimientos, Browne acept las tablas, siendo incapaz de forzar el mate o ganar la torre
en los siguientes cinco movimientos. En la posicin final, Browne estaba todava a diecisiete movimientos de
conseguir el jaque mate, pero no muy lejos de capturar la torre. Browne analiz el final, y jug contra la computadora
una semana ms tarde. Esta vez, captur la torre en el movimiento cincuenta, finalizando con una posicin ganadora.
Los avances en las tablas de finales de Ken Thompson, produjeron que a principios de los aos 80, se cambiara la
regla de los cincuenta movimientos, al demostrar que ciertos finales necesitaban ms de cincuenta movimientos para
poder vencer, como el final de rey, torre y alfil, contra rey y torre.
Con el paso del tiempo se han ido publicando otros formatos de bases de datos de finales, incluyendo la base de datos
Edward, la base de datos De Koning (publicada en 2002) y las Bases de Datos Nalimov, que es el formato ms
utilizado en la actualidad, soportado por la mayora de los programas de ajedrez como Shredder y Fritz. Casi todos los
finales de seis o menos de seis piezas, y varios de siete piezas, han sido analizados por completo.
Las bases de datos se crean almacenando en la memoria valores de las posiciones, y usando estos resultados para
podar los finales de los rboles de bsqueda si surgieran de nuevo. Aunque el nmero de posibles partidas despus de
que un nmero de movimientos aumente exponencialmente con el nmero de jugadas, el nmero de las posibles
posiciones con unas pocas piezas es exponencial solamente en el nmero de piezas - y eficazmente limitado, sin
embargo algunas jugadas de los finales son analizadas. El tener que recordar el valor de todas las posiciones obtenidas
con anterioridad significa que el factor limitante para resolver finales se reduce simplemente a la cantidad de memoria
disponible en el ordenador. Es por ello que mientras los tamaos de las memorias de los ordenadores continen
aumentando, no hay razn para creer que los finales de elevada complejidad no continen resolvindose.
Una computadora que usa estas bases de datos va, al alcanzar la posicin en ellas, a poder jugar perfectamente, e
inmediatamente determinar si la posicin acaba en victoria, derrota, o tablas. El conocimiento de si la posicin acaba

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

en victoria, derrota, o tablas, tambin es til de antemano, puesto que puede ayudar a la computadora a evadir o
encaminarse hacia dichas posiciones dependiendo de la situacin.
Las tablas de finales tomaron gran importancia en 1999, cuando Kasparov jug una partida de exhibicin en Internet
contra el Resto del Mundo, en la cual hubo cierta polmica.5 En dicha partida llegaron a un final de siete piezas, Reina
y Pen, cuando el Resto del Mundo intentaba conseguir unas tablas. Eugene Nalimov colabor generando el final de
seis piezas cuando ambos bandos tenan dos Reinas, lo cual ayud en gran medida al anlisis.

Algunos elementos tcnicos


Los desarrolladores de sistemas de computadoras de ajedrez tienen que decidir varias cuestiones de implementacin
fundamentales. Estas son:

Representacin del tablero: cmo se representa una posicin simple en estructuras de datos.

Tcnicas de bsqueda: cmo identificar los posibles movimientos y seleccionar los ms prometedores para
examinarlos posteriormente.

Evaluacin de hojas: cmo evaluar el valor de una posicin del tablero, si no se hace una bsqueda posterior.

Los programadores tambin necesitan decidir si utilizarn bases de datos de finales u otras optimizaciones y a
menudo implementar estndares de ajedrez comunes de facto.
Representacin del tablero
La estructura de datos utilizada para representar cada posicin de ajedrez es clave para el rendimiento de la
generacin de movimientos y la evaluacin de posiciones. Los mtodos incluyen el almacenamiento de las piezas en
un array, las posiciones de las piezas en una lista ("lista de piezas"), colecciones de conjuntos de bits para la
localizacin de piezas y posiciones codificadas con codificacin Huffman para compactar el almacenamiento a largo
plazo.
Tcnicas de bsqueda
Los programas de ordenador de ajedrez consideran los movimientos como un rbol de juego. En teora, examinan
todos los movimientos y entonces todos los contra-movimientos a stos y despus todos sus respectivos contramovimientos, y as sucesivamente, donde cada movimiento individual se llama "hebra" o "ply". Esta evaluacin
contina hasta que llega a una "hoja" final que es evaluada.
Sin embargo, una implementacin simplista de esta tcnica nunca se terminara en una cantidad de tiempo prctica,
como consecuencia de esto se han ideado varios mtodos para aumentar la velocidad de bsqueda para buenos
movimientos.
Evaluacin de hojas
Para muchas posiciones de ajedrez, los ordenadores no pueden considerar todas las posibles posiciones. En vez de
ello, tienen que seguir unas cuantas hebras y entonces evaluar la posicin final en el tablero. El algoritmo que evala

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

10

las posiciones finales se denomina funcin de evaluacin y estos algoritmos frecuentemente son enormemente
diferentes entre los distintos programas de ajedrez.
Las funciones de evaluacin tpicamente evalan posiciones en centsimas de pen y consideran el valor del material
junto con otros factores que afectan la fuerza de cada bando. Cuando se cuenta el material de ambos bandos, los
valores tpicos para piezas son 1 punto para un pen, 3 puntos para los caballos y los alfiles, 5 puntos para las torres y
9 puntos para una dama. Por convencin, una evaluacin positiva favorece a las blancas y una negativa a las negras.
Al rey algunas veces se le da un valor arbitrario alto como 200 puntos (artculo de Claude Shannon) o 1.000.000 de
puntos (programa de la URSS de 1961) para asegurar que un mate sobrepasa al resto de factores. Las funciones de
evaluacin tienen en cuenta muchos factores, como la estructura de peones, la pareja de alfiles, la centralizacin de
las piezas, etc. Tambin se suele considerar la proteccin del rey, as como la fase en la que se encuentra la partida
(apertura, medio juego o final).
Utilizando bases de datos de finales
Algunos operadores de computadoras de ajedrez han apuntado que las bases de datos de finales tienen el potencial de
debilitar el rendimiento en computadoras de ajedrez si se utilizan incorrectamente. Como algunas posiciones son
analizadas como victorias forzadas por un bando, el programa evitar las posiciones del bando perdedor a toda costa.
Sin embargo, muchos finales slo son forzados con un juego muy preciso, donde incluso un ligero error producira un
resultado diferente. Consecuentemente, muchas mquinas modernas jugarn muchos finales suficientemente bien para
sus propios intereses. Un sntoma de este problema es que los ordenadores pueden abandonar demasiado pronto
porque ven que estn siendo forzados en una posicin que est perdida tericamente (aunque pueden estar a treinta o
ms movimientos del final de la partida y a muchos oponentes humanos les costara mucho ganar en ese tiempo). Esta
observacin slo es relevante cuando un programa de ordenador est en una situacin donde tiene que elegir entre dos
movimientos perdedores, uno de los cuales de hecho es ms difcil para el oponente, pero condice a una posicin en la
base de datos con un valor conocido y es incluso de mucha menor importancia.
Las bases de datos de Nalimov no consideran la regla de los cincuenta movimientos, en la que una partida donde pase
cincuenta movimientos sin una captura o sin mover un pen pueda ser reclamada como tablas por un jugador. Esto da
como resultado una base de datos que devuelve resultados como "Mate forzado en 66 movimientos" en algunas
posiciones que seran tablas debido a la regla de los cincuenta movimientos. Sin embargo, una mquina correctamente
programada conoce la regla de los cincuenta movimientos y en ningn caso utilizando una base de datos de finales
elegira el movimiento que conducira a la victoria ms rpida (incluso si sobrepasara la regla de los cincuenta
movimientos con un juego perfecto). Si jugando con un oponente no se utiliza una base de datos de finales, tales
elecciones daran buenas oportunidades de victoria dentro de la regla de los cincuenta movimientos.
Una razn para esto es que si las reglas del ajedrez cambiaran otra vez, dando ms tiempo para ganar tales posiciones,
no sera necesario regenerar todas las bases de datos. Tambin sera muy fcil para el programa utilizar las bases de
datos para notar y tener en cuenta esta 'caracterstica'.
Grupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

11

Las bases de datos de Nalimov, que utilizan el estado del arte de las tcnicas de compresin, necesitan 7.05 GB de
espacio en disco duro para todos los finales de cinco piezas. Para cubrir todos los finales de seis piezas necesita
aproximadamente 1.2 terabyte. Se estima que las bases de datos de siete piezas necesitarn ms capacidad de
almacenamiento de la que estar disponible en el futuro previsible.
Es sorprendente, pero fcilmente comprobable, que sin una base de datos de finales incluso computadoras de ajedrez
ms fuertes puedan fallar a la hora de encontrar un plan ganador incluso en finales con seis o menos piezas, cuando
necesitan ms movimientos que el horizonte de clculo para conseguir un jaque mate, una ganancia de material o el
avance de un pen. Muchos finales necesitan ms movimientos que su horizonte de clculo.
Otras optimizaciones
Muchas otras optimizaciones se pueden utilizar para realizar programas de ajedrez ms fuertes. Por ejemplo, las tablas
de transposiciones se utilizan para grabar posiciones que ya han sido evaluadas, para evitar recalcularlas. Las tablas
de refutacin almacenan movimientos clave que "refutan" lo que parece ser un buen movimiento, stas se utilizaron
por primera vez en las variantes (ya que un movimiento que refuta una posicin es probable que refute otra). Los
libros de aperturas ayudan a los programas de computadoras dando las aperturas comunes que son consideradas
buenas (y buenos caminos contra las aperturas ms pobres).
Por supuesto, con hardware de ms velocidad y procesadores adicionales se puede mejorar la capacidad de los
programas de ajedrez y algunos sistemas (como Deep Blue) utilizan hardware especializado en ajedrez en vez de
nicamente implementaciones software.
Estndares
Los programas de ajedrez para computadoras normalmente soportan varios estndares comunes de facto. Casi todos
los programas actuales pueden leer y escribir movimientos de ajedrez en el formato PGN y pueden leer y escribir
posiciones individuales en formato FEN. Los antiguos programas de ajedrez frecuentemente slo comprenden la
notacin algebraica larga, pero los usuarios actuales esperan que los programas de ajedrez comprenda la notacin
algebraica convencional.
Muchos programas de computadora de ajedrez se dividen en un motor (que calcula el mejor movimiento de la
posicin actual) y una interfaz de usuario. Muchos motores estn separados del interfaz de usuario y las dos partes se
comunican entre s utilizando un protocolo de comunicacin pblico. El protocolo ms popular es el protocolo
Xboard/Winboard Communication. Otro protocolo abierto de comunicacin de ajedrez alternativo es el Universal
Chess Interface. Dividiendo los programas de ajedrez en estas dos piezas, los desarrolladores slo tienen que
programar el interfaz de usuario o el motor, sin la necesidad de escribir ambas partes del programa.
Fuerza de juego contra velocidad de proceso
Se ha estimado que al doblar la velocidad de computacin se gana aproximadamente entre cincuenta y setenta puntos
de Elo en fuerza de juego.

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

12

Sin embargo, esto se aplica principalmente a matches entre computadoras y no a matches entre computadoras y
humanos, donde este incremento sera bastante menor.

Figura 3. Diagrama de paquetes y mdulos del Chess Engine Alessandro v1.0

Figura 4. Rating ELO de Enero 2014 segn CCRL6.

Conclusiones
Con la realizacin del motor de juego Alessandro v1.0 vio la luz el primer motor de juego de ajedrez creado en Cuba,
un software libre que sirve de apoyo al proceso de enseanza-aprendizaje, adems de posibilitar su uso para el
entrenamiento de alto nivel de los usuarios y la participacin del motor en torneos internacionales en representacin
Grupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

13

de Cuba, demostrando la fuerza histrica del ajedrez en la Isla. Entre los principales logros de Alessandro v1.0
pueden notarse los buenos resultados en los torneos en que ha participado, la capacidad de integracin con las
diferentes plataformas y protocolos de comunicacin visual existentes para programas de ajedrez, y la independencia
del sistema operativo sobre el que se encuentre corriendo la aplicacin.
Se incorporaron novedades significativas en la arquitectura del engine, partiendo de la conjugacin de elementos de
simulacin del pensamiento humano y aprovechamiento de las potencialidades de los dispositivos informticos, que
contribuyeron a elevar de manera sustancial el nivel de juego frente a humanos y mquinas. Finalmente se
incorporaron al software una serie de optimizaciones que zanjaron deficiencias presentadas por la aplicacin en sus
versiones anteriores.

Referencias
1. What is a Game Engine? Tomado de GameCareerGuide.com
2.

Shannon, Claude E. (1950), "Programacin de una Computadora para Jugar al Ajedrez", Philosophical
Magazine, vol. Ser.7, Vol. 41, no. 314

3. Rebel vs Anand. http://www.rebel.nl/anand.htm


4. Hydra vs Michael Adams. http://www.chessposter.com/spanish/grandes_juegos/hydra_adams_e/hydra_vs_adams_e.htm
5. Kasparov vs. El Resto del Mundo Polmica. http://www.elmundo.es/1999/10/22/sociedad/22N0127.html
6. Rating ELO de Enero 2014 segn CCRL (http://computerchess.org.uk/ccrl/4040/rating_list_all.html)

Bibliografa
1 S. Akl, D. Barnard and R. Doran: The Design, Analysis and Implementation
of a Parallel Alpha-Beta Algorithm, IEEE Transactions on Pattern Analysis and
Machine Intelligence, PAMI-4, (2), (1982) 192-203.
2. J. H. Condon and K. Thompson: Belle Chess Hardware, Advances in Computer
Chess III, Pergamon Press, (1972) 44-54.
3. C. Donninger: Null move and Deep Search: selective-search heuristics for obtuse
chess programs ICCA Journal, Vol. 16, No. 3, (1993) 137-143.
4. C. Donninger and U. Lorenz: The Chess Monster Hydra, Univesitat Paderborn, Faculty of Computer Science, Electrical Engineering and Mathematics,
Paderborn, Germany, www.hydrachess.com, 2004.
5. R. Feldmann, B. Monieni, P. Mysliwietz and O. Vornberger: Distributed
game tree search, in Parallel algorithms for machine intelligence and pattern recogGrupo Editorial Ediciones Futuro
Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

14

nition, 1990.
6. R. Finkel and J. Fishburn: Parallelism in Alpha-Beta Search, Artificial Intelligence (1982) 89-106.
The Method of the Chess Search Algorithms Parallelization ... 187
7. P.W. Fray: An introduction to Computer Chess. Chess Skill in Man and Machine, Texts and monographs in computer science, Springer-Verlag, New York,
N.Y. , 1977.
8. R. Hyatt: A High-Performance Parallel Algorithm to Search Depth-First Game
Trees, Ph.D. Dissertation, University of Alabama at Birmingham, 1988.
9. R. Hyatt, A. Gower and H. Nelson: Cray Blitz, Advances in Computer Chess
4, Pergammon Press (1986) 8-18.
10. R. Hyatt, H. Nelson and A. Gower: Cray Blitz - 1984 Chess Champion,
Telematics and Informatics (2) (4), Pergammon Press Ltd. (1986) 299-305.
11. R. Hyatt, B. Suter and H. Nelson: A Parallel Alpha/Beta Tree Searching
Algorithm, Parallel Computing 10 (1989) 299-308.
12. F.H. Hsu, T.S. Anatharaman, M. Campbell and A. Nowatzyk: Deep
Thought, Computers, Chess and Cognition, chapter 5, Springer Verlag (1990)
55-78.
13. F.H. Hsu: IBMs Deep Blue Chess Grandmaster Chips, IEEE Micro 19(2), (1999)
70-80.
14. D. Knuth and R. Moore: An Analysis of Alpha-Beta Pruning, Artificial Intelligence 6 (1975) 293-326.
15. B. Kuszmaul: Synchronized MIMD Computing, Ph.D. Thesis, MIT, 1994.
16. T. Marsland and M. Campbell: Parallel Search of Strongly Ordered Game
Trees, ACM Computing Surveys (4) (1982) 533-551.
17. T. Marsland and M. Campbell: Methods for Parallel Search of Game Trees,
Proceedings of the 1981 International Joint Conference on Artificial Intelligence,
1981.
18. T. Marsland, M. Campbell and A. Rivera: Parallel Search of Game Trees,
Technical Report TR 80-7, Computing Science Department, University of Alberta,
Edmonton, 1980.
19. T. Marsland, M. Olafsson and J. Schaeffer: Multiprocessor Tree-Search
Experiments, Advances in Computer Chess 4, Pergammon Press (1986) 37-51.

Grupo Editorial Ediciones Futuro


Universidad de las Ciencias Informticas. La Habana, Cuba
rcci@uci.cu

15

Vous aimerez peut-être aussi