A (one dimensional) cellular automaton is a function1 F : Σ → Σ with the property that there is a K > 0 such that F (x)i depends only on the 2K + 1 coordinates xi−K , xi−K+1, . . . , xi−1, xi, xi+1, . . . , xi+K . A periodic point of σ is any x such that σ^p (x) = x for some p ∈ N, and a periodic point of F is any x such that F^q (x) = x for some q ∈ N. Given a cellular automaton F, a point x ∈ Σ is jointly periodic if there are p, q ∈ N such that σ^p (x) = F^q (x) = x, that is, it is a periodic point under both functions.
This project aims to explore the nature of one-dimensional Cellular Automata, in the hope of finding the structure of cellular automata through its periodic points.
License: MIT
ubuntu2004
COMPILE ------------ Source files for FPeriod: Comp.cpp Comp.h Func.cpp Func.h FuncNode.cpp FuncNode.h RecNode.cpp RecNode.h StorageKey.cpp StorageKey.h StorageVal.cpp StorageVal.h StringOps.cpp StringOps.h main.cpp Source files for FProbPeriod: Comp.cpp Comp.h Func.cpp Func.h FuncNode.cpp FuncNode.h RecNode.cpp RecNode.h StorageKey.cpp StorageKey.h StorageVal.cpp StorageVal.h StringOps.cpp StringOps.h prob.cpp Source files for FDense: Comp.cpp Comp.h Func.cpp Func.h FuncNode.cpp FuncNode.h GroupData.h MList.h RecNode.cpp RecNode.h StorageKey.cpp StorageKey.h StorageVal.cpp StorageVal.h StringOps.cpp StringOps.h dense.cpp Note that the programs use STL. The programs were developed with g++ 2.95.3. How to compile: The following will probably work for any g++ version 2.8 and 2.9, though it was only tested on 2.95.3. It is known to work for g++ 2.95.3. 1. Put all the source files in a directory. 2. Create a subdirectory called STL and put the SGI STL in this directory. This can be downloaded for free from http://www.sgi.com/tech/stl/ 3. Do "make FPeriod" or "make FProbPeriod" or "make FDense". This generates the binary executable "FPeriod" or "FProbPeriod" or "FDense". If you are using g++ version 3.0 or greater you may have compatibility issues when trying to get the SGI STL to work with your compiler. You may have to make changes to the FPeriod/FProbPeriod/FDense source code, make changes to the SGI STL, or use a different implementation of STL. If you are using a compiler other than g++, you may or may not have to make modifications to the FPeriod/FProbPeriod/FDense source code, make changes to the SGI STL, or use a different implementation of STL.