Wednesday, October 12, 2005

Un Lenguaje para los Autómatas celulares

>

Que puedo hacer con los Autómata celular? Esta es una pregunta que me he hecho desde que empecé a estudiar autómatas celulares hace ya 7 años, lo primero que se le ocurre "Es un artefacto o tecnología que puede hacer cómputos complejos para problemas complejos ", esto es verdad pero como se usa esto, los Autómatas celulares no son como las redes neuronales que son dispositivos que esta hechos para aprender o detectar cierto comportamiento y luego reproducir o darnos la clasificación, desde mi punto de vista los autómatas celulares son una tecnología que definen un lenguaje computacional el cual no sabemos como programar. El objetivo debe ser definir una interfase hombre-Autómata celular orientado a usuario no expertos en Autómatas celulares o programación que permita al hombre dar instrucciones para que los Autómatas celulares generen el comportamiento deseado. El primer paso en este sentido se ha dado con el juego de la vida implementado como juego de computadora, los usuarios no saben nada de autómatas celulares pero lo usan.

von Neumann Eric Weisstein's World of Biography considero a los Automatas celulares como un constructor universal, demostrando que los Automata celulares pueden emular el comportamiento de una maquina de turing y por consiguiente pueden reproducir cualquier comportamiento algorítmico, la pregunta es como es la manera de interactuar con estos para que pueda dado un estado inicial el resultado esperado.

Comparación del Lenguaje de Autómata celular con los Lenguajes que conocemos?

Estamos acostumbrado a trabajar con lenguajes de programación secuenciales, paralelos, distribuidos, estructurados, no estructurados, etc. Un lenguaje para Autómatas celulares no se parece a ninguno de estos,

Los lenguajes tradicionales incluyendo los distribuidos y paralelos están diseñados para seguir una estructura de pensamiento lineal, los programas son pensado en forma secuencial con algunos punto de sincronización con otros procesos similares o diferentes, los Autómatas celulares son totalmente paralelo, son pequeñas unidades de caculo con el mismo algoritmo o regla que se ejecutan en forma sincrónica, quien desee programar autómatas celulares debe pensar de esta manera en forma caótica, y a su vez un lenguaje para autómatas celulares debe contemplar esta característica, no se debe esperar que exactamente en la iteración siguiente se conseguirá el estado esperado lo mas seguro es que tendrá que esperar t pasos de tiempo para llegar al estado esperado.

Que tipo de problemas se debe Atacar

Los Autómatas celulares son aplicable a cualquier tipo de problemas, sin embargo para todos los problemas no son recomendables los autómatas celulares. Por Ejemplo no me imagino un Autómata celular para llevar la contabilidad, en cambio para el procesamiento de imágenes es ideal.

Antes que todo debemos delimitar el alcance de este lenguaje, orientarlo en primera instancia a resolver problemas que puedan modelarse en un tablero de dos dimensiones, procesamiento de imágenes, simulaciones, etc. y luego ampliarlo a otro tipo de simulaciones y procesamientos en otras dimensiones.

Que se propone

Muchos investigadores han buscado la manera de clasificar e interpretar el comportamiento de los autómatas celulares con el objetivo de detectar la forma de predecir el comportamiento de los mismo y así mejorar encontrar la forma eficiente para que cualquier problema se pueda implementar con autómatas celulares, esto es muy importante, sin embargo es necesario establecer una línea de desarrollo de la interfase hombre-Autómata celular que pueda ser accesible a un publico genérico a personas que no sepan o sean estudiosos de Autómatas celulares.

Que características debe tener

  • Debe ser un lenguaje gráfico
  • Debe poder combinarse con lenguajes tradicionales, generalmente una aplicación de esta debe estar enmarcado en un proyecto donde este autómata será una pieza mas, así que para que sea efectivo debe poder combinarse con otros leguajes.
  • Debe tener un proceso de debug
  • Debe poder un usuario colocar los estados y un proceso interno deducir el autómata que te lleve de un estado a otro.

Conclusión

Nos falta un lenguaje para usar los autómatas celulares y explotar todas su potencial, y ofrecer al publico en general explorar las bondades de la programación basada en el caos.

Nota: sus comentarios son importante, este documento es el primer vistazo a un proyecto muy interesante.

Juan Carlos López