Back in the days of the Apple II, biologist Richard Dawkins wrote a small Basic program, called Weasel, that demonstrated how the random mutation and selection in evolution could generate information. The program used “critters” whose DNA were strings of characters. The program is “dirt simple” but succeeds in achieving its goal after only fifty cycles of generations. The goal is for the random mutation and selection process to end up with the given target string. Dawkin’s choice of strings was a line from Hamlet, “Methinks it is like a weasel.” I wrote a version in Typescript so I could embed it in a blog article.
In the following demonstration, simply hit Reset and then Run and watch the program converge on the target string. (Sorry, it only works in recent versions of Chrome. I will update it when I fix the IE and Edge problems).
Some Intelligent Design proponents criticized the value of Dawkins’ Weasel program on a number of points that were readily answered by Dawkins and others. However, one such criticism is worth discussion and that is that the program itself already contains the information that is supposedly created by the process. Although the program is carefully written so that the random mutation process does not have access to that information (only the selection process does), the drama of the program is somewhat undermined for those who don’t appreciate the significance of that.
Recently, I set out to write a new Weasel program that generates what the ID community would call Complex Specified Information (which they insist is a signature of something produced by an intelligence) where the information is not present in the program itself. I call the program Steiner Weasels, because the program ends up generating Steiner Trees between a set of given points using generations of weasels that are randomly mutated and selected based on criteria that is much simpler than a Steiner Tree.
In the following demonstration, hit Reset, then Run and watch the weasels create Steiner Trees whose specification is not contained in the program. Let it run for about 150 generations. Reset and Run it a few times to see how it deals with different layouts. Also, feel free to hit Earthquake a few times while it is running to see how it scrambles to adapt to new layouts.
If you would like to know more about Steiner Weasels, I invite you to read an in depth explanation in Shakespeare, Evolution, and Weasels.