Todo
ajedrecista que quiera mejorar, debe hacer ejercicios de táctica. Estos ayudan
a crear la visión cuando hay una posible combinación, lo cual es básicamente un
reconocimiento de patrones. El ajedrez se puede estudiar precisamente porque se
repiten las situaciones. En ocasiones es difícil hallar el o los motivos que
hacen que una combinación sea posible, pero claramente existen configuraciones,
patrones, que nos permiten descubrir las posibilidades combinativas en ciertos
momentos de la partida.
Hoy tenemos
muchos libros de ejercicios de táctica. ¿Cómo es que fueron escritos? El
primero que se me ocurre es el de Fred Reinfeld, “1001 combinaciones de mate”.
Se hizo cuando no había computadoras y probablemente el autor recolectó, a
través de los años (tampoco había Internet), cientos de posiciones. Cuando tuvo
1001 mates interesantes, los plasmó en un libro. Fue una labor de años,
probablemente. Hoy, sin duda, este trabajo es mucho más fácil de hacer.
Por
ejemplo, tenemos un ejército de youtubers e influencers, que cada vez que
ocurre una combinación brillante en algún torneo, la publicitan en sus
respectivos canales de videos. Así, viendo los canales de algunos de estos
entusiastas creadores de contenido de ajedrez, podríamos ir recolectando
partidas de forma mucho más sencilla.
Pues bien,
pensando en esto, se me ocurrió discurrir sobre la posibilidad de escribir una
aplicación (software), para que dado un archivo PGN (una colección de
partidas), me dijera el sistema en qué momento se dio alguna combinación.
Evidentemente
el problema es definir lo que es una combinación para la computadora. Algunos
criterios podrían ser:
- ·
Secuencia
forzada con ganancia material
- ·
Mate
en N jugadas
- ·
Sacrificio
seguido de ventaja clara
- ·
Evaluación
que cambia drásticamente (ej. +0.5 → +5.0)
-
Para ello
podemos usar un motor de ajedrez como Stockfish, Houdini, etcétera. El único
requisito sería usar el protocolo UCI para comunicarse con el programa de
ajedrez para que nos ayudara en esta labor.
El flujo
sería algo como esto:
Archivo PGN
→ Parser → Tablero posición por posición → Motor de ajedrez → Detección de
combinación → Reporte
Un detector
de combinaciones debe entonces definir las reglas de esta manera:
- Si la
evaluación cambia más de X puntos → posible combinación
- Si hay
sacrificio + mejora → combinación
- Si hay mate
en N → combinación
Por
ejemplo, el reporte potencial que debería entrega el software es:
Partida 12
(Kasparov vs Topalov)
- → Jugada
24: combinación detectada
- →
Evaluación: +0.3 → +6.5
Habría que
ver, más adelante, si puede saberse qué tipo de combinación es la que ocurre,
por ejemplo:
→ Tipo:
sacrificio + ataque
pero por lo
pronto, nos bastaría saber si el cambio radical en la valoración del motor de
ajedrez, es suficiente como para definir que existe una combinación.
Yo estoy
convencido que no es un criterio absoluto y que habrá un alto porcentaje de
combinaciones detectadas únicamente usando este criterio. No obstante, podrá
haber "falsos positivos", con los que habrá que lidiar.
Por ende,
me senté a escribir mi analizador de partidas de ajedrez. La conexión entre el
engine de ajedrez y mi programa (en Delphi 7), fue quizás lo más complicado.
Primero usé un componente de terceros, pero parece que no usa threads (hilos e ejecución, que son una forma de
ejecutar código en
paralelo al flujo principal de tu programa), y entonces la
interfaz gráfica se congela de manera aleatoria. Gemini me dio la solución (y
hasta me ayudó con el fragmento de código), y entonces todo fluyó.
La imagen
1 muestra mi software evaluando una partida mía, en
donde hice una simpática combinación al buen amigo, el Dr. en Física, Efraín
Chávez, que reconozco, siempre tuvo mala suerte conmigo cuando nos tocó jugar
(y que con él lo hemos comentado en más de una ocasión). La partida está analizada aquí.
Imagen 1
Nótese la
valoración que da Stockfish en LiChess, la cual se mantiene bastante parecida.
Las diferencias son porque LiChess tiene computadoras y servidores más robustos
y rápidos. Sin embargo, en mi máquina se mantiene la misma forma de la gráfica
(Véase la segunda imagen).
Imagen 2
Puede verse
que el error del negro ocurre en la jugada 16, en donde pasa de +0.2 a +4.8. El
cambio es muy brusco, lo que sugiere fuertemente una combinación (que de hecho,
existe).
¿Para qué
puede servir este software? Fácil: se puede poner una colección de partidas en
formato PGN y pedirle al programa que analice automáticamente cada una de estas
partidas e indique si se sospecha de una combinación, al haber un cambio brusco
en la valoración.
Ahora estoy
trabajando sobre la interfaz con el archivo PGN. Sin embargo, los avances hasta ahora me tienen contento. Cabe decir que hay un sitio, https://chessgrammar.com/, el cual hace algo similar, pero es de paga (aunque da oportunidad de probarlo de forma gratuita). Hace algunas otras cosas, como reconocer algunos patrones tácticos. Se ve bien pero no sé qué tan efectivo sea. En cualquier casoo, cmo ejercicio de programación me parece una buena idea.
Seguiremos informando.