Last edited 13may05 by ianmaund@uiuc.edu
Find this document at http://www.ncas.uiuc.edu/Classes/MATH198/ianmaund

Vautomata: Von Neumann 2nd-Dimension Cellular Automata with History

Abstract


The inspiration for Vautomata came from a class lecture discussing cellular automata and Wolfram cellular automata. From there, I discovered the game of life, often attributed to J.H. Conway, and a project was born. Couple this with the fact that the course had recently switched from being primarily openGl to python and that my original project idea could have supported a master's thesis, and we have a winner.

The end result is a two-dimensional cellular automata, which allows the user to randomize a starting state, toggle the starting cells themself, start and stop the automata, and wipe the automata to the original "dead" state. Previous states of the automata are kept in a history, which stretches out beyond the current one, with the first state being directly behind the current one, the second state directly behind that, and so on.

J.H. Conway's Game of Life

The game begins with a randomly assigned nxn matrix, where cells can be in one of two states. These states are 1 (alive) represented by green spheres in my program and 0 (dead) represented by white spheres. At each iteration, the next "generation" of a cell is deteremined by looking at its current state and the states of its neighboors. For my version of the game of life, the rules are as follows:

1.) If a cell is currently dead, and has exactly two neightbors which are alive, then that cell's child will be alive.
2.) If a cell is currently alive, and has either two or three neighbors which are also alive, then that cell's child will be alive.
3.) In all other cases, the cell's child will be dead.

At each iteration, the results of these examinations are stored into a separate nxn matrix, to make sure that individual examinations do not effect the results of others. Once the entire examination is complete, the parent matrix is pushed backwards, and the child matrix placed in its place.

Screenshots


A diamond pattern created from a single original cell

A side view of the automata's history

A Smiley Face™!

The same smiley after a few iterations of the automata

Final Thoughts

Although I am proud of the work that I have done in bringing a two-dimensional cellular automata into visual python, it is not yet anywhere near perfected. At the present, users are only able to toggle and randomize before they start the automata, and even then they cannot do both together, but only one at a time. Also, it would be nice to see this program in the CAVE, as it would allow the user to move through the automata for a clearer look at the history.

I would like to thank Professor Francis for all the patience he has shown me, and for all the help he has given me on this project. Without him I would still be working trying to represent a pile of beans in three dimensions.