ПОЛОНИЙ. Правильно: спинка хорьковая.
ГАМЛЕТ. Или как у кита.
ПОЛОНИЙ. Совершенно как у кита
[1]
.
Не знаю, кто именно первым обратил наше внимание на то, что обезьяна, бессмысленно лупящая по пишущей машинке, смогла бы, имей она достаточно времени, напечатать полное собрание сочинений Шекспира. Ключевая фраза тут, разумеется, “имей она достаточно времени”.
Давайте слегка облегчим задачу нашей обезьяне. Пусть ей надо будет напечатать не полное собрание сочинений, а всего лишь коротенькое предложение Methinks it is like a weasel (“По-моему, оно смахивает на хорька”), и, чтобы облегчить задачу еще больше, мы дадим ей для этого упрощенную клавиатуру, содержащую только 26 букв (заглавных) и клавишу пробела. Сколько же времени на это потребуется?
В выбранном предложении 28 знаков. Давайте будем считать, что обезьяна как бы делает серию дискретных “попыток”, каждая из которых состоит из 28 ударов по клавиатуре. Если она правильно набирает нужную фразу — эксперимент окончен. Если нет — мы даем ей новую “попытку” 28 раз нажать на клавиши. Я не знаком ни с одной обезьяной, но, к счастью, моя 11-месячная дочь представляет собой хорошо зарекомендовавший себя в деле генератор беспорядка, и она с готовностью (даже, может быть, излишней) согласилась взять на себя роль обезьянки-машинистки. Вот что она набрала на компьютере:
UMMK JK CDZZ F ZD DSDSKSM
S SS FMCV PU I DDRGLKDXRRDO
RDTE QDWFDVIOY UDSKZWDCCVYT
H CHVY NMGNBAYTDFCCVD D
RCDFYYYRM N DFSKD LD K WDWK
JJKAUIZMZI UXDKIDISFUMDKUDXI
Однако у нее много дел и без того, так что я был вынужден запрограммировать компьютер так, чтобы он сам имитировал печатающего младенца или обезьяну:
WDLDMNLTDTJBKWIRZREZLMQCO P
Y YVMQKZPGJXWVHGLAWFVCHQYOPY
MWR SWTNUXMLCDLEUBXTQHNZVJQF
FU OVAODVIKDGXDEKYVMOGGS VT
HZQZDSFZIHIVPHZPETPWVOVPMZGF
GEWRGZRPBCTPGQMCKHFDBGW ZCCF
И так далее, и тому подобное. Вычислить, через какое время имеет смысл ожидать, что компьютер (или младенец, или обезьяна) случайно наберет METHINKS IT IS LIKE A WEASEL, нетрудно. Давайте прикинем общее число возможных фраз нужной нам длины, которые обезьяна, или младенец, или компьютер могли бы случайно набрать. Принцип расчета будет тот же самый, что и для гемоглобина, и результат получится таким же огромным. На месте первой буквы может оказаться любая из имеющихся 27 (давайте считать пробел тоже “буквой”). Таким образом, шансы, что обезьяна в качестве первой буквы поставит нужную нам M, составляют 1 из 27. Вероятность того, что правильными окажутся первые две буквы ME, будет равна вероятности правильного попадания на вторую букву E (1 из 27) при условии, что первая буква, M, уже оказалась верной — то есть 1/27 × 1/27 или 1/729. Вероятность получить первое слово, METHINKS, соответствует 1/27 для каждой из восьми составляющих его букв, иначе говоря, 1/27 × 1/27 × 1/27 … и т. д., всего восемь раз, то есть 1/27 в 8-й степени. Вероятность же написать правильно всю фразу из 28 знаков составляет 1/27 в 28-й степени, что означает число 1/27, помноженное само на себя 28 раз. Это очень маленькие шансы, где-то 1 к 10 000 миллионов миллионов миллионов миллионов миллионов миллионов. Ждать нужной фразы придется, мягко выражаясь, очень-очень долго. Что уж говорить о полном собрании сочинений.
Вот и все, на что способен одноступенчатый отбор случайных изменений. А как насчет накапливающего отбора, намного ли он будет эффективнее? Очень намного — возможно, больше, чем мы в состоянии вообразить, хотя если подумать, то это покажется почти что очевидным. Мы снова воспользуемся нашей компьютерной обезьянкой, но внесем в программу одно существенное изменение. Как и в предыдущий раз, компьютер начинает со случайной 28-буквенной последовательности:
WDLDMNLTDTJBKWIRZREZLMQCOP
А затем приступает к “селекции”. Он воспроизводит эту бессмысленную фразу несколько раз подряд, но с определенной вероятностью случайной ошибки — “мутации” — при копировании. Далее компьютер изучает получившиеся бессмысленные фразы — “потомство” исходной — и выбирает среди них ту, которая хоть сколько-нибудь больше других походит на искомое METHINKS IT IS LIKE A WEASEL. В данном случае среди следующего “поколения” победительницей оказалась такая фраза:
WDLTMNLTDTJBSWIRZREZLMQCO P
Не то чтобы явное улучшение! Но алгоритм продолжает выполняться, теперь уже эта фраза “производит” мутантное “потомство”, из которого выбирается новый “победитель”. Десять поколений спустя фраза, оставляемая “на племя”, выглядела так:
MDLDMNLS ITJISWHRZREZ MECS P
А по прошествии 20 поколений она была такой:
MELDINLS IT ISWPRKE Z WECSEL
К этому времени предубежденному взгляду уже начинает мерещиться сходство с нужной фразой. Спустя 30 поколений никаких сомнений не остается:
METHINGS IT ISWLIKE B WECSEL
Сороковое поколение отделяет от цели всего одна буква:
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 секунд до времени, необходимого, чтобы пообедать.