lunes, 16 de febrero de 2009

 

Cómo piensan las Computadoras que juegan Ajedrez (III)

Una función de evaluación para estos algoritmos es el equivalente humano a la “valoración de la posición”, la cual hace un ajedrecista de mediana fuerza cada vez que puede hacerlo y en particular valora con más énfasis en las posiciones críticas. Aunque un ajedrecista humano valora, tomando en cuenta el bagaje de conocimientos estratégicos y/o tácticos adquiridos en su experiencia, para posiciones simples o complejas, esta valoración es más que todo una ordenación desde mayor importancia hacia abajo de las posiciones terminales que pudo considerar en su análisis y desde luego decide la jugada que está más arriba en su ordenación (o valoración).




Una computadora “valora” mas matemáticamente y debe aplicar una función F de evaluación establecida por el programador. F : P → Z. Esto último lo podemos leer así: una función llamada F toma elementos del conjunto P ( las posiciones posibles en un tablero de ajedrez ) y le asigna valores del conjunto Z ( los números enteros i.e. 1, -4, 10, -234 , etc), la mejor jugada para el programa es la de más alto valor que le da la función de evaluación.

Al escribir una función de evaluación para un programa de ajedrez es esencial emplear instrucciones de uso eficiente dado que este componente del programa es utilizado en forma repetitiva (miles o cientos de miles de veces durante cada selección de movimiento). Por esta razón es preferible no incluir excesivos términos en la función de evaluación dado que cada nuevo término significa un pequeño incremento en el tiempo requerido para evaluar cada posición terminal. Una buena función de evaluación es aquella que evalúa los aspectos críticos de la posición en cuestión y lo realiza de la manera más eficiente posible. Por cada nuevo término incluido en la función de evaluación uno debe evaluar si es que la información agregada compensa la cantidad de tiempo computacional que dicha evaluación requerirá (una función de evaluación perfecta puede tardar siglos en valorar completamente una posición tomado en cuenta todos los factores necesarios) .


El problema de crear una función de evaluación es que no hay un solo criterio para construir esta función, algunas veces priva la ventaja material como en el final y otras veces es más importante los factores dinámicos de la posición, como en el medio juego, no existe un método estándar de construcción. Los patrones potenciales que podría manejar una función de evaluación son cerca de 50.000, los cuales toman distintos valores de acuerdo a la etapa del juego en que nos encontremos y además el contexto de la posición (por ejemplo, cerrada o abierta). Es claro que existen cierta base de patrones básicos en las funciones de evaluación que todo programa presenta: Equilibrio material, movilidad de piezas, casillas atacadas, seguridad del rey, dominio central, actividad de piezas, desarrollo, etc. Estos patrones fueron propuestos por Claude Shannon (el pionero de los programas de ajedrez) y se encuentran en distinta literatura ajedrecística, pero si suponemos que nuestra función de evaluación ya contiene en su código el reconocimiento adecuado de estos patrones, ¿cómo podemos seguir mejorándola?. Este fue un problema que ocurrió a varios programas los cuales en un momento debieron decidir por recurrir a la consulta a grandes maestros con tal de obtener información relevante de cómo incrementar la cantidad de patrones de reconocimiento de su función de evaluación.



MINIMAX y PODA ALPHA BETA


Este algoritmo, es el que realmente “decide” que jugada hacer en el complejo árbol de juego, usa la función de evaluación que valora cada nodo del árbol de juego y lo recorre siguiendo una filosofía consistente de manera simple en lo siguiente : "lo mejor para mí y lo peor para mi rival" , el siguiente diagrama ilustra mejor este hecho :





En el siguiente ejemplo puede verse el funcionamiento de Minimax en un árbol generado para un juego imaginario. Los posibles valores de la función de evaluación tienen un rango de [1-9]. En los movimientos del contrincante suponemos que escogerá los movimientos que minimicen nuestro beneficio ( la peor jugada), en nuestros movimientos suponemos que escogeremos los movimientos que maximicen nuestra función (la mejor jugada) , la peor equivale a la de menor valor de la función y la mejor a la de más alto valor.

