Cellular Automata/Cellular Automata Attributes

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Hi. Please allow me, the originating author of this book, although hopefully eventually not its only contributor, introduce myself. I'll do so by including a link to the discussion page that is associated with my username on the WikiBooks site. User:DonaldKronos

You may also visit my Discussion page, which I started with a simple introduction to myself and my original intentions for contributing to this site. User talk:DonaldKronos

This is my first book on WikiBooks, so please forgive me if I don't yet completely know how to do this right, but I thought this was a topic worth being covered so I'm giving it a try. Hopefully others will expand on my original efforts.

I've been working lately on many projects at the same time, but one on which I have spent considerable effort is updating and extending a specific cellular automata program, the Java based version of Mirek's Cellebration, called MJCell, or Mirek's Java Cellebration, as I have wanted to do so for many years and other things kept getting in the way. Actually, many years ago I spoke with Mirek, the creator of Mirek's Cellebration and he actually sent me the source code of the program and encouraged me to do so, but REAL LIFE got in the way, I lost the source code, and the program will not run on anything I now have available, so I decided to work on the Java version. In doing so, I have further explored an attribute of cellular automata space which had interested me all those years ago, which is the idea of discrete and distinct attributes within a given cellular automaton or even an individual cell of an individual automaton.

Here's what I mean. Consider a cellular automata space in which each automaton may have cells with a given number of possible states and a given neighborhood. One such neighborhood is the Margolus neighborhood, but that introduces something else. You see, if you place a single "dot" on the screen in a Margolus neighborhood, the program running that neighborhood will decide the "direction" of that element based upon its location within the four cell Margolus neighborhood into which it is placed, which alternates between odd and even time cycles. As a result, the same location on the board, or in other words, the same coordinates in the cellular automata space, with the same "state" can represent different things, depending upon the "attribute" of temporal parity.

Many such attributes are often "emulated" by cell states, and of course all can be, but it is interesting to explore them as something which can be "applied" arbitrarily to a given automata space, as I have done with the "age" and "birthday" attributes in Mirek's Java Cellebration. At the time of this writing, I'm taking a break from working on it, and not everything is working just right, but anyone wanting to see what I'm talking about can have a look at the Java applet at http://DonaldKronos.info/MJCell.jar

By my definition, the "birthday" of a cell is a modulus of the Cycle in which is was "born" into its current state. Many variations are possible and the concept seems worth further exploration. Age is simply how long ago, or how many time cycles ago, a particular cell was "born" into its current state (on into any non-zero state, or into a odd numbered state, or however "birth" is decided to be defined by the particular "age" rule.) The "age rule" may define "absolute age" or as in the implementation I have explored, age up to a particular limit, at which case the maximum age is maintained (as I have implemented) or cycled back to some previous age. Such extra layers of information can be used by rules which specifically take advantage of them, and ignored by other rules, with or without effecting such rules.