Cellular automata are dynamical systems in which space and time are discrete, that operate according to local interaction rules. Designing such systems to exhibit a specific behavior or to perform a particular task is highly complicated, thus severely limiting their applications. We study non-uniform cellular automata, focusing on the evolution of such systems to perform computational tasks, via a parallel evolutionary algorithm, known as cellular programming. We present the algorithm and demonstrate that high-performance systems can be evolved to perform two non-trivial computational tasks, density and random number generation.
Read full abstract