lunes, 26 de septiembre de 2011

Codificación de conocimiento en ajedrez

En mi búsqueda por tener algo parecido a un lenguaje que describa posiciones e información de ajedrez, he hallado algunos interesantes esfuerzos. Uno de ellos es de Christian "Chrilly" Donninger, el autor del programa Nimzo y además, de Hydra, un monstruo de 32 procesadores que no ha perdido una sola partida oficial contra jugadores humanos. Información sobre este proyecto extraordinario (lamentablemente descontinuado), puede verse aquí.

Donninger escribió todo un lenguaje de programación para dotar a su programa "Nimzo", con conocimiento posicional. Dicho lenguaje se llama Che (hay rumores de una comunidad que le ha agregado funcionalidad y que ahora se llama por ello "Che++") y pretende añadir al motor de juego de Nimzo con conocimiento posicional ajedrecístico codificado.

Por ejemplo, se sabe que en el sistema Colle, la estructura de peones blancos en c3, d4, e3, con el afil blanco en d3, contra los peones negros en c5 y d5 (véase diagrama),


Las negras no deben jugar c4, porque fija la estructura y el rompimiento en e4 (que es uno de los motivos del sistema Colle), es entonces más fuerte. La jugada c4 del negro fue típica por algún tiempo entre los programas de computadora, porque los "engines" de ajedrez suponían que esta jugada limitaba la acción del alfil de d3, pero la experiencia entre grandes maestros ha calificado como mala esa jugada.

Donninger describe su lenguaje Che en un interesante artículo que apareció en la revista especializada en ajedrez por computadora (ICCA) y que puede ser consultado aquí (me tomé la libertad de escanearlo Yo compré dicha revista por el artículo y por lo complicado y difícil de acceder a esta información, la puse disponible a los interesados en el enlace mencionado). Donninger ha hecho un trabajo notable con Che. Su sistema está básicamente orientado como un intérprete de Forth y a decir del autor, cualquiera -con conocimientos del elemental lenguaje Basic- puede aprender a alimentar información ajedrecística en Che. En las referencias de Donninger sobre su artículo, menciona la tesis doctoral sobre un programa para dar consejos sobre posiciones de ajedrez. Hay un artículo que habla de eso, que puede leerse aquí. Se llama Chunking for Experience y realmente habla del mismo problema que estoy tratando de resolver: el de tener una manera de describir vía un lenguaje, las posiciones de ajedrez.

Por su parte, Armando Estrada, buen amigo virtual de este blog, me dio la referencia: "Chess skill in Man and Machine" Editado por Peter W. Frey que explica este tipo de representación. capitulo 3 (paginas 54 a 59). Se publicó en 1977. Sin embargo, de lo que habla Armando es de la representación vía bitboards y no es exactamente lo que ando buscando. Este interesante libro de Peter Frey puede obtenerse aquí.


Che puede conseguirse en el programa comercial Nimzo 8, que vendía hace tiempo Chessbase. en él Donninger menciona que explica cómo usarlo y añadir ese conocimiento a Oracle, el sistema de juego que usa Nimzo 8.


Tengo más información al respecto. A quien le interese, escríbame a morsa@la-morsa.com

martes, 13 de septiembre de 2011

Reflexiones sobre el "Chess Query Language"


¿Qué es lo que hace de una posición de ajedrez un patrón en particular? ¿qué elementos son los que hacen que se pueda describir un patrón como ganador -digamos- en una posición particular? Por ejemplo, consideremos la siguiente:

Juegan las blancas
(Patrón 1)

Quien sepa algunas cosas sobre el ajedrez sabrá que las blancas pueden dar mate en cuatro jugadas con 1.Axh7+ Rh8 2.Ag6+! (evitando que la dama negra capture a la blanca), 2. ... Rg8 3. Dh7+ Rf8 4.Df7#. De hecho, no importa dónde esté el alfil blanco siempre y cuando se mantenga en la diagonal b1-h7:

Juegan las blancas
(Patrón 2)

En este ejemplo podríamos caracterizar la posición como un alfil que corre sin interrupción desde b1 hasta h7, con la dama blanca en h6 y el rey negro en g8. Pero... ¿es esto suficiente? Aparentemente sí. Pero consideremos ahora la siguiente posición:

Juegan las blancas
(Patrón 3)

Este patrón parece ser el mismo que en la posición anterior, pero he aquí que cambia totalmente todo el asunto, porque ahora la torre negra de a7 defiende el punto del mate en f7. Aquí, por ejemplo, las blancas no tienen más que tablas: 1.Axh7+ Rh8 2.Ag6+ Rg8 3.Ah7+ y tablas por repetición. Las blancas no tienen mejor opción que esto.

