Autómatas Celulares (AC s) Los autómatas celulares son máquinas discretas que pueden realizar cierto tipo de cómputos. Fueron inventados en los 1940 s por John von Neumann. Tienen similitudes muy lejanas con los autómatas finitos determinísticos. Jorge Baier Aranda, PUC 89
Elementos de un AC (informalmente) Un AC posee los siguientes elementos: Un enrejado (lattice) regular de celdas (o células). Cada celda puede estar en un estado tomado de un conjunto finito de estados. Cada celda tiene un conjunto finito de celdas vecinas. La relación de vecindad es uniforme. Una función de transición discreta y temporal, que indica cuál será el estado de una celda en el instante t + 1 basada en los estados de sus vecinas y de ella misma en el tiempo t. La función es la misma para todas las celdas. Jorge Baier Aranda, PUC 90
Un ejemplo informal de un AC En este ejemplo, supondremos que tenemos un AC de una dimensión (cuyo lattice es de una dimensión). En el tiempo t la celda i-ésima se encuentra en el estado c i (t), y sus vecinas son las celdas adyacentes. El siguiente esquema muestra el lattice tanto en el tiempo como en el espacio. Espacio Tiempo c t (i 2) c t (i 1) c t (i) c t (i + 1) c t (i + 2) c t+1 (i) La función de transición para una celda la podemos definir de la siguiente manera: c t+1 (i) = { 1 si 1 c t (i 1) + c t (i) + c t (i + 1) 2 0 en otro caso Jorge Baier Aranda, PUC 91
Ejemplo informal (cont.) Si consideramos que cada celda sólo puede estar en dos estados: activa o no activa, el siguiente es el esquema espacio/temporal que se puede dibujar para una configuración inicial con dos celdas adyacentes activas. Jorge Baier Aranda, PUC 92
Ejemplo informal (cont.) Si seguimos con el dibujo, se observa que el patrón se repite. Este esquema corresponde a un triángulo de Sierpinsky-Gasket, el que puede ser generado por un string de una L-systems (basados en GLC s) en el cual los símbolos se interpretan como avance dibujando, avance sin dibujar, giro (derecha e izquierda). Jorge Baier Aranda, PUC 93
Definición Formal de un AC Formalmente, un AC es una tupla (L, S, N, f), donde L es un lattice regular. S es un conjunto finito de estados. N es una familia de funciones de vecindad, donde N (r) es un conjunto (posiblemente una lista) de celdas (de tamaño n) vecinas a r. f : S n S es la función de transición. Por otro lado, una configuración C : L S es una función que asocia un estado con cada celda del lattice. La siguiente definición asocia las configuraciones con la función de transición: C t+1 (r) = f({c t (i) i N (r)}). Un lattice se dice regular si es una selección periódica de un espacio d-dimensional. Jorge Baier Aranda, PUC 94
Definición Formal del Ejemplo Anterior Es sencillo definir formalmente el ejemplo anterior. El ejemplo anterior es una tupla (L, S, N, f), donde: L = Z. S = {0, 1}. N (i) = {i 1, i, i + 1}. f(c) = { 1 si 1 c C c 2 0 en otro caso A continuación veremos algunas alternativas de diseño que se han estudiado para la construcción de AC s. Jorge Baier Aranda, PUC 95
El lattice Un lattice tiene asociada una dimensión. En dimensión 2, pueden usarse distintos tipos. Los más comunes son el triangular, rectangular y hexagonal. Éstos se muestran en la siguiente figura. El uso de distintos lattices ofrece ventajas y desventajas computacionales y físicas en la modelación de sistemas. Sin embargo, es posible transformar lattices triangulares y hexagonales a lattices cuadrados redefiniendo la relación de vecindad. Jorge Baier Aranda, PUC 96
Tamaño del lattice La definición formal de un CA implica que el lattice es infinito en todas las direcciones. Sin embargo, implementar esto es imposible. Por esa razón, los lattice se implementan siguiendo alguna condición de borde. Ésta puede ser: Borde Periódico: El lattice se considera periódico (como si volviera a empezar). Esto es equivalente a que los bordes opuestos se consideran conectados. Es el más usado. Borde Reflector: El lattice se considera reflejado en los bordes. En lattice de dos dimensiones, a veces se mezcla esta alternativa y la anterior. Borde Fijo: El estado de las celdas del borde toma un valor fijo. Jorge Baier Aranda, PUC 97
La Relación de Vecindad Una vez escogido un lattice es necesario definir la relación de vecindad. Normalmente, se eligen como vecinos de una celda, las que están más próximas. En la literatura, es posible encontrar dos vecindades relativamente populares, la de von Neumann y la de Moore. En la siguiente figura se muestran ambas vecindades. La cantidad r se conoce como el radio de la vecindad. von Neumann Moore r=1 r=2 r=1 r=2 Jorge Baier Aranda, PUC 98
Más formalmente, estas vecindades están descritas por N (i, j) = {(k, l) L k i + l j r} N (i, j) = {(k, l) L k i y l j r} (von Neumann) (Moore) Jorge Baier Aranda, PUC 99
La Función de Transición Una forma de especificarlas es a través de la especificación directa. Esto puede resultar caro puesto que en general construiremos una tabla de S n elementos. A veces se puede hacer especificación directa usando comodines y reglas de precedencia. Por ejemplo, la siguiente tabla muestra una función de transición para un AC de una dimensión en donde cada celda tiene dos vecinos y donde el conjunto de estados es {0, 1, 2}. (, 0, 2) 2 (2, 0, ) 2 (, 0, ) 0 (, 2, ) 1 (, 1, ) 2 Jorge Baier Aranda, PUC 100
Funciones de Transición (cont.) Muchas aplicaciones usan funciones de transición totales. Una función de transición es total si ésta sólo depende de la suma de los estados de sus vecinas, es decir, si es de la forma: C t+1 (r) = f i N (r) C t (i) Una forma más general de una función total, que admite definición de casos es: C t+1 (r) = f C t (r), g(c t (i)) i N (r) Jorge Baier Aranda, PUC 101
Funciones de Transición (cont.) También es posible usar funciones de múltiples pasos. Son equivalentes a las de un paso, pero a veces resultan adecuadas porque son fáciles de entender. La función de transición también puede ser probabiĺıstica. En este caso, ésta se redefine formalmente como f : S n S [0, 1] es decir, tal como en los AFND s, pero asociando una probabilidad a la relación. Jorge Baier Aranda, PUC 102
AC s y Computación Será posible calcular una función arbitraria con un AC? Esta pregunta la respondió afirmativamente John von Neumann, pero su solución fue muy engorrosa. John Conway, en los 1960 s, se preocupó nuevamente del problema y logró una solución mucho más sencilla. La solución surge de su famoso Juego de la Vida Jorge Baier Aranda, PUC 103
El Juego de la Vida de Conway El Juego de la Vida de Conway es un AC de dos dimensiones, donde cada celda tiene dos estados (viva, vacío), y cuya función de transición está descrita por lo siguiente: Si una celda viva tiene menos de dos vecinas, entonces muere (de soledad). Si una celda viva tiene más de tres vecinas, entonces muere (de hacinamiento). Si una celda vacía tiene tres vecinas, entonces en el siguiente estado, está viva. En caso contrario, la celda mantiene su estado. La situación inicial normalmente es aleatoria. Con estas reglas aparecen objetos que se mantienen estáticos, otros que tienen comportamientos periódicos, y otros que avanzan (gliders). Jorge Baier Aranda, PUC 104
Computando funciones booleanas Usando las reglas del juego de la vida, es sencillo crear las llamadas glider guns y gun eaters. Algunos demos se pueden ver en http://www.radicaleye.com/lifepage/ Usando estos elementos, es posible construir compuertas NOT y AND, tal como se muestra en la siguiente figura: A B A B A A : Glider gun : Glider eater : Colisión : Dato Jorge Baier Aranda, PUC 105
Una MT en el juego de la Vida Más interesante aún, en Abril de 2000, Paul Rendell construyó una MT en el juego de la vida. El esquema es el siguiente: [demo] Jorge Baier Aranda, PUC 106
Modelación de Procesos Químicos Una aplicación clásica de modelación de procesos químicos es la modelación de procesos de Reacción-Difusión. En estos procesos dos o más químicos se difunden sobre una superficie y reaccionan formando patrones estables. Desde un punto de vista macroscópico, los procesos de reacción-difusión se pueden describir usando ecuaciones del tipo: a t = F (a, b) + C a 2 a b t = G(a, b) + C b 2 b, donde a (o b) es una función del espacio y del tiempo y representa la concentración del químico a (o b). Para ver lo sencillo que puede llegar a ser la modelación de estos procesos usando autómatas celulares, podemos aproximar la ecuación para a, en una dimensión, Jorge Baier Aranda, PUC 107
de la siguiente manera. ( ) a t = F (a, b) + C a(x + x, t) a(x, t) a x x = F (a, b) + C a a(x + x x, t) a(x x, t) a(x + x, t) + a(x, t) ( x) 2 = F (a, b) + C a ( x) 2(a(x + x, t) + a(x x, t) 2a(x, t)) Si ahora hacemos D a = C a obtenemos que ( x) 2 t a = tf (a, b) + D a (a(x + x, t) + a(x x, t) 2a(x, t)) Finalmente, si F (a, b) = C s (α ab) y G(a, b) = C s (ab b β) se obtiene las ecuaciones de Turing (!) 6 para el proceso de reacción difusión en una dimensión. a i = D s (α a i b i ) + D a (a i+1 + a i 2a i ) b i = D s (a i b i b i β i ) + D a (b i+1 + b i 2b i ), 6 La ecuación original de Turing considera a α = 16. Jorge Baier Aranda, PUC 108
donde D s es la tasa de reacción y D a, la tasa de difusión, y a i y b i son, respectivamente, las concentraciones de a y b en la celda i. Claramente, este proceso se debiera poder simular con un CA. Es sencillo extender esto a un proceso en dos dimensiones. De hecho, en dos dimensiones, las ecuaciones de Turing forman figuras similares a la textura de algunos animales: Jorge Baier Aranda, PUC 109
Texturas sobre Relieve Usando otros procesos de difusión es posible imitar aún más las texturas de animales: Jorge Baier Aranda, PUC 110
Otras Aplicaciones Simulaciones de Purificación de Aguas (PUC) Simulaciones de Termodinámica e Hidrodinámica. Simulaciones de Tráfico. Simulación de Propagación de Incendios, etc. Jorge Baier Aranda, PUC 111
Referencias 1. Gary Flake. The Computational Beauty of Nature. MIT Press. 2. Jörg R. Weimar. Simulation with Cellular Automata. Lecture Notes. 3. Orion Sky Lawlor. Reaction-Diffusion Textures. http://charm.cs.uiuc.edu/users/olawlor/projects/2003/rd/ 4. Greg Turk. Generating Textures on Arbitrary Surfaces using Reaction-Diffusion. Jorge Baier Aranda, PUC 112