Totalistic Life-like cellular automaton

Template:Proposedsplit Totalistic Life-like cellular automaton can refer to two related but distinct classes of cellular automata.

Most precisely, a Life-like cellular automaton is said to be totalistic if the new state of a (live or dead) cell in the next generation can be expressed as a function of the total number of live cells in its neighborhood, including the cell itself.

In common parlance, totalistic is also often (but incorrectly) used as a synonym for outer-totalistic / semi-totalistic, meaning that the new state of a cell is a function of both the total number of live cells surrounding the cell, and the state of the cell itself. The rest of this article will use the previous, precise definition.

The two definitions differ in that in the second case, the transition function may afford special consideration to the state of the cell itself. For example, the following two configurations may evolve differently in an outer-totalistic CA, but must be treated the same by a totalistic CA:

There are precisely 210 = 1,024 different totalistic CAs, compared to 218 = 262,144 outer-totalistic CAs.[note 1]

A given outer-totalistic Life-like CA is totalistic iff for any 1 n 8, a live cell survives with n - 1 neighbors iff a dead cell gets born with n neighbors. For example, the automaton given by the rulestring B3/S2 is totalistic; any cell will be alive in the next generation if it has exactly three live cells (including the cell itself) in its neighborhood, and dead otherwise. Conway's Game of Life (B3/S23), on the other hand, is not totalistic: a live cell with three neighbors will survive to the next generation, but a dead cell with four neighbors will not get born.

Rulestrings

Totalistic CAs are described by totalistic rulestrings: strings of digits specifying the live cell counts which will cause a given cell to be alive in the next generation. For example, Replicator 2 (also called Fredkin) has the totalistic rulestring 13579; the equivalent rulestring in B/S notation is B1357/S02468.

Etymology

The word "totalistic" stems from the fact that evolution in a totalistic CA depends only on the total number of live cells in a given cell's neighborhood; similarly, in outer-totalistic CAs, evolution depends on the total number of outer cells, rather than their specific alignment. The word "semi-totalistic" expresses that an outer-totalistic CA, while not necessarily totalistic, is not entirely non-totalistic either: the transition function still depends on some certain total number of live cells.

Generalizations

Totalistic and outer-totalistic CAs can be generalized in several straightforward ways: taking into account the relative (but not absolute) alignment of live cells in a cell's neighborhood yields non-totalistic (isotropic) CAs, while also considering the absolute alignment yields non-isotropic CAs.

They can also be generalized to larger neighbourhoods. Golly can simulate a small selection of these rules if the birth and death conditions are all subsequent, and apgsearch v4.63 and above are able to search any rule up to a range of 5.[1] LifeViewer can simulate these from ranges 1 to 500, on Moore, von Neumann and circular (but not hexagonal) neighbourhoods.

Outer-totalistic rules can also be generalised to higher state counts; a notation for 3-state rules was proposed in January 2020.[2]

Also see

Notes

  1. Although there 262,144 different outer-totalistic Life-like CAs, some of these are essentially the same in a natural sense; the number of essentially different rules is 131,328. See Cellular automaton, Black/white reversal and Self-complementary for more.
gollark: Also, `c=s[i]` should go above `if s[i]=="i"` and this should be `if c=="i"`, I think.
gollark: If you factor in the size of doing all the indents it might be cheaper to do `s=input()` rather than making a function..
gollark: Just brotlipython it.
gollark: I don't see how this line works though: `if c in"ae":a+=int(c=="a")`. I mean, it doesn't look like it would decrement the accumulator at all.
gollark: Fiiiiine. `bin(a).replace("0b","")` should probably just be `bin(a)[2:]`. `eval` in the same line should probbaly be `int`.

References

  1. Adam P. Goucher (November 6, 2018). Re: apgsearch v4.0 (discussion thread) at the ConwayLife.com forums
  2. muzik (January 8, 2020). 3-state range-1 outer-totalistic rulespace (discussion thread) at the ConwayLife.com forums
This article is issued from Conwaylife. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.