La pregunta aquí es ¿cómo definir los elementos del patrón que hacen que el patrón 1 sea ganador, Mientras que en el patrón 3 el hecho de tener la torre negra en a7 hace imposible que el patrón de mate se dé? Yo quisiera hallar un lenguaje que describiera los patrones, algo así como una geometría analítica para el tablero de ajedrez. Déjenme ponerles un ejemplo:

Considérese la ecuación de la parábola:

Gráfica 1

y=x^2. Sin vemos la expresión, podemos hacer el dibujo que genera la imagen de la parábola, porque la expresión algebraica representa ni más ni menos a la gráfica 1. En este sentido, la expresión algebraica define y caracteriza la parábola mencionada. ¿Podría haber una especie de "lenguaje algebraico" para caracterizar sin errores cualquier posición de ajedrez? Llevo ya un par de años atorado en esta problemática. No veo cómo hacer un lenguaje que caracterice las posiciones del tablero.


Más de uno se preguntará como para qué quiero algo así. Es fácil: imaginen que tengo la siguiente posición, la cual se dio en la siguiente partida:

Paulsen - Schwarz
Lepzig 1879 (match)
3er juego

1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 Qb6 6. a3 Bd7 7. b4 cxd4 8. cxd4 Nge7 9. Nc3 Nf5 10. Na4 Qc7 11. Bb2 Be7 12. Rc1 a6 13. Nc5 Bxc5 14. Rxc5 O-O 15. Bd3 Nfe7?





 
Paulsen-Schwarz
Leipzig 1897 (match)
3er partida
Juegan las blancas 
(Patrón 4)

16. Bxh7+! el clásico "regalo griego". El esquema está dado: el rey negro enrocado. El caballo negro que normalmente está en f6, defendiendo h7 ya no está. El alfil blanco apunta a h7, el caballo en f3 brincará a g5 y la dama blanca entonces se incorporará al ataque.

Si tuviese una manera de describir esta posición vía este "mágico lenguaje" entonces podría hacer búsquedas sobre todas las posiciones en donde este esquema se diese en una base de datos, por ejemplo la megabase 2010. Así, por ejemplo, hallar todas las posiciones con el patrón 4 me permitiría hacer incluso un catálogo o libro con este esquema, y así practicarlo hasta que fuese parte de mi acervo ajedrecístico. Vaya, que escribir libros de ejercicios de combinación sería algo ridículamente simple, pues como autor no tendría que hurgar literalmente en las posiciones, sino que podría pedirle al sistema que hallara el patrón buscado y listo, colección de posiciones para estudiar.

Por ello mismo, el Chess Query Language - CQL, del cual ya hablé aquí antes, es quizás la herramienta que podría solventar las dificultades. Curiosamente el CQL me permite buscar todas las posiciones en un archivo PGN, en donde se dio el regalo griego. Entonces me pregunto: ¿Necesito realmente un lenguaje que describa las posiciones en ajedrez para crear patrones? o bien ¿un lenguaje de consultas en una base de datos es la sustitución natural de este potencial lenguaje y es más que suficiente? Dicho de otra manera, ¿para qué quiero describir posiciones si el CQL me permite crear una búsqueda de un patrón determinado? ¿Será esto equivalente a lo que busco? 

Me llama la atención que el problema de generar un lenguaje descriptor de posiciones sea lo mismo (o al menos equivalente, para hablar con propiedad), que el tener un lenguaje de consultas sobre una base de datos, que finalmente tiene un origen en búsquedas de cadenas. ¿Qué opina lector/a, sobre esto en particular?

viernes, 9 de septiembre de 2011

Dedicarse o no al ajedrez

Eduardo Aguilar (Construajedrez) me ha mandado un comentario para ser publicado en el artículo que escribí sobre que León Hoyos e Ibarra, se retiraban del ajedrez competitivo. Lo pongo en este nuevo artículo porque creo que su comentario merece una atenta reflexión

Dice Eduardo:

Estimado Manuel.


Extrañado por este artículo.


Simplemente te diré que aún y sea cierto que estos jóvenes se retiren porque ellos consideran que no tienen futuro en el ajedrez, eso no valida la hipótesis de que del ajedrez no se puede vivir ya no dignamente sino muy bien.


Es absurdo el planteamiento, es una falacia. De tan evidentemente ilógico que se dificulta refutarlo.
Hay miles de jóvenes egresados de administración de empresas en el país desempleados o trabajando en áreas diferentes de su especialidad pero dudo que alguien afirme que para que queremos profesionales en la administración de empresas.


