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.