Ahmed's short backstory: I was watching tv late one night while living in Brazil, when the signal cut out. I was mesmerized by the random pattern of pixels oscillating on the screen, knowing that a specific percentage of them were caused by cosmic background radiation. Despite the random cosmic element on the tv screen, the pattern was very similar to the deterministic cellular automata I was playing with on my computer. This fascinated me. One pattern was random and the other was deterministic but not chaotic, and yet, the two were indistinguishable from one another. This inspired me to ask the question: if all it takes to create these crazy patterns are a very simple set of deterministic functions mapping onto one another, then what is random, and what really is chaotic? What else would I be able to produce?

There's beauty in chaos.

Key words

  • Hilbert (space filling) curve
  • Cellular automata
  • Recursive mapping
  • Combinatronics
  • Debrujin Sequences
  • Memory

What it does

We're exploring the evolutionary dynamics of these cellular automata and visualizing them for an audience unfamiliar with the math. We've provided the theoretical underpinning of this framework, coupled with a simple graphical interface that demonstrates the localized effect of the interaction between two arbitrary rules. Cellular automata provide a way to bound chaotic inputs amongst a closed set of states.

Independent of how complex your pattern is, you can always recurse deeper into the solution space because you can always generate more intricate inputs to be processed through the rule set that you have. This maximizes the amount of information you're extracting about the patterns in those inputs. This is why chaos is now bounded. You're simply limited by the processing power you have to recurse through this infinite space as compared to the complexity of the pattern you're seeking.

How I built it

Basically we reinterpreted cellular automata to separate the input space from the message space. What that means is we can run cellular automata in three different ways, forming a chain of actions and interactions. The visualization we created takes an ordered image (gradient mapped along a hilbert curve) and disturb it by passing the inputs through a randomly chosen pair of cellular automata rules and observing the localized effects of their interactions.

Message = Rule(Input) Rule(s) = Input(Message) Input(s) = Rule(Input)

Passing an input through a rule to receive a message reduces the amount of information we can extract from it, because running that message backwards to extrapolate the initial input in fact can only give you a possibility space that contains probable inputs that generated that message. Sp when you group two rules and a message, what you're creating is a mapping between one input space onto another input space, where only some of those inputs are relevant. To do this, we setup an ordered hilbert curve and used colour to express that order. Then we disturbed that order by choosing two random rules and seeing how the curve visually translates when run through them. The function we used to update the colour values is the same used in reinforcement learning to update the reward expectations.

Challenges I ran into


Accomplishments that I'm proud of (same category as what I learned)


  • Came up with my first original indexing function that allows me to map the location of a point in a hilbert curve onto an update matrix
  • Theoretical framework for recursive mapping function along a hilbert curve to update cellular automata, drawing inspiration from how neural networks update layers using weights and values
  • finding simple analogies to communicate complex ideas


  • Learning the importance of using version control.
  • Learning the importance of not working alone
  • Dynamic heat maps to present cellular automata in space filling curves

What's next for Bounded Chaos

Simple toy model application: Showing how pixels within an image could interact based on their HEX colour value and proximity to one another along a Hilbert curve. This would create some very beautiful and potentially freaky glitch art

Reinforcement learning paradigm: Given the expansive scale of the automata rules and the compounded interactions between them, there is a way to use this as a basis for reinforcement learning. This has been previously exhibited by embedding the patterns of the phonemes of English (all the phonemes of 135,000 words) in as little as a network of 13 rules interacting amongst themselves, and are currently being tested by us to learn the chaotic patterns generated within the logistic equation (bifurcation function).

Built With

Share this project: