“Глубиной” рекурсии называется такое число веточек n-го порядка, которому позволяется вырасти, прежде чем процесс будет остановлен. На рисунке 2 показано, что будет, если задать компьютеру один и тот же алгоритм черчения, но с разными значениями глубины рекурсии. При высоких степенях рекурсии получается довольно запутанный узор, однако, как ясно видно из рис. 2, достигается он за счет того же самого простейшего правила ветвления. Несомненно, это именно то, что происходит и у настоящих деревьев. Система ветвей дуба или яблони выглядит сложной, но в действительности таковой не является. Правило, лежащее в основе процесса ветвления, элементарно. Просто оно снова и снова применяется в каждой растущей верхушке каждой веточки: ветви дают начало ветвям второго порядка, каждая из которых, в свою очередь, ветвям третьего порядка и так далее. Вот почему все дерево становится в итоге большим и ветвистым.

Рекурсивная бифуркация является также хорошей метафорой эмбрионального развития как растений, так и животных. Я не хочу сказать, будто зародыши животных похожи на ветвящиеся деревья. Они на них не похожи. Но любой эмбрион растет благодаря делению клеток. Каждая клетка всегда делится на две дочерние. А гены в конечном счете всегда осуществляют свои воздействия на организм посредством локального влияния на клетки, которые раздваиваются и раздваиваются. Гены животного ни в коем случае не являются грандиозным чертежом, подробным планом строения целого организма. Как мы дальше увидим, они похожи скорее на рецепт, нежели на чертеж, и более того, на рецепт, которому следует не весь развивающийся зародыш, а каждая клетка или каждое небольшое скопление делящихся клеток. Я не отрицаю того, что любой эмбрион, а впоследствии и взрослая особь имеет некое целостное строение. Но возникает это крупномасштабное строение за счет множества мелких локальных воздействий на клеточном уровне, происходящих повсюду в развивающемся организме. И в первую очередь местные воздействия сказываются на удвоении клеток – то есть на некоей разновидности ветвления. Именно регулируя такие локальные события, гены в конечном итоге влияют и на строение взрослого организма.

Итак, простое правило ветвления выглядит как многообещающий аналог эмбрионального развития. Что ж, превращаем это правило в небольшой компьютерный алгоритм, которому даем название РАЗВИТИЕ, чтобы затем внедрить его в более масштабную программу ЭВОЛЮЦИЯ[2]. При работе над этой большой программой прежде всего следует задуматься о генах.


Рис. 2


Какого рода “гены” могут быть представлены в нашей компьютерной модели? В реальной жизни гены делают две вещи: влияют на индивидуальное развитие и передаются следующим поколениям. У настоящих животных и растений десятки тысяч разных генов, но мы в своей компьютерной имитации скромно ограничимся девятью. Каждый ген из этой девятки будет охарактеризован в компьютере просто неким числом, которое будет называться значением гена. Какой-то отдельно взятый ген может, к примеру, иметь значение 4 или –7.

Как же эти гены будут влиять на развитие? Ну, они могут делать это множеством разных способов. Главное, чтобы они вносили в алгоритм РАЗВИТИЕ какие-то небольшие изменения количественного характера. Например, один ген мог бы влиять на угол ветвления, а другой – на длину какой-нибудь из веточек. Еще одна возможная задача для генов, которая сразу же приходит в голову, – менять глубину рекурсии, число последовательных ветвлений. Ответственным за этот эффект я назначил ген номер 9. Таким образом, вы можете рассматривать рис. 2 как изображение семи близкородственных организмов, идентичных друг другу во всем, за исключением гена 9. Не буду вдаваться в подробности того, что именно делает каждый из восьми других генов. Представление о том,