In order to understand the concept behind the John Conway’s game of life, the best way would be starting from Stephen Wolfram and even John Von Neumann and cellular automaton. However, I believe it would be much easier to grasp the concept of cellular automaton if we make some experiments with John Conway’s game of life as one of the simple yet amazing implementations of the cellular automaton concept.
John Horton Conway, a British mathematician, developed a very simple algorithm in the late 70s which got popular among computer programmers and mathematicians. The algorithm was called Game of Life.
Although it’s not so clear that why the word game is used in the title, but using the word life in the name of the game shows what he meant from developing this amazing algorithm.
Here’s a very simple description of the algorithm:
Let’s suppose that you have an infinite grid which each cell can be in two different possible states (you can call them 0/1 or on/off or whatever you like).
The grid can also be finite but closed. It means you can consider the leftmost cell as the neighbour of the rightmost cell in the same row and make the same assumption for the cells in the highest and lowest line of the grid.
You can fill the grid with some initial configuration. I have done it already and you can see my grid below:
John Conway suggests four different states for each cell:
State I – Loneliness
In this state, an active cell has zero or one active neighbour. Such an active (or live) cell will die in the next stage.
State II – Steady state
In this state, an active cell has two or three active neighbours. Nothing happens and the cell remains active (live) for the next stage.
State III – Birth
In this state, a dead cell, has exactly three active neighbours. Such a cell will become active (live) in the next stage.
State IV- Death
This state can be considered as a kind of overpopulation. If a cell has four or more active neighbours, it will die in the next stage.
I have shown one sample of each stage in the above picture.
If you run the above algorithm on a simple initial setting, you will be amazed with the complex behaviors which appear there in the grid:
Many people have made different implementations of the game (you can check this one). Also, here you can find a nice lexicon about many different species developed in the game of life.
Besides all other applications of the game of life, there’s a very clear message in this game: in order to see a complex behavior, rules shall not be necessarily complex too. Even very simple rules can lead to very complex structures and behaviors if there be enough time for evolution and growth.