Word Mutagenation: Zachriel's Word Mutation and Evolution Experiment
Zachriel's
Special Pudding Recipe
And it takes less than "zillions of years"!

 

_______________
TRY IT and SEE

"Statistically impossible . . . zillions of years . . . It just won't happen. Try it and see."

Sean Pitman discusses "statistical impossibility".
http://tinyurl.com/373pv

 

___________________________
The PROOF is in the PUDDING

Control Panel from Word MutatorTo test the ability of the Creationist's incredulity to reach accurate conclusions, I created a simple program (in VBA6) that actually tests the assertion that words cannot mutate and evolve according to simple rules into words longer than about seven in length in less than "zillions of years".

The basic algorithm is very simple, with just 30 or so lines coding for Point Mutations, Insert Mutations, Delete Mutations, Snippets, Snip Remainders, and Snip Inserts (recombinations). Here are a few typical results form the Word Mutator, per generation:

 

________________________
The PUDDING in the POND
 
-----
"I"
Mutations and Snippets
Pond = 25
Selection by Length

id, 2
ibid, 4
biking, 6
immixing, 8
flinching, 9
flinchingly, 11
unflinchingly, 13

So, in just seven generations, we have evolved a word with thirteen letters.

-----
"cat" and "dog"
Mutations only
Pond = 50
Selection by Scrabble score

jog, 11
czar, 15
foxy, 17
cozy, 18
boozy, 19
razzed, 25
jazzed, 32

Note how the selection by Scrabble score resulted in some interesting "z"-words.

-----
alphabet ("a" through "z")
Snippets only
Pond = 100
Selection by Length

ax, 2
amok, 4
yokemate, 8
despaired, 9
mainstreamer, 12
mainstreamers, 13
denominationalists, 18

Finding the word, "denominationalists", took about ten minutes to sort through 12 million possible mutants (with a 2.5GHz P4). Note also that even though there are ~29,000,000,000,000,000,000,000,000 (26^18) possible combinations of 18 letters, and only 3786 18-letter words in our dictionary, this did not stop the Word Mutator from finding such an 18-letter word. 

-----
"sean pitman"
Mutations and Snippets
Pond = unlimited (set to empty)
Selection for any word

seaman, 13 words
shaman, 123 words
seminal, 1128 words
bitmapping, 8399 words
fingerprinting, 26000+ words

After over a billion mutants considered, Word Mutation had discovered more than 26000 words, a third of our entire dictionary! 

 

______________________________________
ZACHRIEL's SPECIAL PUDDING RECIPE

It was a subtly beautiful dawn when I finally had to stop the Word Mutagenator. The longest word evolved was "fingerprinting" at 14, but also compound words of length 13, such as "tenderhearted" and "cabinetmakers", as well as Latin conjugates, such as "intermediates" and "nationalities". The highest Scrabble score was "hitchhikers" at 26, in the 99th percentile in our Dictionary (even though selecting for Scrabble score was secondary to length). 

So why doesn't it take 26^14 (10^19) permutations, but only about 10^9—a much, much smaller number? It's simply because we don't have to consider every single possible permutation! Basically, most permutations will never be considered. Control Panel from Word Mutagenator Some perfectly valid words may be entirely out of reach of our evolutionary process. Certainly some strings are unobtainable, such as "qqqq". And yet, even considering only a tiny sliver of the number of possible permutations, we are still able to evolve a third of the dictionary. 

Also note how Malthusian Limitation (of the population) in the previous "alphabet" example resulted in finding the even longer 18-letter word,  "denominationalists"— and in far fewer computations. 

With biological evolution, a similar process is at work. Nature doesn't consider every single mutation, but just makes small changes to what already exists and works—and discards those that are less fit. Interestingly, our word game shows how the complex nature of longer words is a result of their evolutionary history within the game, "rat", "ion", "ration", "nation" or "cabinet", "maker", "cabinetmaker". In the poem "Beware a War of Words" we see how these, and many other words, "rose from simple forms, in meaning, and in kind, step-by-step". 

 

___________________
NOTES for the COOK

Which brings us to Zachriel's Word Mutagenation. This program starts with "seed" words and then evolves longer and longer words, using bit-by-bit mutation, or through recombination. Word Mutagenation is actually two separate programs. 

The first spreadsheet program, Word Mutator, checks every mutation and recombination for each and every generation. This meets the technical challenge presented by our Creationist friend. One advantage of this program is that the results are replicable.

The second spreadsheet program, Word Mutagenator, mutates random words in random ways, sometimes with mutation, sometimes with recombination. This more closely approximates the process of biological evolution. 

In any case, the programs are quite interesting to watch, and clearly demonstrate that the Creationist is not only wrong, but completely, absolutely, utterly wrong. 

 

