Showing posts with label ICGA. Show all posts
Showing posts with label ICGA. Show all posts

Friday, November 12, 2021

Ante una epifanía


De acuerdo a la Real Academía de la Lengua, una epifanía es una manifestación, aparición o revelación. Y aunque la acepción es en general en términos religiosos, debo decir que en el doctorado tuve una epifanía, una verdadera revelación. Al inicio de este trabajo hubo muchos caminos que había que seguir. Se me abría un número de opciones en teoría de juegos y particularmente, en el caso de estudio, el ajedrez, estaba un poco desorientado, pues no sabía exactamente por dónde debía ir. Esto -quiero creer- es normal en un trabajo de largo plazo, en donde poco a poco se va abriendo uno brecha sobre el desarrollo que debe hacerse.

Estaba yo en eso cuando se me pidió que diese una charla en el seminario del IIMAS, que creo organizaba el Dr. Erik Molino. Se trataba de hablar del trabajo doctoral y de los avances que iba teniendo. Era más o menos de una hora la exposición del tema. Así, preparé una serie de diapositivas y mostré la idea que animaba el tema del doctorado: la definición de patrones ventajosos en los juegos de suma-cero.

En la exposición del tema estuvieron los Dr. Héctor Benítez (uno de mis tutores) y el Dr. Jorge Luis Ortega Arjona (mi asesor). Cuando terminé la exposición ambos hablaron de cómo caracterizar los patrones en las posiciones de ajedrez. Y esa fue la pregunta fundamental con la cual había que trabajar. Sí, había patrones, pero ¿cómo los seres humanos los reconocen? ¿cómo se pueden caracterizar en términos de un programa de computadora, de código de máquina? No tenía en ese momento la más pálida idea al respecto.

Yo creo que fue esa noche, o la siguiente, que me senté frente al tablero de ajedrez a tratar de hallar un mecanismo que -de alguna manera- caracterizara los patrones en ciertas posiciones conocidas en el tablero, por ejemplo, el doble sacrificio de alfil (como en la famosa partida Lasker-Bauer) o bien, el sacrificio griego (que se ha dado en multitud de partidas). Y de pronto llegó la revelación, la epifanía. Se me ocurrió algo que ahora me parece una obviedad: en un patrón de ajedrez, en donde las piezas están en ciertas casillas, no es lo importante. Lo que verdaderamente tiene sentido es en realidad qué casillas atacan las piezas.

Para ejemplificarlo un alfil blanco en la casilla d3 ataca la casilla h7 (probablemente un peón negro).Entonces, el alfil no tiene que estar en d3 para definir el patrón. Baste decir que el alfil blanco ataca h7 y por ende, el alfil puede estar en b1, c2, d3, e4, f5, g6 e incluso g8. Y así, el patrón es en general una posición con el alfil en b1, c2, d3, e4, f5, g6 o g8, es decir, tenemos 8 posiciones para definir dónde está el alfil y por lo tanto, 8 posibles patrones. (Véase la ilustración de este artículo).

Lo que ahora, a la distancia, me parece incluso evidente, es que los seres humanos, los ajedrecistas, lo que hacemos muchas veces es comentgazr con otros jugadores ciertas posiciones. Y decimos en muchas ocasiones cosas como estas: "yo tengo un alfil que ataca g7 así como un caballo que puede ir a g5"... Y nótese que no estoy indicando en donde tengo el alfil y el caballo. Vamos, que esta descripción que se hace comúnmente entre ajedrecistas es la clave para representar los patrones.

Llevaba tiempo queriendo escribir sobre esto. Esta es la idea que define los patrones y que se convirtió finalmente en un lenguaje que describe posiciones de forma simple y que, a la larga, conforma los patrones en las posiciones de ajedrez, lo que a la postre dio con una definición de un lenguaje de descripción de patrones ajedrecísticos, núcleo del artículo publicado en la revista de la ICGA.

Wednesday, June 29, 2011

Rybka es un tramposo

Ayer salió un muy interesante artículo sobre Rybka, quizás el programa más fuerte de ajedrez, que había dominado hasta hace pocos el ajedrez por computadora. El artículo completo, con las referencias y análisis sobre todo este asunto puede verse aquí.

La cuestión simple es que por mucho tiempo se sospechó que Rybka era un clon -ciertamente modificado- de un programa de código abierto, llamado Fruit. David Levy, uno de los jerarcas de la Federación de ajedrez por computadora (entre otros juegos), escribió un extenso artículo sobre este tema, del cual hablé también en este blog (puede consultarse aquí al respecto).

Y la pregunta seguía en el aire: ¿Era Rybka un clon de algún otro programa? Algunas conclusiones de Levy así lo hacían ver. Sin embargo, nada era conclusivo hasta que una serie de expertos en el tema tomaron el toro por los cuernos y comenzaron a analizar a Rybka, a partir de que éste empezó a jugar de manera notable.

Así entonces, la International Computer Games Association (ICGA), ha descalificado y bloqueado a Rybka y a su programador, el MI Vasik Rajlich, de jugar en futuros campeonatos mundiales por computadoras, amén de exigirle a Rajlich que regrese los trofeos y premios en metálico que hubiese recibido cuando ganó los torneos mundiales de los años pasados (2007, 2008, 2009 y 2010).

La ICGA acusa a Rajlich de plagio de dos programas, Crafty y Fruit, después de haber conformado un panel de investigación que analizó Rybka desensamblado el código ejecutable (pues Rajlich no ha dado acceso al código fuente).

Los miembros del panel fueron:

Secretariado:
  • Robert Hyatt - (Crafty, Cray Blitz, World Computer Chess Champion in 1983 and 1986)
  • Mark Lefler (author of Now)
  • Harvey Williamson (part of Hiarcs Team)

Miembros:
  • Albert Silver (software designer for Chess Assistant (1999-2002); currently editor of Chessbase News (2010-present))
  • Amir Ban (author of Junior: World Champion 2002, 2004, 2006, World microcomputer Champion 1997, 2001)
  • Charles Roberson (author of NoonianChess)
  • Christophe Theron (author of Chess Tiger)
  • Dariusz Czechowski (author of Darmenios)
  • Don Dailey (author of Cilkchess, Star Socrates, Rex, Komodo)
  • Eric Hallsworth (part of Hiarcs Team, Publisher of Selective Search magazine)
  • Fabien Letousky (author of Fruit)
  • Frederic Friedel (Chessbase.com)
  • Gerd Isenberg (author of IsiChess)
  • Gyula Horvath (author of Pandix, Brainstorm)
  • Ingo Bauer (Shredder team)
  • Jan Krabbenbos (Tournament Director of Leiden tournaments)
  • Kai Himstedt (author of Gridchess and Cluster Toga)
  • Ken Thompson (creator of Belle Chess Machine, World Computer Chess Champion 1980, Turing Award winner 1983, creator of B and C programming languages, Unix and Plan 9 developer). More Information about Ken can be found here http://en.wikipedia.org/wiki/Ken_Thompson
  • Marcel van Kervinck (author of Rookie)
  • Maciej Szmit (assistant professor at Technical University of Lodz)
  • Mark Watkins (MAGMA Computer Algebra Group, School of Mathematics and
  • Statistics, University of Sydney)
  • Mark Uniacke (Hiarcs, World Microcomputer Champion 1993)
  • Mincho Georgiev (Pawny)
  • Olivier Deville (Tournament Director of ChessWars)
  • Omid David (author of Falcon)
  • Peter Skinner (Tournament Director of CCT--the major annual online computer chess tournament)
  • Ralf Schäfer (author of Spike)
  • Richard Vida (author of Critter)
  • Richard Pijl (author of The Baron)
  • Stefan Meyer-Kahlen (author of Shredder, multiple world champions from 1996-2007)
  • Thomas Mayer (author of Quark)
  • Tord Romstad (author of Stockfish, Glaurung)
  • Tom Pronk (ProChess, Much)
  • Vladan Vuckovic (Axon, Achilles)
  • Wylie Garvin (game Programmer at Ubisoft Montreal)
  • Yngvi Björnsson (The Turk)
  • Zach Wegner (author of ZCT and Rondo, an upgraded version of Anthony Cozzie’s Zappa program, which was world champion in 2005).

Esta noticia sin duda es casi tan importante en el mundo del ajedrez como lo fue la descalificación del canadiense Ben Johnson en las Olimpiadas de 1988 después de que dio positivo en las pruebas antidoping. Aparentemente la resolución es definitiva y es claro que Rybka y Rajlich habrán caído en el desprestigio, quedando fuera de este tema del ajedrez por computadora.



Yo quisiera imaginar que el MI Rajlich debe salir en defensa de su programa. Si es un trabajo original debe poder mostrarlo y además, así evitaría, además de las sanciones, el desprestigio en el que en este momento se encuentra. Habrá que ver qué reacciones hay.

En el mientras, es muy lamentable que estas cosas pasen, pero es claro que los programadores que se esfuerzan porque sus programas cada día jueguen mejor y además, contribuyan a la resolución de los problemas con ideas originales, sean finalmente sobrepasados por alguien que copia código de manera "inteligente" y que logra éxitos sorprendentes basándose en trabajos de terceros, a los cuales, desde luego, no les da ni siquiera crédito.