I happened to post an essay today concerning the unacknowledged errors in an essay by Robert Marks and William Dembski. In following up to a reader comment, I was skimming through another essay from the same website containing the one my post was about. Within its pages, I discovered that Dembski and Marks were treating readers to a description of a program Richard Dawkins discussed in his book, “The Blind Watchmaker”. Since the program seeks a target of a string, “METHINKS IT IS LIKE A WEASEL”, it is usually referred to as the “weasel” program. The program is simple enough to describe accurately, but Dembski and Marks botch the job thoroughly.
The accurate way to describe Dawkins’s “weasel” program is this way:
1. Use a set of characters that includes the upper case alphabet and a space.
2. Initialize a population of n 28-character strings with random assignments of characters from our character set.
3. Identify the string or strings closest to the target string in the population.
4. If a string matches the target, terminate.
5. Base a new generation population of size n upon copies of the closest matching string or strings, where each position has a chance of randomly mutating, based upon a set mutation rate.
6. Go to step 3.
Dembski and Marks claim that Dawkins’s “weasel” program smuggles in information of the target by use of partitioned search, by which they mean that every time a particular letter matches in a string, that correct assignment of letter and position are retained in all future generations. This is equivalent to the bad old password login scheme on DEC machines, where one could figure out which characters in a proffered password matched and continue login attempts until all of them matched. However, that is not how Dawkins’s “weasel” program worked, so every statement Dembski and Marks make that is based upon that false premise is utterly meaningless. Just as the Marks and Dembski “ev” critique failed upon easily checkable stuff, one can run Dawkins’s “weasel” and get results similar to those reported by Dawkins; however, running Dembski and Marks’s “weasel” with the partitioned search will return results that are far different from what Dawkins reported.
The “evolutionaryinformatics.org” website lists the paper in question as being “in review”. If it passes under the noses of sleepy reviewers somewhere, I look forward to having a corrective letter published in the same venue.
What makes this all particularly amusing is that Dembski knows that his description of Dawkins’s “weasel” program is erroneous. He knows about this error because I emailed the following text to him:
Information request to William Dembski:
He starts with a target sequence taken from Shakespeares Hamlet, namely, METHINKS IT IS LIKE A WEASEL. If we tried to attain this sequence by pure chance (for example, by randomly shaking out scrabble pieces), the probability of getting it on the first try would be around 1 in 10^40, and correspondingly it would take on average about 10^40 tries to stand a better than even chance of getting it.12 Thus, if we depended on pure chance to attain this target sequence, we would in all likelihood be unsuccessful. As a problem for pure chance, attaining Dawkinss target sequence is an exercise in generating specified complexity, and it becomes clear that pure chance simply is not up to the task.
But consider next Dawkins’ reframing of the problem. In place of pure chance, he considers the following evolutionary algorithm: (1) Start with a randomly selected sequence of 28 capital Roman letters and spaces (thats the length of METHINKS IT IS LIKE A WEASEL); (2) randomly alter all the letters and spaces in the current sequence that do not agree with the target sequence; (3) whenever an alteration happens to match a corresponding letter in the target sequence, leave it and randomly alter only those remaining letters that still differ from the target sequence. In very short order this algorithm converges to Dawkinss target sequence. In The Blind Watchmaker, Dawkins recounts a computer simulation of this algorithm that converges in 43 steps.13 In place of 10^40 tries on average for pure chance to generate the target sequence, it now takes on average only 40 tries to generate it via an evolutionary algorithm.
[End Quote - WA Dembski, "Can Evolutionary Algorithms Generate Specified Complexity", "Nature of Nature" conference, Baylor University]
There are several issues that this text brings up. Of the three steps listed as comprising Dawkins’ algorithm, only step (1) has anything like it in the pages of “The Blind Watchmaker”. Steps (2) and (3) appear to be inventions rather than descriptions. What is the basis for claiming that steps (2) and (3) represent Dawkins’ “weasel” algorithm?
Further on, the issue of “tries” it takes to find a solution is raised. For “pure chance”, a figure of ~10^40 “tries” is given, which would correspond to individual candidate solutions tested. For “weasel”, though, only ~40 “tries” are given, but in this case the number 40 derives from the number of generations taken by the “weasel” algorithm rather than the number of candidate solutions examined. It seems to me that for the purpose of comparison, a “try” ought to mean the same thing for both approaches. I would like to see a restatement of the section concerning “tries” that takes this into account.
I even corresponded with Dawkins to make sure that there were no editions or versions of “The Blind Watchmaker” that incorporated anything arguably like Dembski’s inventions.
One may be wondering about the title I chose for this little essay. Well, the traditional anniversary gift lists says that copper and wool are the materials for a seventh-year anniversary. And my email to Dembski was sent:
Date: Mon, 9 Oct 2000 11:38:11 -0500 (CDT)
From: “Wesley R. Elsberry”
Subject: Information request re: Dawkins’ “weasel” algorithm
Cc: email@example.com, welsberr
<= get_option(\'vc_tag\') ?>> = get_option(\'vc_text_before\') ?> 7054 = get_option(\'vc_human_count_text_many\') ?> = get_option(\'vc_preposition\') ?> 2613 = get_option(\'vc_human_viewers_text_many\') ?> = get_option(\'vc_tag\') ?>>