TARDÍGRADOS

Ciencia en español -ʟᴀ ʀᴀᴢóɴ ᴇsᴛá ᴀʜí ғᴜᴇʀᴀ-

Archive for March, 2014

Curso de Inteligencia Artificial: Autómatas celulares de la serie Trinity Aurora V1.0

Posted by Albert Zotkin on March 27, 2014

Trinity Aurora viewer

Trinity Aurora viewer

Hola amigos incondicionales de Tardígrados. Vamos a iniciar un apasionante curso por el mundo de la inteligencia artificial, en el que tendremos oportunidad de diseñar sistemas básicos que serán piezas claves para el desarrollo de tecnologias de IA. El primer capitulo lo dedicaremos al estudio de los autómatas celulares, y más concretamente a autómatas celulares de la serie Trinity Aurora v1.0.

Autómatas celulares de la serie Trinity Aurora v1.0

Defino un sistema Trinity Aurora como un autómata celular con tres matrices de NxM células o celdas cada una. Los sucesivos estados de las celdas están condicionados por una tendencia, es decir, un vector tendencia que marca hacia qué estado debe evolucionar cada celda. Eso es posible ya que en un Trinity Aurora los estados de cada celda pueden ser 16.777.216. Si representamos cada estado por un color (true color) de 3 componentes de color RGB, y cada componente puede ser representado en el rango 0-255, tenemos 256 x 256 x 256 = 16.777.216 colores (estados) posibles, es lo que se llama true color. Supongamos que el vector tendencia de una celda en una generación determinada es (t,f)=(0xff0000,128) y que el estado que muestra es c=0x00ff000. ¿Que significará eso?. Veamos, c=0x00ff000, es el color verde puro, o sea esa celda (pixel) en esa generación está mostrando el color verde, pero su vector tendencia es (0xff0000,128) , es decir, tiende hacia el color 0xff0000, que es el rojo puro, 128 indica la fuerza de esa tendencia. La fuerza de una tendencia la he definido dentro del rango de valores 0-255, Una fuerza máxima de f=255 significaría que la celda alcanzaría el color de la tendencia en la siguiente generación y una f=0 significaría que nunca la alcanzaría. ¿Cómo defino la transición de color actual hacia el color definido por el vector tendencia? Pues esa transición no podría ser más que una mezcla de los dos colores, el actual y el de la tendencia, según el porcentaje de mezcla definido por la fuerza de esa tendencia. Es decir, la fuerza, en este caso, es la transparencia del color actual sobre el color tendencia tomado como color de fondo.
Instántanea tomada del Trinity "Expand 2 Iris On Net",con una edad de 328 generaciones. Nació del Caos, y es un sistema que evoluciona eternamente de forma irreversible, incrementando su entropia.

Instántanea tomada del Trinity “Expand 2 Iris On Net”,con una edad de 328 generaciones. Nació del Caos, y es un sistema que evoluciona eternamente de forma irreversible, incrementando su entropia.

Los sistemas Trinity Aurora de la versión V1.0 están constituidos por 3 matrices cuadradas de 128 x128 pixels cada una. En una de ellas representaremos los estados actuales del autómata, y en las 2 restantes los estados del vector tendencia. Como todo autómata celular, cada celda posee un vecindario y un conjunto de reglas de transición. El vecindario en esta versión lo he definido con un radio de r=2, es decir, son celdas vecinas que distan entre 1 ó 2 pixels de la celda propia situada en el centro, o sea es una cudrícula de 5 x 5. La característica más importante de un sistema Trinity Aurora es que el vector tendencia de la celda que esta procesando la regla en una generación dada debe estar protegido. o sea, la regla solo tendrá acceso al vector tendencia de la celda central y nunca al de cualquier otra vecina. La regla tiene acceso pues a los 25 estados (colores) actuales del vecindario de una celda y a su vector tendencia, y el valor que devuelve será siempre una variación de ese vector tendencia, nunca una modificacion directa sobre el estado actual de la celda. En resumen , la regla tiene prohibido el acceso a vectores tendencia del vecindario que no sean el central y tambien tiene prohibido modificar el estado actual de la celda directamente. Si una regla requiere modificar el estado de una celda en la siguiente generacion bastará con modificar el parametro fuerza hacia su valor máximo (255).

