Шрифт:
Итак, простое правило ветвления выглядит как многообещающий аналог эмбрионального развития. Что ж, превращаем это правило в небольшой компьютерный алгоритм, которому даем название РАЗВИТИЕ, чтобы затем внедрить его в более масштабную программу ЭВОЛЮЦИЯ [2] . При работе над этой большой программой прежде всего следует задуматься о генах.
Рис. 2
Какого рода “гены” могут быть представлены в нашей компьютерной модели? В реальной жизни гены делают две вещи: влияют на индивидуальное развитие и передаются следующим поколениям. У настоящих животных и растений десятки тысяч разных генов, но мы в своей компьютерной имитации скромно ограничимся девятью. Каждый ген из этой девятки будет охарактеризован в компьютере просто неким числом, которое будет называться значением гена. Какой-то отдельно взятый ген может, к примеру, иметь значение 4 или –7.
2
См.: Dawkins, R. (1989) The evolution of evolvability. In C. Langton (ed.) Artificial Life. New York: Addison-Wesley.
Как же эти гены будут влиять на развитие? Ну, они могут делать это множеством разных способов. Главное, чтобы они вносили в алгоритм РАЗВИТИЕ какие-то небольшие изменения количественного характера. Например, один ген мог бы влиять на угол ветвления, а другой — на длину какой-нибудь из веточек. Еще одна возможная задача для генов, которая сразу же приходит в голову, — менять глубину рекурсии, число последовательных ветвлений. Ответственным за этот эффект я назначил ген номер 9. Таким образом, вы можете рассматривать рис. 2 как изображение семи близкородственных организмов, идентичных друг другу во всем, за исключением гена 9. Не буду вдаваться в подробности того, что именно делает каждый из восьми других генов. Представление о том, какого рода воздействия они производят, вы можете получить, изучив рис. 3. В центре расположено исходное дерево — одно из тех, что изображены на рис. 2. Вокруг него располагается еще восемь. Они точно такие же, как и то, которое в центре, но только у каждого из них был изменен — “мутировал” — какой-то из этих восьми генов. Например, картинка справа от центрального дерева показывает нам, что происходит, когда ген 5 мутирует и к его значению прибавляется 1. Будь на странице больше места, я бы расположил вокруг центрального дерева кольцо из 18 мутантов. Почему именно из 18? Потому что у нас есть девять генов, и каждый из них может мутировать в сторону как “повышения” (когда к его значению прибавляется 1), так и “понижения” (когда из его значения вычитается 1). Следовательно, 18 изображений хватило бы для того, чтобы показать всех мутантов, каких можно получить из одного центрального дерева путем единичного преобразования.
Рис. 3
У каждого из этих деревьев имеется своя собственная, уникальная “генетическая формула” — численные значения всех девяти генов. Я не стал выписывать эти генетические формулы здесь, так как сами по себе они ничего вам не скажут. Это же, кстати, справедливо и для настоящих генов. Гены начинают значить что-либо, только когда в ходе белкового синтеза преобразуются в предписания для развивающегося зародыша. То же и в нашей компьютерной модели: численные значения девяти генов обретают смысл, только будучи переведенными в указания по росту древовидного узора.
Но о работе каждого конкретного гена можно получить представление, сравнивая два организма, о которых известно, что они различаются только в этом гене. Сравните, например, исходное дерево в центре рисунка с теми, что расположены по обе стороны от него, и вы получите некоторое представление о том, что делает ген номер 5.
Ровно тем же самым занимаются и генетики в реальной жизни. Обычно генетики не знают, какими путями гены оказывают свое воздействие на эмбрионы. Не знают они и полной генетической формулы каждого животного. Но, сравнив два взрослых организма, различающиеся по одному-единственному гену, они могут увидеть, какое именно действие этот ген оказывает. На самом деле все несколько сложнее, поскольку эффекты генов взаимодействуют друг с другом способами более замысловатыми, чем простое сложение. Но то же самое верно и по отношению к компьютерным деревьям. Еще как верно, и на следующих рисунках мы это увидим.
Вы, вероятно, обратите внимание, что все формы, которые у нас получатся, будут двусторонне-симметричными. Это я установил такое ограничение для подпрограммы РАЗВИТИЕ — отчасти из эстетических соображений, отчасти чтобы уменьшить число необходимых генов (если бы гены не производили одно и то же зеркально отраженное действие на обе стороны вычерчиваемого дерева, нам понадобился бы отдельный набор генов для левой половины и отдельный — для правой), и еще отчасти потому, что надеялся получить картинки, напоминающие животных, а животные в большинстве своем довольно-таки симметричны. По этой же причине отныне я прекращаю называть эти создания “деревьями”, а буду говорить “организмы” или “биоморфы”. Название “биоморфа” придумал Десмонд Моррис — для существ, отдаленно напоминающих животных, с его сюрреалистических полотен. К его картинам я испытываю особенную привязанность, поскольку одна из них была воспроизведена на обложке моей первой книги. Моррис утверждает, что биоморфы “эволюционируют” в его воображении и что их эволюцию можно проследить по его картинам.
Но вернемся к нашим компьютерным биоморфам и к кругу из 18 возможных мутантов, восемь типичных представителей которых изображены на рис. 3. Поскольку каждый из них находится в одном-единственном мутационном шаге от исходной биоморфы, нам будет нетрудно рассматривать их всех как ее детей. Итак, у нас есть своего рода РАЗМНОЖЕНИЕ, которое, точно так же как и РАЗВИТИЕ, будет воплощено в простом компьютерном алгоритме — еще одном готовом “строительном блоке” для нашей большой программы ЭВОЛЮЦИЯ. Про РАЗМНОЖЕНИЕ следует сказать две вещи. Во-первых, никакого секса: размножение бесполое. Поэтому я полагаю, что биоморфы женского пола — ведь животные, размножающиеся без полового процесса (тли, например), почти всегда устроены как самки. Во-вторых, имеется ограничение для мутаций: всегда происходит только одна за раз. Выходит, что дочь отличается от своей родительницы только по одному из девяти генов. Более того, при каждой мутации к значению соответствующего родительского гена может быть добавлено только +1 или –1. Это не более чем произвольные условия, которые могли бы быть и иными без ущерба для биологического правдоподобия.
Нельзя сказать того же о другом свойстве нашей модели, отражающем один из основных принципов биологии. Форма потомка не создается непосредственно из родительской формы. Очертания каждой новой биоморфы определяются значениями ее собственных девяти генов (влияющих на величину углов, протяженность линий и т. п.), и каждый потомок получает свои девять генов от родительской девятки. В реальной жизни происходит ровно то же самое. Следующему поколению передается не тело — передаются гены, и только они. Гены влияют на эмбриональное развитие того тела, в котором находятся. Затем эти же гены либо передаются следующему поколению, либо нет. Участие в индивидуальном развитии организма никак не влияет на природу генов, однако вероятность их дальнейшей передачи может зависеть от успеха того тела, которое они помогали строить. Вот почему необходимо, чтобы в нашей компьютерной модели два этих процесса — РАЗВИТИЕ и РАЗМНОЖЕНИЕ — были отделены друг от друга, как два водонепроницаемых отсека. Перегородка, разделяющая их, абсолютно герметична за исключением того момента, когда РАЗМНОЖЕНИЕ передает РАЗВИТИЮ значения генов, чтобы те влияли на рост новой биоморфы. РАЗВИТИЕ ни в коем случае не передает гены РАЗМНОЖЕНИЮ обратно, иначе это был бы своего рода ламаркизм (см. главу 11).
Итак, мы составили два наших программных модуля, обозначенных как РАЗВИТИЕ и РАЗМНОЖЕНИЕ. РАЗМНОЖЕНИЕ занимается тем, что передает гены из поколения в поколение с определенной вероятностью мутации. В каждом отдельно взятом поколении РАЗВИТИЕ берет предоставленные РАЗМНОЖЕНИЕМ гены и преобразует их в действие по вычерчиванию фигурок, благодаря чему те появляются на экране компьютера. Настало время объединить эти два алгоритма в одну большую программу под названием ЭВОЛЮЦИЯ.
В сущности, ЭВОЛЮЦИЯ — это бесконечно повторяющееся РАЗМНОЖЕНИЕ. В каждом поколении РАЗМНОЖЕНИЕ получает гены от предыдущего поколения и передает их следующему — но с небольшими случайными изменениями, мутациями. Мутация состоит в том, что к значению какого-то случайно выбранного гена прибавляется +1 или –1. Из этого следует, что в ряду сменяющих друг друга поколений генетические отличия от исходного предка мало-помалу накапливаются и становятся очень большими. Но при всей случайности мутаций эти накапливаемые из поколения в поколение изменения не случайны. В любом отдельно взятом поколении биоморфы-потомки отличаются от своей родительницы случайным образом. Но в том, кто именно из этих потомков будет отобран, чтобы дать начало следующему поколению, случайности уже нет. Вот тут-то и начинает действовать дарвиновский отбор. Критерием для него служат не гены сами по себе, а организмы, на форму которых гены оказывают влияние в ходе РАЗВИТИЯ.