*Exploring Discrete Dynamics* is a very extended computational and analytic exploration of discrete dynamical systems. The book makes a summary of more than 19 years of results, programming, and research by Andrew Wuensche.

In 1992, at the Santa Fe Institute, Wuensche together with Mike Lesser published the celebrated book in cellular automata theory *The Global Dynamics of Cellular Automata* [26]. This book introduced a reverse algorithm for cellular automata, and presented an atlas of basin of attraction fields computed by means of the algorithm. Motivated by these results and Kauffman's model of genetic regulatory networks [12], Wuensche subsequently developed new algorithms for random Boolean networks and discrete dynamical networks in general. His achievements have had a great influence on outstanding researchers such as Stuart Kauffman [12], Harold V. McIntosh [18], Andrew Adamatzky [1], and Christopher Langton [26], among many others; and hundreds of references in books and research articles.

These results have been obtained mainly by making use of his popular open source software DDLab (Discrete Dynamics Lab, http://www.ddlab.org/), which is widely used in the scientific community and offers free access to software, code, and manual. Wuensche's latest book, *Exploring Discrete Dynamics*, presents a very extensive description of the current features of DDLab. Successive chapters describe, in detail and in depth, every function of this tool, illustrated with numerous examples from his research.

Analyses concentrate mainly on four systems of increasing generality: cellular automata (CAs), random Boolean networks (RBNs), discrete dynamical networks (DDNs), and random maps. Consequently, in this book we have a ramification that connects and relates concepts naturally derived from these main subjects: reverse algorithms, rule space, state space, basins of attraction, stability, order, chaos, complexity, networks, emergent structures, classes, filters, self-reproduction, reaction-diffusion, cryptography, and beyond [4, 7, 9, 11, 21, 24, 28, 30–33, 35–37].

Without doubt, the DDLab software is unique in its ability to study and classify discrete dynamical systems, analyze and unravel networks with the network graph, create flexible simulations where parameters can be changed on the fly, and generate basins of attraction and subtrees. In DDLab we can experiment with mutations, calculate preimages (or ancestors [10, 23]), and analyze state space configurations iterating for unlimited spans of time, including simulations in one, two, and three dimensions. In the state space implementation, we can calculate the changing input entropy and pattern density, which helps us to understand the properties of dynamical systems—applied in particular to automatically categorize CA rule space between order, complexity, and chaos. The static *Z* parameter, based on just the rule table, also categorizes CA rule space by predicting the indegree in subtrees to identify *maximum* chaos—this is applied for a method of encryption [34].

An interesting point in the book is the incorporation of a *jump graph of the basin of attraction field* (see p. 207). Thinking in terms of Edward Fredkin's *finite nature* hypothesis [13], the most important implication of this hypothesis is “that every volume of space-time has a finite amount of information in it. Every small region of space-time (a cell) must be in one of the small number of states.” Fredkin focuses this implication precisely on CA models because they relate naturally to his idea. A CA is a discrete dynamical system with a finite alphabet evolving on an infinite or finite regular lattice. Its dynamics are simple: Basically, each (central) cell is affected by the values of its close neighbors and itself; thus, depending on this combination of values, each cell is transformed at the next time step. All the cells in the lattice are updated synchronously at each time step, though DDLab also provides asynchronous and partial-order updating, as well as probabilistic (noisy) updating. In this way, the CA (or discrete dynamical network) evolves from some initial lattice configuration along a deterministic trajectory. Hence, its space-time dynamics corresponds to the system's “local” behavior. These artificial universes are able to yield a number of different classes of behavior: trivial evolutions, periodic, quasi-periodic, chaotic, and complex. All possible trajectories combined make up the basin of attraction field with a topology of trees rooted on attractor cycles—the global dynamics. This is represented by a diagram (known as a state transition graph), which provides a global perspective on the dynamics. A specific initial condition now determines one path through the graph.

Therefore, we have basin of attraction fields, where nodes (representing strings) are connected by directed arcs. In CA, these also display equivalences and symmetries. In natural phenomena and other complex processes, the paradigm of the basin of attraction field can be extended. With the jump graph, we can have sets of basin fields connected deterministically or probabilistically to others. As a consequence, other kinds of dynamics could be analyzed in a more complete and realistic way, in the sense of Fredkin's hypothesis. Thus, for an Ackermann function [5], we could think about sets of jump graphs interconnecting other jump graphs, and so on.

Filters in DDLab are another powerful characteristic to recognize information within the noise or chaos of discrete dynamical systems. Some CA evolutions present dominant periodic backgrounds, sometimes called ethers, as in the famous universal elementary CA (ECA) rule 110 [8, 29]. Other, more exotic CAs (with respect to alphabet, neighborhood, and dimensions) can be studied in DDLab; they may evolve with two, three, four, or more periodic or chaotic backgrounds at the same time, with gliders and other complex patterns emerging during their histories [6, 16, 22, 30]. Filters have been demonstrated to be useful to explore and clarify particles (gliders or mobile self-localizations) and collisions between them in unconventional computing models [14–16]. DDLab can easily manipulate filters in such systems (see pp. 410–416 of the book), because it can identify the frequencies of subpatterns (blocks of cells) and separate the higher-frequency blocks on the fly in order to reveal just the important information by changing the colors of cells.

An improvement to DDLab would be to extend the maximum lattice size beyond the current limit of 65,025 cells. An update to do this is in the pipeline, and I have personally tested the advance version (ddlabX07), where the new maximum is 159,072,862 cells, allowing 2D lattices with sides of 12,612 cells, and a 3D cubes with sides of 541 cells. Large evolution sizes will permit a better view of the macroscopic world of such systems, and consequently facilitate the construction of large initial configurations, which will be useful to develop enhanced kinds of experiments—for example, to handle combinations of gliders and collisions to implement computable systems (see [1, 4, 15, 17, 19, 20, 25, 27]), periodic sequences, regular expressions, or tiles.

*Exploring Discrete Dynamics* provides an essential and detailed description of how to operate the DDLab software; together they make an important contribution to understanding, constructing, and playing with networks, CAs, RBNs, and discrete dynamical systems in general. If you have no experience using DDLab or are unfamiliar with these kinds of concepts, I would suggest a quick introduction to playing with some interesting and attractive simulations by checking http://www.ddlab.org and its links. For example, for a fast and short introduction see http://www.cogs.susx.ac.uk/users/andywu/multi_value/ddlife.html; you can also view a short tutorial video illustrating the basic DDLab functions in http://www.youtube.com/watch?v=N2hEiKOYsKo.

Finally, Wuensche has explored a huge number of complex evolution rules and architectures in CAs, RBNs, and discrete dynamical systems, with mutations, totalistic functions, majority rules, chain rules, reaction-diffusion automata, post functions, canalizing, small-world, and hybrid networks, and many other functions that actually offer a vast number of unexplored universes to reasearch in several scientific fields. There will always be extra functions in any wish list (and users can themselves revise the open source code). My suggestion is to consider another variation of the CA, the *CA with memory* (see [2, 3]). This could easily be done by including information from historical time steps (which DDLab already records for other functions) when calculating the next time step. CAs with memory have been demonstrated to be simple, interesting, and powerful in exploring other new domains of complex evolution rules and computable systems [14, 16, 17].

## References

## Author notes

Instituto de Ciencias Nucleares, Centro de Ciencias de la Complejidad, Universidad Nacional Autónoma de México, México, and International Center of Unconventional Computing, Bristol Institute of Technology, University of the West of England, Bristol, United Kingdom. E-mail: genaro.martinez@uwe.ac.uk