Estimado Manuel, creo que es tiempo de levantar la toalla y dejar en el pasado el reparto de culpas, hay que dejar el pesimismo para los buenos tiempos.


Cordialmente


Eduardo Aguilar

He aquí mi respuesta:

Hola, Eduardo,

De entrada no creo que sea una decisión descabellada y/o mala, el dejar el ajedrez por estudiar una carrera profesional. Primero, porque evidentemente quien así haga no dejará el ajedrez (véase el caso de Gata Kamsky, por ejemplo), quien después de no poder ganar el Campeonato Mundial, se dedicó a estudiar leyes, casi por obligación de su padre, pero eso no importa. Kamsky terminó la carrera y finalmente cuando ya no pueda competir al nivel de las exigencias actuales, no tiene que tener una vida incómoda o de pocos ingresos por solamente haberse dedicado al ajedrez e incluso, tiene una alternativa más para defenderse en la vida.

Yo entiendo que hay muchos jugadores, ni siquiera de primera fuerza, que viven de dar clases de ajedrez en escuelas particulares. En una ocasión nos invitaron a Russek y a mí a una entrevista radial a las 12 de la noche, con una simpática española llamada Lidia (que tenía o tiene un programa llamado "Lidiando con el futuro"). Hubo un tercer invitado, un señor que jamás habíamos visto, pero que su trabajo era el de enseñar ajedrez a niños en escuelas primarias particulares. No me acuerdo si nos dijo que trabajaba de 11 am a 6 pm... La cuestión es que el señor, cuyo nombre no recuerdo, tenía un sueldo decoroso y probablemente ganaba más que muchos jugadores que quieren vivir ganando torneos pero que, desde luego, difícilmente lo logran por la competencia que hay. Dicho personaje nos confesó que no tenía rating y él calculaba que jugaba más o menos unos 1700 puntos, pero que él no jugaba, ni iba a torneos. Sólo enseñaba.

A mí me parece que el artículo que transcribí está escrito con toda la mala leche. León e Ibarra "no tiran el tablero de ajedrez", eso es una expresión fuera de lugar. Yo creo sin embargo que León tiene razón: no hay apoyo para un jugador joven que quiere dedicarse exclusivamente al ajedrez. Leon Hoyos es un talento, yo siempre lo vi así (y la única partida que jugamos se la gané, pero tenía 10 años :-) )... Y a León lo invitan a reconocerle, darle premios, trofeos por ser el orgullo yucateco, pero no le dan patrocinios, no le contratan un entrenador, nada. ¡Qué tan talento será que hasta Ivanchuk lo tomó como segundo! El gran nivel del ajedrez ya no se puede alcanzar solo. El único en ese sentido es Fischer, pero él fue caso aparte, atípico.

Yo sí creo que se puede vivir del ajedrez. Creo que un arte tan fascinante y obsesivo merece dedicarle la vida.Como Botvinnik apunta: "el ajedrez no es en nada inferior al violín, y tenemos muchos violinistas profesionales".  Lo malo es que las condiciones en el mundo no son fáciles para dedicarse a esto. Y no se trata si la FENAMAC apoya o no. Va más allá. No se trata de repartir culpas y puedo entender que Raúl Hernández, que creo que ha hecho -si bien nos va- una mediocre actuación como presidente de la FENAMAC, podría tener argumentos contundentes por los que León o Ibarra simplemente no pueden ser apoyados como se debiese hacer. La razón es que el país no tiene condiciones para que esto pase. En Ucrania, por ejemplo, salen montones de chavitos que cada vez obtienen títulos más jóvenes. Cito a los actuales, Lahno, Ponomariov, Karjakin, entre otros. ¿Por qué se da? Por dos razones: porque hay escuelas y trabajo especializado para que los chavitos, desde pequeños, se interesen por el ajedrez y de ahí salen las nuevas camadas de maestros. Por otra parte, porque el país entrega recursos para que se desarrollen estas actividades. Lo pondré con una analogía: si tienes un gran jardín y no riegas alguna parte de éste, seguramente se secará esa parte.

Finalmente, cito a Kotov (Piense como un gran maestro - la traducción es mía): "Una vez que se ha obtenido todo el reconocimiento y se ha convertido en gran maestro, uno puede dedicarse de lleno y completamente al arte del ajedrez. Incluso entonces la decisión demanda pensarla muy seriamente; está lejos aún de ser fácil tener que depender de los azares de los resultados de los torneos. Más aún, hay un número de jugadores que son capaces de continuar y seguir la profesión que eligieron, además de lograr excelentes resultados en los torneos".

Hasta aquí mi reflexión...