Caprica
Rincón donde hablo sobre las cosas que me interesan: tecnología, ciencia, software libre, ciencia ficción, fantasía y frikadas varias.

Mi twitter

carlos.mestre at gmail dot com

Archivos

<Febrero 2025
Lu Ma Mi Ju Vi Sa Do
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28    
             
Inicio > Historias > Autómatas celulares en python

Autómatas celulares en python

Cosas 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 :-)

Share |

2008-03-26 18:01 | , , , , | 6 Comentarios | Enlace permanente

Referencias (TrackBacks)

URL de trackback de esta historia http://caprica.blogalia.com//trackbacks/56475

Comentarios

1
De: Majek n' Tedote Fecha: 2008-04-01 20:20

Estos triángulos me suenan.
¿No te recuerdan a las pintaderas canarias?



2
De: faraox Fecha: 2008-04-05 23:38

Tio, aquí cada loco con su tema :P



3
De: Ghizo-Nak Fecha: 2008-05-20 12:19

Jajajaja ya ves xD se parecen un fisco pero xaxo Fran xDDD si es que en realidad ahi está la prueba!!! claroooo ¿No lo veis? yo el mesías os otorgo la llave que encaja vuestros conocimientos. Ahi está la prueba de que procedemos de la enigmática ATLÁNTIDA! Hemos hallado la prueba de la civilización perdida... Somos unos génios :)



Por cierto, ¿saben que en biologia se da este tipo de crecimiento y desarrollo celular evolutivo (sobre todo en el reino vegetal) y se denomina fractal o fractales? Si ya lo decian los Sofistas, somos mates...


un saludako ahi! se salió el artículo :D



4
De: faraox Fecha: 2008-05-20 12:23

Ups, gracias por el apunte Ghizo! La verdad es me he olvidado de comentar un montón de cosas, y sí, la bioinformática se trata de utilizar todos esos mecanismos de la naturaleza en nuestro provecho (usando ordenadores eh?).

Estoy preparando otro artículo con más cositas de bioinformática, a ver como queda.

Cuídate y ¡gracias por la correción!



5
De: Carlos Luna Fecha: 2008-12-09 21:56

Merci por el código. A ver si estas Navidades tengo unos días y me pongo a jugar un poco con él.



6
De: wawo Fecha: 2010-05-07 17:24

no me sirve el codigo