So far, we discussed CA models in their most conventional settings. But there are several ways to “break” the modeling conventions, which could make CA more useful and applicable to real-world phenomena. Here are some examples.
Stochastic cellular automata A state-transition function of CA doesn’t have to be a rigorous mathematical function. It can be a computational process that produces the output probabilistically. CA with such probabilistic state-transition rules are called stochastic CA, which play an important role in mathematical modeling of various biological, social, and physical phenomena. A good example is a CA model of epidemiological processes where infection of a disease takes place stochastically (this will be discussed more in the following section).
Multi-layer cellular automata States of cells don’t have to be scalar. Instead, each spatial location can be associated with several variables (i.e., vectors). Such vector-valued conﬁgurations can be considered a superposition of multiple layers, each having a conventional scalar-valued CA model. Multi-layer CA models are useful when multiple biological or chemical species are interacting with each other in a space-time. This is particularly related to reaction-diffusion systems that will be discussed in later chapters.
Asynchronous cellular automata Synchronous updating is a signature of CA models, but we can even break this convention to make the dynamics asynchronous. There are several asynchronous updating mechanisms possible, such as random updating (a randomly selected cell is updated at each time step), sequential updating (cells are updated in a predetermined sequential order), state-triggered updating (certain states trigger updating of nearby cells), etc. It is often argued that synchronous updating in conventional CA models is too artiﬁcial and fragile against slight perturbations in updating orders, and in this sense,the behaviors of a synchronous CA models are deemed more robust and applicable to real-world problems. Moreover, there is a procedure to create asynchronous CA that can robustly emulate the behavior of any synchronous CA .