Wednesday, April 4, 2007

Deus Ex Automatis: Part III

Now for some mechanics.

A cellular automaton is a model. Untangled from all the biological, physical, and mathematical metaphor, cellular automata are simple.

They exist on a grid of cells:


As pictured here, cells are represented by the egg shapes with letters in them. As you may have guessed, the cells give cellular automata the first part of their name. Between the cells are arrows, which declare the "neighborhood" of a cell. A cell's neighbors have arrows pointing into that cell.

Some cellular automata differentiate between one neighbor and another. In this series we'll look at some of each. Note, in passing (don't get hung up on it) that any cellular automaton that does not distinguish between neighbors can be easily represented by one that does. So the former should just be considered a kind of short-cut for the latter.

Inside each cell is exactly one member of a finite set.

{1,0}

Different models use different symbols in the set. 1 and 0 is very common. As is black and white. As long as the set is finite, it can also include more than two symbols.

If you're with me so far, this next piece is the last before we put it all together.

In order to pick which symbol from the finite set a cell should display, the cell examines its neighbors, and only its neighbors, and applies a rule. Programmers think of this rule as code in some programming language, but it can be even simpler than that. Here is an example of a rule:

left=1, right=1 then cell=0
left=1, right=0 then cell=1
left=0, right=1 then cell=1
left=0, right=0 then cell=0

This rule could be stated in the following casual shorthand: if exactly one of a cell's neighbors is a 1, that cell should be a 1. Otherwise, it should be a 0.

It's important to note that at least one 1200 page book has sold a fair number of copies by pointing out that a very simple rule can generate complexity out of simplicity. Put another way, complexity is simply a feature of some systems, even without entropy or chance.

The rule I just described would yield us output that looks something like this:

1101111011000011101110000
1011000110100010011001000
1110100101110011010101100
1001110111001010111111010
1101001100101111100000111
0011101010111000010000100
0010011111100100011000110
0011010000010110010100101
1010111000011101011110111
0111100100010011110001100
0100010110011010001001010
0110011101010111001101111
1101010011111100101011000
1011111010000010111110100
1110000111000011100001110
1001000100100010010001001
0101100110110011011001101
1111010101101010110101011
0000111111011111101111110
0000100000110000011000001
1000110000101000010100001
0100101000111100011110001
1110111100100010010001001
0001100010110011011001101
1001010011101010110101011
0101111010011111101111110
0111000111010000011000001
1100100100111000010100001
0010110110100100011110001
1011101101110110010001001

And with output like that, who needs a million monkeys typing?

Labels: , ,






<< Home

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]