El lector puede observar en los nodos terminales del árbol, si tiene dos valores posibles a elegir ( 5-8 y 9-2 y 9-1), como este es un nivel donde se debe elegir el mínimo valor ( le toca jugar a mi rival) , se decide por la jugada de menor valor ( 5, 2, 1 ) , ahora retrocedemos un nivel , encontramos dos decisiones posibles ( 5-2 y 1-9), en este caso me toca jugar y por ello decido por el mayor valor de la función de evaluación, por ello las decisiones son (5 y 9) , seguimos subiendo un nivel y ahora la decisión está en el menor valor entre las posibles ( 7-5-8 y 3-4 y 9-2-1) obviamente estos menores valores en cada caso son ( 5, 3 y 1) y ahora decido por el mayor valor entre ellos saliendo el valor de 5 ( ver nodo inicial) ¿Cómo decido?
Simplemente el programa va a decidir que la línea a seguir ( la que le da mejores posibilidades) es la que está resaltada por líneas remarcadas ( ver sector izquierdo del árbol) , porque allí se están tomando en cuenta mis mejores jugadas y las de mi oponente ( las que me oponen mayor resistencia).

Pensemos ahora que un árbol de juego para el ajedrez es mucho más complejo que el ejemplo anterior, es decir es mucho más profundo en niveles y es mucho más ramificado en cada nivel ( mas jugadas a considerar) , en especial cuando la posición es muy táctica, entonces el árbol de juego es mucho más “ frondoso” que en el sencillo ejemplo anterior , esto por supuesto incrementa los tiempos computacionales ( no olvidar una consideración hecha anteriormente : el número de posiciones posibles es más alto que el número átomos conocidos en el universo) , entonces es prácticamente imposible incluso para una computadora , recorrer y valorar todos los nodos de un árbol ajedrecístico.
Por ello la poda Alpha Beta , permite aligerar el problema, si en un nivel a decidir hay 20 jugadas posibles, pero 12 de ellas son absurdas ( desde el punto de vista de un buen jugador), por ejemplo regalan una pieza, sin haber posibilidades tácticas en compensación, entonces estas jugadas no serán consideradas ni por la función de evaluación , ni por el MiniMax, entonces el árbol de juego se ve recortado ampliamente en varias de sus ramas, y el análisis se simplifica grandemente, de allí su nombre, porque se asemeja a podar un árbol y quitarle parte de su frondosidad.
Hernando Guzmán
Maestro Nacional de Ajedrez y Matemático
Profesor de la Universidad del Zulia




Ver el artículo completo

sábado, 14 de febrero de 2009

 

Ajedrez y Propiedad Intelectual




Estoy en el grupo de los que consideran que el ajedrez en cierto forma es un arte. Cada partida es una obra original, una creación única e irrepetible -muy rara vez una partida es completamente igual a otra- por lo tanto es un trabajo intelectual que requiere esfuerzo y dedicación del ajedrecista. El trabajo de producir una partida de ajedrez no percibe remuneración alguna por derechos de autor, mientras que las empresas de informática ajedrecística y las editoriales cobran por difundir bases de partidas de los torneos. Indudablemente el trabajo de analizar, comentar, publicar en formato digital, editar un libro tiene un costo, pero los autores de la partida en sí no perciben nada más allá del reconocimiento de los aficionados, si es que no ganan algún premio. Aplicar las leyes de propiedad intelectual a una partida puede tomar implicaciones mucho más allá de lo que se pueda prever, y hasta podría interferir con el desarrollo del juego mismo. Por ejemplo asignar derechos de autor sobre la Apertura Española o sobre el Mate de Philidor, etc. Sin embargo el tema no parece tan descabellado como lo propone José Muelas en su video.



Ver el artículo completo

lunes, 2 de febrero de 2009

 

Felicitaciones a Frank Curiel y Zeitnot

Felicito por el merecido premio otorgado por la Federación Venezolana de Ajedrez al Ingeniero Frank Curiel, Editor de Zeitnot "por su aporte a la difusión del ajedrez local, regional y nacional a través de Internet" en el año 2008.

A finales del año 2006 yo había elaborado una lista con lo más destacado del año, la cual incluía una mención para los sitios web y que fue publicada por el amigo MF Juan Minaya en http://www.ajedrezencolombia.com/ y que pueden leer aquí. A Minaya le agradezco la difusión de mi primer trabajo serio de investigación ajedrecística por internet que tituló "La Impresionante Carrera Deportiva del Maestro Julio Ostos".

Ahora estamos en el 2009 y por fin se ha hecho efectivo el reconocimiento al trabajo voluntario y desinteresado que involucra reportar, investigar y recopilar noticias actualizadas del ajedrez nacional e internacional como lo ha hecho Frank. Con él compartí la organizacion del torneo online Memorial Aguirre 2008, que esperamos repetir con éxito este año.

Una vez más ¡Felicitaciones!

http://www.zeitnot.com.ve/Reconocimiento_Zeitnot_2008.htm



Ver el artículo completo

This page is powered by Blogger. Isn't yours?

Suscribirse a Entradas [Atom]