Computational Diversions: Circus Maximus

One of the tricky aspects of a ‘‘computational diversions’’ column is determining just how much programming should, or plausibly can, be included in a particular example. On the one hand, it is certainly possible to suggest complex research-level projects that require pages and pages of procedures; but in that case, we may be out of the realm of computational diversions and into the (admittedly nearby) realm of computational obsessions. On the other hand, very simple programs with very interesting behavior seem hard to come by. Or so I thought. Actually, this column describes just such a simple-but-interesting algorithm taken from the book How Nature Works, by the late Per Bak (1996) The book is accessible in style, but highly provocative and challenging in content—a difficult combination to pull off. In the book, Bak, a physicist, focuses his attention on ‘‘self-organized criticality’’: a state toward which some complex systems seem to evolve, and in which the system can be perturbed—sometimes to large and unexpected effect—by small external influences. Bak applies this idea to topics as diverse as earthquakes, mass extinctions, and free-market economies. One of the especially wonderful aspects of How Nature Works is the way in which it weaves surprisingly straightforward computational models into the text: it’s the sort of book that could convince even a computerphobic reader to take up programming, just on a lark. The algorithm that we’ll look at here is arguably the simplest in the book; in fact, Bak describes it as ‘‘probably simpler than any model that anybody had ever [before] written for anything,’’ and he may be right. I can hardly hope to improve on Bak’s prose summary of the model, quoted below:

[1]  Per Bak,et al.  How Nature Works , 1996 .