Instántanea tomada del Trinity "Iris Netenda",con una edad de tan sólo 133 generaciones. Al igual que el anterior, nació del Caos el 8 de Julio de 2005 a las 3 horas 5 minutos, 21 segundos.

Instántanea tomada del Trinity “Iris Netenda”,con una edad de tan sólo 133 generaciones. Al igual que el anterior, nació del Caos el 8 de Julio de 2005 a las 3 horas 5 minutos, 21 segundos.

Los Sistemas Trinity Aurora son por definición sistemas irreversibles, ya que cada color actual se mezcla con su color tendencia en cada generación según cierto porcentaje. La mezcla de colores supone por lo tanto irreversibilidad, es decir, pérdida de información de sus estados pasados. Dado un estado actual de una celda no podemos saber cuál era su estado pasado en la generación anterior si no sabemos que color tendencia poseia y qué fuerza (porcentaje de mezcla) le fue aplicado. La filosofía tras estos sistemas es que con ellos podemos diseñar modelos de simulación de los fenómenos naturales. Y aunque de momento solo presento autómatas de 2 dimensiones y de reducido tamaño, constituyen el principio de la Nueva Ciencia, ya que con ellos ponemos a nuestra disposición un nuevo lenguaje científico. es decir, una nueva herramienta basada en reglas “simples” que no necesitan ecuaciones diferenciales para conseguir aproximaciones a los modelos. Pero lo más esencial de los Trinity Aurora es que nos hablan de un Universo Virtual que puede ser tratado como un todo sin diferenciación de partes, y por lo tanto, su evolución dependerá unicamente de las condiciones iniciales y de la regla o ley con la que les dotemos, si queremos que sea un sistema cerrado. Por el contrario, si deseamos que el Trinity sea un sistema abierto, es decir, que la regla que lo gobierna pueda considerar estados externos, por ejemplo mediante una cámara web o un micrófono, entonces el sistema evolucionará teniendo en cuenta tambien esos estados externos, con lo cuál las posibilidades prácticas de estos sistemas deben ser seriamente consideradas.
El trinity "Kernel Aurora" a la tierna edad de 87 generaciones. Este autómata es bastante estable aunque al igual que sus hermanos posee naturaleza caótica.

El trinity “Kernel Aurora” a la tierna edad de 87 generaciones. Este autómata es bastante estable aunque al igual que sus hermanos posee naturaleza caótica.

Algunos autores, como Stephen Wolfram, se ilusionaron con la pretenciosa idea de que el universo fisico-químico fuera,en última instancia un autómata celular, o que poseyera una dinámica interna semejante. Tratar al universo como si fuera un autómata celular nos lleva desvirtualizar conceptos como el de partícula, energía. De hecho, elaborar un modelo de autómata celular que simule un sistema de partículas con interacciones gravitatorias, es casi una tarea imposible. No digo que programar un autómata tal no sea posible, pero requeriría añadir al autómata una serie de mecanismos extras para almacenar variables y parámetros auxiliares y eso lo único que conseguiría sería probar que un autómata celular no es la herramienta más adecuada para tal simulación. Cuando nos vemos obligados a rodear una herramienta de mucha parafernalia y aparataje extra, tenemos que preguntarnos si es esa la herramienta mas adecuada. Un autómata celular que simule lográdamente un sistema de partículas no es posible si en las reglas de conectividad local que definimos consideramos magnitudes escalares o vectoriales tales como masa, fuerza, intensidad de campo, energía potencial o cinética.

Posted in Autómatas celulares, informática, Inteligencia artificial | Tagged: , , , | Leave a Comment »

Representación gráfica de funciones complejas

Posted by Albert Zotkin on March 7, 2014

