H CHVY NMGNBAYTDFCCVD D
RCDFYYYRM N DFSKD LD K WDWK
JJKAUIZMZI UXDKIDISFUMDKUDXI
Поскольку у дочери есть другие важные дела, то роль такой машинистки я поручил компьютерной программе, имитирующей беспорядочно печатающего младенца или обезьяну:
WDLDMNLTDTJBKWIRZREZLMQCO P
Y YVMQKZPGJXWVHGLAWFVCHQYOPY
MWR SWTNUXMLCDLEUBXTQHNZVJQF
FU OVAODVYKDGXDEKYVMOGGS VT
HZQZDSFZIHIVPHZPETPWVOVPMZGF
GEWRGZRPBCTPGQMCKHFDBGW ZCCF
И так далее в том же духе. Несложно подсчитать, как долго нам придётся ждать, пока генератор случайных символов (младенец или обезьяна) напечатают «METHINKS IT IS LIKE A WEASEL». Оценим общее количества возможных фраз заданной длины, которые обезьяна, младенец или генератор случайных символов могли бы напечатать. Вычисления будут теми же самыми, какие мы делали для гемоглобина, и приведут к аналогично большому результат. На первой позиции этой строки возможно 27 возможных символов (включая символ пробела). Шанс, что обезьяна, напечатает букву «M» прямо следует из количества символов — 1 из 27. Шанс, что вторая буква будет «E» аналогичен шансу, что первая буква будет «M», а шанс, что первые две буквы будут «ME» равен их произведению 1/27 x 1/27, что даст 1/729. Шанс на то, что первое слово будет «METHINKS» — это шанс на появление каждой буквы на своём месте — 1/27 для каждой, итого (1/27) x (1/27) x (1/27) x (1/27) … и так далее 8 раз, то есть (1/27) в степени 8. Шанс на получение всей этой фразы из 28 символов, есть (1/27) в степени 28, то есть (1/27) умножимое само на себя 28 раз. Это очень маленький шанс, примерно 1 из 10000 миллионов миллионов миллионов миллионов миллионов миллионов. Искомую фразу, таким образом придётся ждать, мягко говоря, долго, не говоря уж о всех произведениях Шекспира.
Так долго получается в случае одноразового отбора случайной вариации. Теперь рассмотрим нарастающий отбор — насколько он будет эффективнее? Очень и очень намного! Гораздо эффективнее, чем мы, возможно, себе представляем в первый момент, хотя это почти очевидно, если мы подумаем над этим чуть более. Мы снова используем нашу компьютерную обезьяну, но внесём критическое изменение в программу. Она, как и раньше, снова начинает, выбирая случайную последовательность из 28 букв:
WDLMNLT DTJBKWIRZREZLMQCO P
Однако теперь она «размножает» эту случайную фразу. Она реплицирует её неоднократно, но с некоторой вероятностью случайной ошибки — «мутации» при копировании. Компьютер исследует мутировавшую бессмысленную фразу, «потомка» первоначальной, и выбирает ту, которая более всего (хотя бы чуть-чуть) походит на нашу искомую фразу, «METHINKS IT IS LIKE A WEASEL». В данном случае, в следующем поколении победила такая фраза:
WDLTMNLT DTJBSWIRZREZLMQCO P
Улучшение неочевидное! Но процедура повторилась, и снова мутировавший «потомок» «вывелся» от последней фразы, и отобран новый «победитель». И так поколение за поколением. После 10 поколений, фраза, выбранная на роль «производителя» была такой:
MDLDMNLS ITJISWHRZREZ MECS P
А вот что было после 20 поколений:
MELDINLS IT ISWPRKE Z WECSEL
А вот здесь глаз уже не может на заметить некоторого подобия искомой фразе. В 30-м поколении в подобии можно уже не сомневаться:
METHINGS IT ISWLIKE B WECSEL
На 40-м поколении — мы в одной букве от цели:
METHINKS IT IS LIKE I WEASEL
И вот цель наконец достигнута в 43-м поколении.
Второй прогон компьютер начал с фразы:
Y YVMQKZPFJXWVHGLAWFVCHQXYOPY
Результаты прогона были таковы (снова приводится только каждое десятое поколение):
Y YVMQKSPFTXWSHLIKEFV HQYSPY
YETHINKSPITXISHLIKEFA WQYSEY
METHINKS IT ISSLIKE A WEFSEY
METHINKS IT ISBLIKE A WEASES
METHINKS IT ISJLIKE A WEASEO
METHINKS IT IS LIKE A WEASEP
И конечная цель достигнута в поколении 64. Третий прогон компьютер начал с фразы:
GEWRGZRPBCTPGQMCKHFDBGW ZCCF
И достиг «METHINKS IT IS LIKE A WEASEL» в 41-м поколении селективного «размножения».
Точное время, затраченное компьютером на достижение цели, значения не имеет. Но если вы настаиваете, то он закончил весь первый прогон за время, пока я завтракал — то есть, примерно полчаса. (Энтузиасты-компьютерщики могут счесть, что это неправдоподобно долго. Но дело в том, что программа была написана на БЕЙСИКЕ — это язык программирования для младенцев. Когда я переписал её на Паскале, то она стала выполняться за 11 секунд). Компьютеры в этих делах несколько быстрее обезьян, но разница действительно не имеет значения. Значение имеет разница между временем нарастающей селекции и временем, потребным тому же самому компьютеру, работающему с той же скоростью, на достижение целевой фразы, если мы заставим его использовать другую процедуру — процедуру одноразового отбора: это примерно миллион миллионов миллионов миллионов миллионов лет. Это в миллион миллионов миллионов раз больше времени существования Вселенной. Фактически разумнее говорить, что в сравнении с временем, потребным, неважно кому — хоть обезьяне, хоть компьютерному генератору случайных символов, для генерации нашей целевой фразы, возраст Вселенной — столь ничтожная величина, что на практике утонет в погрешностях данного рода вычислений. В то же время, компьютерному генератору случайных символов, но работающему по алгоритму нарастающего выбора, для выполнения той же самой задачи потребуется совершенно обозримое время — от 11 секунд до длительности спокойного завтрака.
Различие между нарастающим отбором (при котором каждое улучшение, пусть небольшое,