Computer Go: El gran problema de AI

Published on Author lopez1 Comment

Desde hace algunos años, estoy interesado en algunas ramas de lo que se llama Inteligencia Artificial. Convengamos que el término es algo ampuloso, y refleja el entusiasmo de fines de los años 50, cuando en una reunión de especialista se acuñó el término. La Artificial Intelligence o AI ha pasado por varias etapas y viscisitudes, ha habido de todo, desde triunfos y fracasos, hasta ramas nuevas (agentes, redes neuronales, aprendizaje automático) que han ido apareciendo. Realmente es un tema fascinante, pero tal vez demasiado amplio.


Pueden ver algunos enlaces desordenados que colecciono en


http://www.ajlopez.com/ia/


He mantenido, de alguna manera, el interés en una rama: su aplicación a los juegos. Pueden visitar el excelente sitio del grupo GAMES de la Universidad de Alberta (Canadá):


http://www.cs.ualberta.ca/~games/


para encontrar mayor información, estupenda. Si Uds. investigan un poco, encontrarán que a lo largo de todos estos años, hay un juego que ha resistido las distintas aproximaciones que se han intentado para dominarlo. Pueden encontrar más información sobre el juego en el sitio de la Asociación Argentina de Go:


http://www.go.org.ar/


en especial, el ya clásico artículo del bueno de Franklin Bassarsky:


Por qué Aprender a jugar al Go
http://www.go.org.ar/actividades/porque.html


Mientras que Deep Blue el siglo pasado derrotó a Kasparov, en ajedrez, el mejor programa de go del planeta apenas si puede enfrentar a un verdadero experto en el juego. Para conocer más sobre la situación actual, visitar el interminable y subyugante


http://gobase.org/


En los últimos años, ha surgido el wiki


http://senseis.xmp.net/


donde encontrarán múltiples temas tratados, por ejemplo


http://senseis.xmp.net/?ComputerGoProgramming
http://senseis.xmp.net/?ComputerGoAlgorithms


Un clásico es el algoritmo de Benson (solo como botón de muestra de cómo apareció hace años, y luego han ido apareciendo otras ideas para explicar y acercar el Go a la AI):


http://senseis.xmp.net/?BensonsAlgorithm


También como botón de muestra de la cantidad de “papers” que mueve el tema, ver


http://erikvanderwerf.tengen.nl/publications.html


LA lista de correo sobre el tema es:


computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Se imaginaran entonces, que no puede faltar…. el AjGo. Sí, estoy pasando a .NET algunas ideas. La principal es concentrarme primero en planes, que traten de cumplir con 4 objetivos básicos:

– Aumentar el territorio propio
– Disminuir el territorio enemigo
– Asegurar la vida de las piedras propias
– Capturar piedras enemigas

Hace unos años investigué distintas formas de calcular la influencia y territorio, basado en conceptos que todos en computer go tratan alguna vez: “iluminación”, “campos de fuerza”…. En este nuevo intento, he visto que es más interesante simplemente separar en grupos, usando para visualizar el resultado distintos colores. Un ejemplo (una posición algo ridícula para un juego real, pero interesante para mí) es:


Podría explicar un poco más en detalle el coloreo, pero basta decir que los azules indican cercanía a piedra negra, los rojos cercanía a piedra blanca, amarillo cercanía a ambos colores, verde libre de cercanía. Los cuatro objetivos básicos los puedo expresar en deltas en esos coloreos. Me parece que el concepto de grupo coloreado, y su aumento o disminución, es un camino interesante a explorar. Por ejemplo, rodear a un grupo enemigo es, en principio, asimilable a “disminuir sus verdes”, los verdes que estan en contacto con ese grupo.

Supongo que alguien ya lo habrá seguido, pero de alguna forma, con esto estoy aprendiendo sobre la dificultad del problema. Tengo que analizar la táctica a seguir para cumplir con cada plan sugerido. Igualmente, algo de algoritmo de sisho generalizado está siendo incorporado. Falta la hercúlea tarea de resolver:

– Tácticas de corte
– Tácticas de conexión
– Tácticas de vida y muerte

Espero poder postear algo interesante cuando tenga algo más armado, código incluído.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/

Leave a Reply

Your email address will not be published. Required fields are marked *