Word Mutagenation
Word Mutagenation
(Requires VBA6 which is included in Office 2000 and Excel 2000.
Zip format ~2MB. Please extract all files to a folder before running software.)
Certified Virus-Free

©2004 Zachriel

 

______________
INGREDIENTS

Following is the heart of the VBA code. It's really quite simple and only about 30 lines of code for each engine. I hope you enjoy the Word Mutagenator. For myself, I found it quite mesmerizing.

 

'______________
'THE MUTATOR

'for each Word in population


'DELETE MUTATION
For i = 0 To lengthWord - 1
     Mutation = Left(Word, i) & Right(Word, lengthWord - i - 1)
     Call Validate(Mutation)
Next i

'POINT MUTATION
For i = 0 To lengthWord - 1
     For j = 97 To 122 ' from a to z
          Mutation = Left(Word, i) & Chr(j) & Right(Word, lengthWord - i - 1)
          Call Validate(Mutation)
     Next j
Next i

'INSERT MUTATION
For i = 0 To lengthWord
     For j = 97 To 122
          Mutation = Left(Word, i) & Chr(j) & Right(Word, lengthWord - i)
          Call Validate(Mutation)
     Next j
Next i


'SNIP MUTATIONS
'every snippet of every length

For i = 1 To lengthWord
     For j = 1 To lengthWord - i + 1

          'REMAINDERS (Snip deletes)
          Mutation = Left(Word, i - 1) & Right(Word, lengthWord - i - j + 1)
          Call Validate(Mutation)

          'SNIPPETS
          Snippet = Mid(Word, i, j)
          Call Validate(Snippet)

          'RECOMBINATIONS
          'for every point in every word in population
          For p = loPop To hiPop
               Insert = Pop(p)
               lengthInsert = Len(Insert)
               For q = 0 To lengthInsert
                    Mutation = Left(Insert, q) & Snippet & Right(Insert, lengthInsert - q
                    Call Validate(Mutation)
               Next q
          Next p
     Next j
Next i

'(Validate checks if Mutation is in Dictionary and not already in population.)

 

'_______________
'MUTAGENATOR

'for a random Word in population

'Random for Mutation or Recombination
'(reCombine set by form slider)

If Rnd > reCombine / 100 Then 

     'MUTATIONS
     'Random type of Mutation

     c = Random(1, 5)
     Select Case c
          Case 1 'Delete Mutation
               i = Random(0, lengthWord - 1)
               Mutation = Left(Word, i) & Right(Word, lengthWord - i - 1)
          Case 2 'Point Mutation
               i = Random(0, lengthWord - 1)
               j = Random(97, 122)
               Mutation = Left(Word, i) & Chr(j) & Right(Word, lengthWord - i - 1)
          Case 3 'Insert Mutation
               i = Random(0, lengthWord)
               j = Random(97, 122)
               Mutation = Left(Word, i) & Chr(j) & Right(Word, lengthWord - i)
          Case 4 'Remainders
               i = Random(1, lengthWord)
               j = Random(1, lengthWord - i + 1)
               Mutation = Left(Word, i - 1) & Right(Word, lengthWord - i - j + 1)
          Case 5 'Snippets
               i = Random(1, lengthWord)
               j = Random(1, lengthWord - i + 1)
               Mutation = Mid(Word, i, j)
     End Select

Else

     'RECOMBINATIONS

     i = Random(1, lengthWord)
     j = Random(1, lengthWord - i + 1)
     Snippet = Mid(Word, i, j)  'Take a snippet from Word

     p = Random(loPop, hiPop) 'Select another word from existing population
     Insert = Pop(p)
     lengthInsert = Len(Insert)
     q = Random(0, lengthInsert) 'Pick a random point in this subject word
     Mutation = Left(Insert, q) & Snippet & Right(Insert, lengthInsert - q)

End If

call Validate(Mutation)

'(Validate checks if Mutation is in Dictionary and not already in population.)

 

 

Previous Contents Home

 

Word Mutagenation
Word Mutagenation

(Requires VBA6 which is included in Office 2000 and Excel 2000.
Zip format ~2MB. Please extract all files to a folder before running software.)
Certified Virus-Free

©2004 Zachriel

 

Mutagenation
Home
Sea of Beneficence Beware a War of Words A Pond of Doggerel Contact

 

 


Zachriel's Word Mutagenation brought to you by 
Moods in Music - MIDI Music by Lee Croteau
Moods in Music
All music written, performed and copyrighted by Lee Croteau.
All rights reserved. ©1995-2004  

 

Great Place to Shop


Web Presence Provider

Hosted By Crown Mall and Designed by Web King.