freemonoid.xyz

index, posts, library, music.


Life as a coupled map lattice

Posted Sunday November 20 2022.

Here’s a nice thing I learned: Conway’s Game of Life can be represented coupled map lattice! Here’s how (in Python3): define the following 3x3 array of floats, the convolution kernel,

K = [
  [1, 1, 1],
  [1, 8, 1],
  [1, 1, 1]
]

This corresponds to a coupling parameter = 1/2 in the coupled map lattice. Next define the nonlinear activation function,

def f(u: int) -> int:
  if u == 3 or u == 10 or u == 11:
    return 1
  else:
    return 0

The idea is that we are given an array U of 1s and 0s, which is the state of Game of Life, and at each point we count up the number of live neighbors, +8 if the center is alive and +0 otherwise, and store these values in a new array V of the same shape. This corresponds to the Game of Life as follows:

You can represent other cellular automata like this too - see arXiv.1809.02942. I realized this after playing around with neuralpatterns.io (flashing colors warning) that lets you choose the kernel and activation function in-browser.