Caprica |
Rincón donde hablo sobre las cosas que me interesan: tecnología, ciencia, software libre, ciencia ficción, fantasía y frikadas varias. |
carlos.mestre at gmail dot com Archivos
|
Autómatas celulares en pythonCosas del procrastinar, esta Semana Santa le dediqué unas pocas horas a adelantar trabajo de Bioinformática, bueno, adelantar no es la palabra, es más, estoy casi seguro que no haré las prácticas finales, pero he dedicado unas horas a hacer tareas que no me corresponden.Lo que he hecho ha sido un programita en python que genere imágenes de la evolución de autómatas celulares unidimencionales. Conseguimos imagenes tan chulas como estas: ![]() Antes de seguir, una pequeña explicación de los autómatas celulares. Un autómata celular es un modelo que se usa en computación para el estudio de sistema formales. Sirve, por ejemplo, para "estudiar" sistemas emergentes que se pueden producir en un modelo matemático o modelar comportamientos. Si habéis jugado alguna vez al juego de la vida seguramente sabréis de lo que estoy hablando. El autómata celular lo componen un conjunto de celdas, un radio de acción (que vecinos miramos), una serie de estados para cada celda y un conjunto de reglas para cada una de los posibles estados de la celda y la vecindad. Estas reglas se aplican a cada celda produciendo una iteración cambiando o no el estado de cada una de las celdas. El ejemplo más simple es un autómata unidimencional (un vector de celdas) en el que tenemos un radio = 1 (miramos el vecino de cada lado), con dos estados, 0 o 1, y un conjunto de reglas (esto lo veremos más adelante). Partiendo de esto podemos tener 256 reglas (2^8) que aplicar (que por cierto ya están bien estudiadas). Si ahora cogemos y asociamos un color a cada estado (1 es negro y 0 es blanco) e intentamos dibujar cada vector, haciendo que cada iteración sea una fila de una imagen, podemos obtener comportamiento emergentes. Y aquí es cuando llegamos al código en sí, que genera todas estas imágenes. Uno de los ejemplos más ilustrativos es el triángulo de Sierpinski usando la regla 90. ![]() Las reglas y cada una de las imágenes que genera puedes encontrarlos en mathworld. ![]() ![]() Código del programa. Ya sabéis, coged el código, reescribidlo, colgadlo por ahi, haced lo que queráis con él :-) 2008-03-26 18:01 | science, python, programming, image, cellularautomatas | 6 Comentarios | Enlace permanente
Referencias (TrackBacks)URL de trackback de esta historia http://caprica.blogalia.com//trackbacks/56475
Comentarios
|