A regular grid of cells with states that are updated each iteration in according to rules. Developed by Stanislaw Ulam and John von Neumann at the Los Alamos National Laboratory in the 1940s, this system has been used to model physical, biological, and social phenomena with remarkable variety and accuracy.
Key terms:
- Cell - a discrete location on the grid
- State - the "value" of a cell. Many CAs just have two states (on/off), but others use many.
- Neighborhood - set of cells surrounding a given cell. Most common types are Von Neumann and Moore, though others exist.
- Rule(s) - mathematical functions or if/else statement(s) that define what the next state of a cell should be based on various criteria like the states of that cell's neighbors. Sometimes called transition rules.
- Generation - result of one iteration of the system.
Types:
- Asynchronous - automaton in which each cell is updated independantly of the others over time. Multiple update schemes have been proposed by various researchers.
- Block - automaton in which the grid of cells is divided into non-overlapping blocks, with rules being applied to entire blocks rather than individual cells. Also known as a partitioning cellular automaton.
- Continuous - automaton in which each cell has a real number value instead of an integer state.
- Continuous spatial - automaton in which the cell locations are continuous.
- Cyclic - automaton in which cells are initialized with one of a number of states in a range, then can be "consumed" when a neighboring cell has a successor state, causing the cell's state to take on that successor state. In other words, if cells can take on a value in the range
[0,9], then a cell with value2can be "consumed" by a neighboring cell with value3, causing the cell to take on the value of3. When cells reach the state at the end of the range, they are reset to the state at the beginning of the range (wrapping around). - Discrete - the "default" configuration for cellular automata, in which a grid of regular square cells and integer states are used.
- Elementary - 1D cellular automata with two states and 256 possible rules. Thought to be the simplest possible cellular automaton.
- Life-like - any 2D outer totalistic automaton that uses two states and a Moore neighborhood, and whose transition rule can be expressed as a function of the number of neighboring cells that are in the "alive" state. Three standard rule notations exist, and a large number of rules have been identified and researched.
- Reversible - automaton in which past grid states can be determined using later grid states. In other words, if you know the state at time
t, you can compute the state att - 1. - Second-order - automaton in which cell states depend on their neighborhood in the last two generations. In other words, the state at time
tdepends on the state at botht - 1andt - 2. - Stochastic - automaton with a transition rule that incorporates a probability distribution or, in other words, some degree of randomness. Also known as probabilistic (PCA) or random cellular automata.
- Totalistic - automaton in which the state of each cell is based on the sum of the values of its neighbor cells in the previous iteration. If it also depends on its own state in the previous iteration then the automaton can be called outer totalistic or semitotalistic.
Wolfram's classification:
Stephan Wolfram defined four classes that can be used to describe any cellular automaton or other simple computational model based on their observed behaviors. These definitions are qualitative in nature, with some room for intepretation, but are nonetheless considered the most effective classification scheme that currently exists for cellular automata.
- Class 1: Uniformity - nearly all initial patterns evolve quickly into a stable, homogeneous state. Any randomness in the initial pattern disappears.
- Class 2: Repetition - nearly all initial patterns evolve quickly into stable or oscillating structures. Some of the randomness in the initial pattern may filter out, but some remains. Local changes to the initial pattern tend to remain local.
- Class 3: Random - nearly all initial patterns evolve in a pseudo-random or chaotic manner. Any stable structures that appear are quickly destroyed by the surrounding noise. Local changes to the initial pattern tend to spread indefinitely.
- Class 4: Complexity - nearly all initial patterns evolve into structures that interact in complex and interesting ways, with the formation of local structures that are able to survive for long periods of time.
Well-known rules and rule families:
- Brian's Brain by Brian Silverman
- Game of Life by John Conway
- Generations
- Lenia (repo) by Bert Wang-Chak Chan
- Langton's Ant by Chris Langton
- Larger than Life by Kellie Michele Evans
- SmoothLife by Stephan Rafler (original paper, PDF)
- Wireworld by Brian Silverman
Articles, books, and other writings:
- Building simulations with a Go cellular automata framework by Sau Sheong
- Cellular automaton on Wikipedia
- Cellular Automata rules lexicon in the MCell documentation by Mirek Wojtowicz
- Chapter 7. Cellular Automata from Daniel Shiffman's Nature of Code book
- Elementary Cellular Automaton on Wolfram MathWorld
- New Kind of Science by Stephan Wolfram
- Understanding Multiple Neighborhood Cellular Automata by Slackermanz
Code projects:
- cellauto.js (source) by Jonas Olmstead (JavaScript)
- cellularAutomata by Siddharth Bhat (Haskell)
- Cellular Automata Simulator (CAS) by Guilherme Humberto Jansen (Java)
- cellpylib by Luis Antunes (Python)
- Lifelike (source) by @psychedelicious
- regl-smooth-life by Ricky Reusser (JavaScript, WebGL, GLSL)
- sandspiel (source) by Max Bittker (JavaScript)
- SmoothLife by Sean Murphy (Python)
- SmoothLife by ionreq (C++, Matlab, BASIC)
- terra.js (source) by Riley Shaw (JavaScript)
- Various packages and projects by Kevin Chapelier:
Creative projects:
- 3D printed Game of Life shoes by Francis Bitonti
- KnitYak: Custom mathematical knit scarves by Fabienne "fbz" Serriere
Notable software:
- cubes.io: 3d cellular automata by Charlie Deck
- Golly
- MCell (Mirek's Cellebration) by Mirek Wojtowicz
- Visions of Chaos by Jason Rampe
- WebCA / Cellular Automata Laboratory (CelLab) by Rudy Rucker and John Walker