Hace algún tiempo yo era un obseso de la programación informática. Me pasaba horas y horas programando miles de lineas de código de aplicaciones informáticas de todo tipo. Un día me pregunté si yo sería capaz de programar desde cero una aplicación que dibujara gráfica de funciones y de otros objetos matemáticos. La respuesta a aquella pregunta fue sí, y la aplicación que construí desde cero se llama PrimeGraph, y sirve para representar gráficamente funciones y otros objetos matemáticos. Para quien sienta curiosidad sobre el código fuente de PrimeGraph lo puede encontrar aqui.

Puedo ofrecer ahora varios ejemplos de representaciones gráficas de funciones complejas. Obviamente una representación gráfica estática de una función compleja no puede literalmente ser vista ya que toda función compleja transforma un número complejo z = (a, b) en otro distinto z’= (a’,b’). Es decir, se necesitaría al menos un espacio de cuatro dimensiones para poder visualizar tal gráfica funcional. Pero, es posible, mediante algunos trucos visualizar en un único plano (2D) tales gráficas de funciones complejas. Una de ella es mediante códigos de color en el plano. Puesto que una función de variable compleja transforma un número complejo en otro, Podemos ver cómo los puntos de un plano son re-ubicados con otras coordenadas si cada punto posee un color (pixel). Supongamos que el plano inicial (el que representa a la función identidad) posee el siguiente patrón de color:

0

Partiendo de esta plano coloreado inicial podemos representar funciones complejas, como he dicho, re-ubicando los píxeles en otras coordenadas según nos dicta la función compleja que se trata de representar. Veamos mas especificamente un ejemplo. Sea el siguiente polinomio de variable compleja

\displaystyle f(z)=(z-1-2i)(z+i)(z+2)^2

entonces según el patrón de color que he presentado arriba, la representación gráfica de esa función f(z) será:

1

Supongamos ahora que el plano inicial posee el siguiente patrón de color:

2

entonces una función compleja como cosecante de z, iterada 7 veces

\displaystyle f(z)=\csc(z)= \cfrac{1}{\sin (z)}

daría esta bonita y sorprendente representación gráfica:

csc-z

para los que no lo sepan, si iteramos 7 veces una función f(z) obtenemos otra función distinta:

\displaystyle f' (z)= f(f(f(f(f(f(f(z)))))))

veamos otro ejemplo de función compleja iterada usando el mismo patrón de color que antes. Ahora representaremos la función arcoseno de z iterada 2 veces

\displaystyle f(z)= \arcsin (z)

es decir tenemos la función iterada

\displaystyle f'(z)= \arcsin (\arcsin (z))

cuya respresentación gráfica en ese patrón de color será esta:
arcsin-z

P.D.: Para saber cómo se realizan las gráficas has de abrir el programa primegraph.exe y practicar con él. En él podrás encontrar ejemplos de gráficas para algunas funciones reales y complejas, y para otros objetos matemáticos. También incluí en la sección Ayuda un pequeño tutorial para saber cómo hacer los scripts. Si el programa primegraph.exe te funciona bien (no sé si funciona bien en todas las computadoras, y tampoco sé si ha quedado muy obsoleto, ya que ha pasado mucho tiempo desde la ultima compilación). Puedes acceder a primegraph.exe en mi repositorio drive, descargando el archivo comprimido primegraph_alpha_v1.1.zip. Una vez descargado ese zip, descomprime primegraph.exe en alguna carpeta de tu computadora (yo comprobé que funciona bien en Windows 7) y ya lo tienes instalado. Para desinstalarlo simplemente lo borras de tu carpeta. Te voy a poner un ejemplo previo de unas gráficas. Por ejemplo, queremos dibujar la gráfica para la función trigonométrica seno, y = sin(x), y también para la función coseno, y = cos(x), en el mismo script. Para ello debes escribir el siguiente script en el editor de scripts del programa:
Haces click en el botón “Dibuja gráficos“, y entonces el programa primegraph.exe crea la página web siguiente, que presenta en el navegador web que tengas instalado por defecto:

*El nombre Just G. Waller era el pseudónimo que yo usaba en mi época de programador informático.

Saludos

Posted in informática, Matemáticas | Tagged: , , , , , , , , , | 4 Comments »