Reviewed by
Nigel Gilbert
School of Human Sciences, The University of Surrey, Guildford, GU2
5XH, United Kingdom.
Although I usually think of Europe as the home of tradition and the United States as the source of the new, trashy and temporary, there is a certain kind of book at which the Americans excel and which is now almost never published on this side of the Atlantic. This is the beautifully produced work of scholarship printed on thick paper (acid-free, of course) with wide margins, lots of illustrations and only available in hardback. Flake's Computational Beauty of Nature is just such a book. Indeed, the whole enterprise seems almost unimaginable to me, a typical hard-pressed academic: Flake explains in his Preface that it was written more or less as a labour of love, presumably as a spare time activity, while working in Siemens Corporate Research.
The theme of the book is wildly ambitious: to describe, explain and inter-relate fundamental ideas from computation, fractals, chaos, complex systems and adaptation. It could have very easily gone wrong. But in fact it is a triumph, because Flake is always clear and precise. Although most of the book is accessible to the non-specialist, there is very little arm-waving. The explanations of some profound ideas are taken steadily and carefully, and with helpful examples and the occasional anecdote. As the author says, some parts of the book could be the basis for lessons for a third-grade class, while other parts will give graduate students a headache. (Some of the material on chaos certainly gave me one!)
One of the features that makes the book not just a tour of some trendy aspects of modern mathematics is that each chapter is linked to a demonstration program (written in C and downloadable from the MIT Press). The link to programs is important because of the author's view that computer simulation provides the glue that links experimentation and theory in science. Dynamics that can only be described on the page become visible in the operation of the programs. Given the nature of the book, it is odd that these programs are written in C, an engineers' language written for efficiently implementing an operating system. The first demonstration program, which introduces the section on computation, is an interpreter for a simple dialect of Lisp and there would have been a measure of computational beauty in writing the remainder of the programs in that language.
The book is divided into five sections, plus an introduction and epilogue. The first, concerned with computation, deals with number theory, computability and Gödel's Theorem. The notions of partial and in-computability are picked up throughout the book and related to properties of cellular automata, regions of the Mandelbrot set, strange attractors and so on. Cross-cutting ideas such as computability and emergence are highlighted throughout the book and this is one of its major strengths. The next section is on fractals, describing the usual L-systems and Cantor, Julia and Mandelbrot sets. As might be expected, programs are provided to draw these fractals, but along the way, the reader gets an introduction to linear algebra and three-dimensional computer graphics. The third section, although labelled Chaos, is really about nonlinear dynamics and includes a useful discussion of the Lotka-Volterra system (the equations that describe idealised predator-prey population interactions). The next section, on complex systems, describes cellular automata, includes a rather superficial introduction to self-organising systems and explains game theory and iterated Prisoner's Dilemmas. A final chapter in this section provides a brief but thorough introduction to artificial neural networks with fixed weights. The concluding section deals with adaptive systems, including genetic algorithms, classifier systems and neural networks with backpropagation. The chapter on classifier systems is particularly valuable as it is the only introduction to such systems that I know of; previously one would have to refer back to the original research literature, which is hard to translate into a working implementation. In accord with the spirit of the book, the program code for a simple classifier system is explained and included on the web site.
The relative emphasis given to each of the topics and the depth to which they are explained varies, no doubt in accord with the author's interests and knowledge. For my taste (and perhaps for the taste of many readers of this journal), there was rather too much detail about the mathematics of fractals and chaos, and rather too little on multi-agent systems and self-organisation. Nevertheless, there is a great deal in the book that will be new and stimulating to almost any reader. There is a good bilbliography and an index. For a challenging and fascinating present for a lad or lass who is getting interested in computers or mathematics, or for lighter reading for the simulation professional, there is little else to beat it.
Return to Contents of this issue
© Copyright Journal of Artificial Societies and Social Simulation, 2000