A New Kind of Science: The NKS Forum (http://forum.wolframscience.com/index.php)
- Pure NKS (http://forum.wolframscience.com/forumdisplay.php?forumid=3)
-- Randomly Selected Neighbor Modulistic CA (http://forum.wolframscience.com/showthread.php?threadid=971)

Posted by Lawrence J. Thaden on 12-29-2005 04:50 PM:

Randomly Selected Neighbor Modulistic CA

This cellular automaton selects its updated cell value from this list of ten base ten integers: {48, 77, 52, 89, 29, 37, 24, 83, 75, 98}. The integer selected is determined by taking the mod 10 sum of the cell and its randomly selected right or left neighbor. This mod 10 sum serves as a pointer indicating the cells next value from the list of integers.

Here is the code for making the pointer and updating an individual cell:

updateCell[tenIntegerRule_, neighborhood_] := Module[{pointerValue},
pointerValue = If[Random[Integer, {0,1}] == 1,
Mod[Apply[Plus, Take[neighborhood, 2]],
Length[tenIntegerRule]] +1,
Mod[Apply[Plus, Take[neighborhood, -2]], Length[tenIntegerRule]] +1];
Return[Reverse[tenIntegerRule][[pointerValue]]]]

The set of initial conditions for the attached sample was a row of 255 cells with 0 values and the single center cell with a value of 1. The cellular automaton ran for 3100 steps.

If you want to replicate it set the random state as follows:

\$RandomState = 23380500127362854232760002794456407131374404076918189541395643706859864719753662591649220193906664101560948950375902762521571626675839334671779497116489795844868299321620419879064775759667209165406258617740104452684101865730063674357408867735685627296910380483381891796470029027274260738888857485584171234271319291027373955866011781648546707821721310915951072781228745119734787335771987590918868084140236286458951168732744706150722463368931276929852165675988208243503028548669944645645663873014437292151801010968627727533368734371946669379041047879451282186381152839449398444913;

The interesting feature in this sample is that it progresses from a single cell entirely by way of fork-like branching.

Not every execution of this cellular automaton will go for 3100 steps before turning into a repetitive background. But with the above random state it will.

And not every different set of ten integers will produce the fork-like feature. But many will.

__________________

Posted by Lawrence J. Thaden on 12-30-2005 02:27 PM:

In order to hi-light the significance of the random component in this technique for making a pointer for selecting the integer that updates the cell, consider what happens when the random component is removed and replaced by

(1) a forcing mechanism that takes the cell and left neighbor exclusively,

(2) a forcing mechanism that takes the cell and right neighbor exclusively, and

(3) a mechanism that takes the cell and both neighbors.

In the attached graphic the cellular automaton from the previous post was run for 255 steps first repeating the random technique and then removing it and replacing it with each of these three mechanisms.

__________________

Posted by Lawrence J. Thaden on 12-30-2005 02:29 PM:

Perhaps as interesting is the case which excludes the cell and considers both neighbors.

The attached graphic illustrates this case with the same cellular automaton run for 500 steps.

__________________