Chaos Found
6-Ruled Automata
Imperfect Permutable Sub-cellular Automata
Imperfect Permutable Sub-cellular Automata
Outputs
A final thing we could consider changing is the amount of cells that get updated by a single rule. Ordinarily, a single rule updates a single cell. This is also an arbitrary formulation and it is the key to creating simpler ECA capable of complexity. What if we allow for more than one cell to be updated by a rule? This is how we make it happen! We need to add this possibility to our ruleset definition. A given rule can be n-out meaning it can output or set n possible states. If a rule can set multiple states in the next array, for example, maybe it can set the states of 2 elements, we would say it is 2-out. We are used to rules being single-out (1-out) but there is no reason this must be the case.
Consider the ruleset below.
Remeber that the order matters! Imperfect permutable rules should be applied before perfect permutables.
This set of if blocks says to check the the cell to the left, if it is 0, check the current cell, if it is 0, check the next cell, if it is 1, set the cell in the next timestep at index i-1 to 1, and set the element at index i in the next timestep to 1.
If the first set of conditions are not met, check if the previous element was a 1, if the current element is a 0 and the next element is a 1, set the element of the next timestep at index i-1 to 0, and the element in the next timestep at index i to a 1.
If those conditions are not met, check all 2-space perfect permutations. Note that these rules are leftwise. If the current element is a 0 and the next element is a 0, set the element at index i of the next timestep to a 0.
If the current and next elements are 0 and 0 respectively, set the element in the next timestep to 0.
If the current and next elements are 0 and 1 respectively, set the element in the next timestep to 1.
If the current and next elements are 1 and 0 respectively, set the element in the next timestep to 1.
And finally, if the current and next elements are 1 and 1 respectively, set the element in the next timestep to 0.
Simply put, these are the rules:
As you can see, there are a total of six rules in this ruleset. four of which are computationally simpler that Rule30. It is an imperfect binary 3-space 2-out (leftwise/midwise), perfect 2-space single-out leftwise elementary cellular automata. That is a mouthful. I think I'll just call it a sub-elementary cellular automata, or maybe just 'SCA'.
If we compare this ruleset to Rule30, we see that it has fewer rules and four of those rules are computationally simpler than all eight rules of the Rule30 ruleset. If we say that a test instruction is computationally equivalent to a set instruction, Rule30 has three tests per rule, and one set per rule. Giving a total of 4*8 = 32 computations.
Lets compare the number of computations to the SCA that demonstrates complexity.
With 2 rules that have 5 computations each and 4 rules with only 3. Therefore, the SCA has a total of 22 total computations. Even if you encoded the order in which you apply the rules as a rule in itself, at most, it would add only 6 computations to the ruleset, totalling 28 computations, a number still smaller than the 32 computations needed for Rule30. I don't see any reason to say that the order is a rule, but just in case that was a criticism, the SCA still has fewer rules and less complexity in the specific rules than those of Rule30. The rules themselves (at least most of them) are computationally simpler, and there are fewer of them. I think this ECA (SCA) and it's equivalencies must be the simplest elementary cellular automata capable of complexity (computational irreducibility). The next step in this journey is to try out some of the paths I have laid out. Who knows, maybe you will find an even simpler one!
The next step in the journey for this SCA is to prove or disprove Turing Completeness. It is unknown whether this SCA is capable of universal computation.
You can find the code for this SCA at the bottom of this webpage.
I have added a 5th section outlining my discovery of a 5-ruled cellular automaton that generates complexity. Find the link at the bottom of this section.