sábado, 5 de julio de 2014



 ¿COMO “PIENSAN” LAS COMPUTADORAS QUE JUEGAN AJEDREZ ?
 (1ª Parte)
**************************************
comentarios y sugerencias   herguz.ajedrez@gmail.com

El problema principal de la programación en ajedrez es el número de jugadas posibles que hay que considerar, aunque solo queramos profundizar pocas jugadas hacia adelante. Si estimamos que en una posición cualquiera del tablero hay en promedio 40 jugadas posibles (legales), entonces el solo hecho de calcular una jugada de las blancas y la respuesta de las negras habría que considerar 40x40 = 1600 posiciones diferentes para evaluar y tomar una decisión, y si son dos jugadas (2 blancas y 2 negras ) el número de posiciones posibles asciende a 2.560.000, después de tres jugadas serían 4.1 billones, y si consideramos que un juego normal tiene en promedio 40 jugadas entonces estaríamos hablando de la bicoca de 10 elevado a la potencia 128, para analizar con “suficiente profundidad” la partida completa, numerito que es mucho más grande que la cantidad de átomos conocidos en el universo

Así que este análisis exhaustivo está físicamente fuera del alcance de cualquier ser humano, y aún inclusive de la computadora más potente, así que a lo largo de la historia del ajedrez por computadora se empezó a ver progresos en la fuerza de juego de los programas ajedrecísticos y obtener resultados razonablemente buenos (ejemplo: ganarle a un gran maestro), cuando se empezó a implementar y refinar algoritmos que simulen la forma cómo piensan y toman decisiones los seres humanos. Para entender mejor esto último, vamos a referirnos al siguiente diagrama.
Un jugador humano de mediana fuerza si lleva las negras desecharía automáticamente analizar líneas que empiecen con Dxa2, Dxg4, Txc3, Dd1+, De4 etc. Y no perdería tiempo ni esfuerzo en analizar variantes que empiecen por estas jugadas “absurdas”, también desecharía jugadas que aunque no generen pérdidas materiales, estén contra la teoría conocida de cómo jugar este tipo de final, de esta manera ignoraría de entrada planes que traten de llevar su rey al centro sin cambiar al menos una de las piezas pesadas, pues sabe según la teoría de este tipo de final, que podría caer en una red de mate, y más bien se concentraría en profundizar en jugadas que aprovechen la expuesta situación del rey blanco, como por ejemplo Df4+, Td8+ ó e4 seguido de e3.
Además en muchas posiciones un jugador fuerte casi siempre considera un pliego de unas tres o cuatro jugadas lógicas que respondan a un plan o a su experiencia y conocimientos tácticos y/o estratégicos de cómo debe tratarse ese tipo de posición haciendo un análisis más o menos profundo y si alguna línea le promete una alta probabilidad de quedar con ventaja decisiva, entonces escoge la jugada de más alta valoración posible y la realiza en el tablero y si no es así, entonces busca un poco más considerando otras jugadas.

Es obvio que esta manera de razonar de un maestro de ajedrez, es mucho más “económica” y reduce en gran manera el número de posiciones distintas a considerar en una partida de 40 jugadas, sin embargo los primeros programas que jugaban ajedrez no usaban esta estrategia inteligente, sino que se limitaban a considerar todas las jugadas posibles y profundizaba su “análisis” en la medida que el tiempo de duración de la partida o la potencia de su procesador y/o memoria se lo permitía, por esta razón jugaban tan débilmente, esta forma de analizar todas las jugadas posibles se llamó estrategia de fuerza bruta.

Hoy en día se usan estrategias inteligentes, como la estrategia Mínimax o la poda alpha-beta, de las cuales hablaremos un poco más adelante.
También los programadores han implementado refinadas funciones de evaluación, para hacerles entender con la mayor simplicidad posible lo que son las funciones evaluación, recordemos lo que significa en matemática el concepto elemental de función.

Una función es una regla que permite asignarle a los elementos de un conjunto llamado de partida un único elemento de un conjunto llamado de llegada, el siguiente esquemita simplifica lo que acabo de decir:

f : A → B

Esto está diciendo que f es una función, A es el conjunto de partida y la flecha dice que f es capaz de asignar a elementos del conjunto A, un elemento del conjunto B.
Ahora pensemos si el conjunto A fuera todas las posiciones posibles (válidas) en el tablero ajedrez y el conjunto B fueran los números reales (positivos y negativos). De esta manera tendría sentido expresiones como f(p1) = 154 ó f(p5) = -322.
Estas expresiones estarían diciendo en lenguaje coloquial, “la valoración que la función f   le está asignando a la posición uno p1 es el número 154 y a la posición p2 el número negativo -322.”

La explicación del porqué se usan números negativos y positivos, es por el sencillo principio ajedrecístico “lo que es bueno para mí es malo para mi rival y viceversa“, es decir la función de evaluación asigna valores positivos cuando la última jugada que generó esa posición fue hecha por mi, y valores negativos si la última jugada la realizó mi rival.

Obviamente los seres humanos ajedrecistas no valoramos posiciones de esta manera, quizá la única excepción que coincidimos con los ordenadores es en la función de evaluación material, aquella elemental que nos decían: un peón vale un punto, una dama nueve, la torre 5 etc., así que podemos considerar una determinada posición y sumar los puntos que tengo y los de mi rival. Pero si solo nos limitamos a esta evaluación material durante la partida, no superaríamos los 200 puntos de elo.

Así que los jugadores de ajedrez valoramos de otra manera, es más, casi nunca usamos números reales para asignar a las posiciones, sino que hacemos valoraciones más subjetivas, basándonos en los conocimientos aprendidos y apreciamos posiciones más o menos así: “El blanco está mejor “, “hay mate en pocas jugadas”, “la estructura de peones de mi rival es perdedora en un final”, “tengo un peón pasado con chances de avanzar y coronar”, etc.

Hago esta explicación lo más sencilla posible, porque sé que todos los ajedrecistas no son matemáticos ó ingenieros, ni viceversa, y también porque cuando pensé en esta columna lo hice para que sea accesible a todos los que les guste los temas ajedrecísticos, aficionados ó maestros.

Las nuevas funciones de evaluación que se implementan en los programas fuertes, son funciones que toman en cuenta por ejemplo, el carácter dinámico o estático de la posición, la estructura de peones, el dominio del centro en la apertura, retraso en el desarrollo, etc. Que son conceptos estratégicos y tácticos que también toma en cuenta el maestro de ajedrez, o en el caso de las tablas de Nalimov, cuenta el número de jugadas necesarias en una posición de muy pocas piezas para conseguir el jaque mate, esto es posible aprovechando el progreso en los recursos de hardware obtenidos en los últimos años, potencia del procesador y capacidad de memoria y almacenamiento, las tablas de Nalimov no se hubieran podido ni soñar con los ordenadores de los años 80.
También los programas actuales son capaces también de descartar las jugadas “absurdas” (poda alpha-beta).

En la próxima columna les explicaré en que consiste el árbol de juego, así como la estrategia Mínimax y la poda alpha-beta.
También en otras entregas trataremos el tema de los programas más avanzados como Deep Blue y el futuro del ajedrez por computadora.

MscHernando Guzmán Jaimes
Maestro nacional de ajedrez
herguz.ajedrez@gmail.com

No hay comentarios: