Message Boards Message Boards

2
|
4723 Views
|
2 Replies
|
5 Total Likes
View groups...
Share
Share this post:

Cellular automata: correlation and computation along a direction

Posted 2 years ago

I've had an idea about looking at cellular automata in terms of directionalized correlation and computation inherent in the rulesets. I'll use Rule 30 as an example to help explain:

Rule 30 Entropy Chart

Explaining the above image: there are three major rows containing each of the 8 replacement rules, where the result has been aligned under a different column. Each rule has been paired with its matching counterpart, such that only the value of the replacement rule above the result cell differs. These pairs have rectangles drawn around them. The color of the rectangle indicates the type of relationship:

  • Red rectangles mean information is lost relative to the cell above the result.
  • Purple rectangles mean information is correlated with the cell above the result.
  • Blue rectangles mean information is correlated and computation occurs (the value is changed).

At a glance, one can see the direction that information is correlated and computed. For Rule 30, information is highly-correlated and retained moving rightward, and has less correlation moving straight down or leftward.

This generalizes into cellular automata of more colors, range & dimensions, however I'm having a little difficulty comparing rules with higher amounts of colors, or putting a good scalar value on how much correlation and computation is taking place to determine if a particular cellular automaton is boring or not, though I have an idea on how to confirm a measurement is consistent.

A 1-range cellular automaton (like Rule 30) can be converted into a 2-range CA by taking it over two steps instead of one. The values for correlation and computation can be compared for consistency.

For example, the 2-range version of Rule 30 is rule 535945230, with each cell only 1/4 correlated with the two cells above-and-left, but 3/4 correlated with the two cells directly above and above-right, and 100% correlated with the cell above-and-far-right. This gives us the equations for correlation:

example of the most proper way to post equations

I'm using circle-operators as a stand-in for whatever multiplication-like and addition-like operations these should be. I'm not even sure that correlation can be represented as a scalar value. Computation seems to be even more difficult to get a grip on, and I've had a thought that computation might be best-measured every color-th step (that is, every other step for two-color CA, every third step for three-color CA, etc, to account for oscillators).

That said, taking an existing ruleset and making small changes to get it to be more ordered or chaotic is relatively easy. I've been working by hand, but have found several that might be considered Class 4, or are at least interesting:

  • 3-color Rule 6244262337426. This was found by modifying a random initial rule, with only the condition that the background remains white.

    ArrayPlot[CellularAutomaton[
      {6244262337426, 3, 1}, (* Rule *)
      {{1, 1, 0, 0, 1, 1, 0, 2}, 0}, (* Initial Condition - the interesting one *)
      350], (* Number of Steps *)
     ColorRules -> {0 -> White, 1 -> Green, 2 -> Black}] (* Coloring *)
    

Most small initial conditions get repetitive.

Rule 6244262337426 with Initial Condition {2,1}

However, I've found {1,1,0,0,1,1,0,2} is chaotic for at least 8000 steps.

Rule 6244262337426 with Initial Condition {1,1,0,0,1,1,0,2}

  • 3-color Rule 6613854010095. Just as before, this was found by modifying a random rule.

    ArrayPlot[CellularAutomaton[
              {6613854010095, 3, 1}, (* Rule *)
              {{1, 0, 0, 2, 1}, 0}, (* Initial Condition - the interesting one *)
              350], (* Number of Steps *)
             ColorRules -> {0 -> White, 1 -> Green, 2 -> Black}] (* Coloring *)
    

As before, many small initial conditions do not generate anything interesting, however the initial condition {1,0,0,2,1} yields interesting computation:

Rule 6613854010095 with Initial Condition {1,0,0,2,1}

I've got many more examples, however less organized. I'll close out with this one though. This wasn't started from a random rule, but I was trying "artistically multiply" Rule 30 against its reverse using this same calibration method and some intuition, favoring randomness on the black left-edge (that might be a whole other conversation unto itself). I got something a bit more interesting than I expected. 3-color rule number 892507546128, with various initial conditions:

ArrayPlot[CellularAutomaton[
  {892507546128, 3}, (* Rule *)
  {RandomInteger[2, 17], 0}, (* Initial Condition *)
  750], (* Steps *)
 ColorRules -> {0 -> White, 1 -> Blue, 2 -> Black}] (* Coloring *)

This has very different global behavior depending on initial conditions, combined with all the chaos and order you'd expect out of something based on Rule 30. The remaining images are of this rule, with varying random (and unfortunately unsaved except for the images) initial conditions:

Dueling 30 rule, random sides There's randomness on both sides, this I expected would always be the case.

Dueling 30 rule, repetitive sides

There's significant order on both sides. This I didn't expect at all. It also looks like chaos spontaneously begins on the left.

Dueling 30 rule, ray of blue Dueling 30 rule, dogeared These only confused me further, especially the sudden dog-earing of the blue section to the left.

Dueling 30 rule, mix of blue and black This doesn't even look like the same rule. Blue and black are mixed on the left. Per my notebook it's the same rule as above.

I mostly follow cellular automaton recreationally -- I haven't been reading any formal papers about it. I'm not sure if looking at CA in terms of directionalized correlation and computation is new or studied. I'm also not sure if there are known methods for generating cool cellular automata. I'd expect this is nothing new I've stumbled on, but honestly, I'm not seeing enough CA art that would hint at methods for making novel CA, and part of me thinks at least that bit is new.

Feedback is welcome, especially if you know of specific disciplines, papers, or people that pertain to either of these ideas. Thanks!

POSTED BY: Cameron Kosina
2 Replies
Posted 2 years ago

I'm looking through your code, but it might take me a while to get a good enough understanding of it to experiment with it. I've never worked with CA in polynomial form before. I see the core concept, I'm hoping you're able to work it out. A continuous time solution should be very useful in proving rules as equivalent.

I wanted to make this a separate post in a couple of weeks, but the initial results are relevant. I had a thought that if you use a 4-color 1/2-range CA that alternates between pairs of colors you might be able to find rules equivalent to a 2-color 1-range CA. I just wrote a quick function to check all those possible combinations and got decent results.

Grid[
 Table[
  ArrayPlot[
   Delete[
    CellularAutomaton[
     {
      (((IntegerDigits[firstInd, 2, 4] + 1)*{1, 4^3, 4^12, 
            4^15}) + ((IntegerDigits[secInd, 2, 4]*3)*{4^5, 4^6, 4^9, 
            4^10})) /. List -> Plus, 4, 1/2},
     {{3}, 0},
     50],
    Table[{n}, {n, 2, 50, 2}]](* A list of the alternating rows in each graphic, 
   marked for deletion *)
   ],
  {firstInd, 0, 15}, {secInd, 0, 15}]]

No Rule 30 equivalent though. It's still interesting and I think I'll post some cleaner code at some point later.

POSTED BY: Cameron Kosina

Hi,

I am an alumni of this years Wolfram Summer School and my project was about a special kind of cellular automata whose rules can change depending on the total number of black cells. To get an idea about that you might have a look at a post by Stephen Wolfram (https://www.stephenwolfram.com/publications/cellular-automata-global-control/).

You might also have a look at my community post (https://community.wolfram.com/groups/-/m/t/2357836). After I finished the project I tried to apply some ideas to the elementary CA and improve them. Recently, I try to analyze rule 30 using its polynomial form (look at https://content.wolfram.com/uploads/sites/38/2021/01/PolyCArules.cdf for reference) and some continuous initial condition which allows symbolic computation. Especially, I am interested to create a continuous version of such CA, i.e. fill the "gaps" between the cells and the steps.

The easy part is to fill gaps between the cells: just use the polynomial form and give a continuous input. But for almost all rules it is extremely hard to learn how to calculate fractional steps.

Unfortunately, my work is still not finished and especially rule 30 shows very complicated behaviour.

Nevertheless, I attach a notebook where the basic idea can be seen. I hope I can post some results soon...

Attachments:
POSTED BY: Andreas Mämpel
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract