Алекс Беллос - Красота в квадрате
Безусловно, компьютер, построенный Полом в игре «Жизнь», был неприменим на практике для выполнения всех этих задач. Но он вернул «Жизнь» к ее истокам. Джон фон Нейман выдвинул идею клеточного автомата во время изучения процесса самовоспроизведения. Конфигурация Пола открыла заманчивую возможность создания самовоспроизводящихся сущностей в игре «Жизнь».
На первый взгляд фигуры, эволюционирующие на решетке игры «Жизнь», кажутся живыми, так как по мере смены поколений они трансформируются и меняют направление. Однако для того, чтобы некий объект действительно был живым, он должен обладать способностью к самовоспроизведению. Но что это такое? Глайдер, например, воспроизводит себя достаточно просто. Это состоящая из пяти клеток фигура, которая каждые четыре поколения возвращается в исходную форму, сместившись на одну клетку вниз и одну в сторону. Фон Нейман хотел знать, как машина может построить точную копию самой себя. Для того чтобы это понять, ему предстояло решить математическую головоломку, поскольку механическая сторона процесса самовоспроизведения содержит один логический парадокс.
Мы с вами уже говорили о том, что компьютеры состоят из аппаратного и программного обеспечения. Давайте назовем аппаратное обеспечение «конструктором», а программу, которую мы вводим в конструктор, чтобы он построил копию себя, — «макетом». Мы рассчитываем на то, что после ввода макета конструктор воспроизведет новый конструктор вместе с новым макетом, по сути, создав копии двух исходных элементов. Но здесь возникает вопрос: содержит ли макет инструкции относительно создания нового макета? Если да, тогда они должны также содержать инструкции по поводу создания нового макета, который, в свою очередь, должен содержать инструкции по поводу того, как создать инструкции в отношении построения нового макета — и так далее до бесконечности. В итоге мы получаем бесконечную регрессию инструкций, содержащихся в данном макете, что недопустимо, поскольку макет должен быть конечным. С другой стороны, если макет не включает никакую информацию о себе, машина не сможет себя полностью воссоздать, поскольку в новой машине нет макета. Прежде чем думать о технической стороне дела, фон Нейману следовало разобраться с математикой.
В итоге фон Нейман пришел к такому выводу: для того чтобы машина могла воспроизвести себя, необходимо ввести в систему новый элемент, который бы воссоздавал макет, другими словами — устройство для копирования макета. Таким образом, когда конструктор считывает макет, он строит новую машину, совершенную во всех отношениях, кроме одного — в ней нет макета. На последнем этапе устройство копирования должно создать копию макета и отправить ее в новую машину. Следовательно, самовоспроизводящаяся машина фон Неймана использует макет двумя разными способами: конструктор читает его как набор инструкций, а копировальное устройство создает его копию. Только применение макета один раз в качестве программы, а другой — в качестве объекта позволило решить чрезвычайно трудную проблему бесконечной регрессии.
Конфигурация, созданная фон Нейманом для своего первого клеточного автомата, состояла из конструктора, устройства копирования и макета. Теоретически он показал, что она способна к самовоспроизведению, но не продемонстрировал этого на практике, поскольку компьютеры тогда еще не были достаточно мощными для этого. Тем не менее работа фон Неймана оказала заметное влияние на целое поколение специалистов в области вычислительных машин и систем, философов и даже биологов, которые изучали в 1950-х годах механизм репродукции живых клеток. Когда на протяжении этого и следующего десятилетия им все же удалось раскрыть специфику данного механизма, они обнаружили, что фон Нейман прав! В свое время он создал абсолютно точную модель самовоспроизведения живых организмов. В каждой клетке есть макет (ее ДНК), содержащий закодированные инструкции по репродукции новых клеток. Однако в ДНК нет описания самой ДНК — та ДНК, которая появляется в новой клетке, представляет собой результат копирования (двойная спираль ДНК делится на две части, а ферменты создают две точные копии исходной ДНК). Подобно тому как машина фон Неймана прочитывает макет двумя способами, ДНК также ведет себя по-разному в процессе воспроизводства живой клетки.
Пол Чэпмен попытался построить самовоспроизводящуюся конфигурацию клеток, но не смог найти способ копирования макета. И вот в 2010 году канадский программист Эндрю Уэйд объявил о создании космического корабля «Джемини». «Когда я впервые увидел его, я пришел в восторг! — воскликнул Пол. — “Джемини” — это самая важная фигура за все сорок лет. И никто даже не знал, кто такой Эндрю Уэйд! Он просто написал об этом на доске объявлений!»
«Джемини» — первая самовоспроизводящаяся конфигурация в игре «Жизнь». Как показано на рисунке ниже, эта фигура имеет форму очень длинной и тонкой гантели, на концах которой находятся идентичные конструкторы (отсюда название «Джемини» — «близнецы»), а между ними на решетке размером 4 миллиона × 4 миллиона клеток расположен макет, состоящий из глайдеров. Оригинальная идея Уэйда заключалась в том, чтобы вместо создания копий макета обеспечить его быстрое перемещение между двумя конструкторами. Когда макет достигает одного из конструкторов, он дает ему указание построить свою новую версию на 5120 клеток вверх и 1024 клетки в сторону и одновременно уничтожить себя. После этого макет отправляется в обратном направлении, где через миллионы клеток достигает противоположного конструктора и тоже дает ему указание построить свою новую версию на 5120 клеток вверх и 1024 клетки в сторону, а затем саморазрушиться. Этот цикл, после которого вся конфигурация смещается на 5120 клеток вверх и 1024 клетки в сторону, повторяется каждые 33,7 миллиона поколений. Поскольку конфигурация «Джемини» двигается, ее считают космическим кораблем, но она двигается не посредством кувырков, как это делает глайдер, а с помощью процесса самовоспроизведения. «Самое блестящее, что сделал Эндрю Уэйд, — сказал Пол, — это устранил этап создания копии [макета] и сделал так, что [макет] просто появляется как гром среди ясного неба, причем в самый подходящий момент для того, чтобы дать инструкции».
«Джемини» — это первый космический корабль, движение которого основано на самовоспроизведении
С «Джемини» связано еще одно важное достижение: это первый космический корабль, который перемещается наискось, то есть не в горизонтальном и не в вертикальном направлении и не под углом 45 градусов к сетке.
Пол показал мне лист бумаги с изображением одного из конструкторов «Джемини». Он с гордостью упомянул о том, что в его основу положен компьютер, созданный им в игре «Жизнь». Изображение конструктора напоминало кляксу, состоящую из группы серых шевронов в окружении крохотных точек. Я спросил Пола, есть ли у него изображение всего корабля «Джемини». Он ответил, что в этом нет смысла, поскольку в таком масштабе эта фигура была бы настолько разреженной, что оказалась бы практически невидимой. Почти вся конфигурация представляет собой поток глайдеров. Как ни странно, макет занимает намного больше места, чем конструктор. В клеточном автомате фон Неймана тоже присутствовал подобный дисбаланс: его конструктор помещается в сетку 97 × 170, тогда как макет имеет длину 145 315 клеток. Крупные конфигурации состоят в основном из пустого пространства. «Возможно, в игре “Жизнь” так много пустого пространства по той же причине, почему его так много в нашем мире, — пояснил Пол. — У атомов должно быть достаточно места для того, чтобы они выполняли свою работу».
Появление «Джемини» усилило ожидания в отношении следующего этапа исследования игры «Жизнь» [8]. Если исходная конфигурация порождает копии, в которых есть небольшие отличия от оригинала, это может обусловить дарвиновский естественный отбор. В 1982 году Джон Конвей выдвинул предположение о том, что если бы решетка игры «Жизнь» была достаточно большой и в исходном состоянии клетки располагались на ней в случайном порядке, то «через приличный промежуток времени появились бы разумные существа, способные к воспроизводству». Три десятилетия спустя эта гипотеза Конвея по-прежнему будоражит кровь любителям игры «Жизнь». Самую интересную работу выполняет Ник Готтс, специалист по комплексным системам из Абердина (Шотландия), который ищет новые конфигурации, заполняя сетку игры «Жизнь» живыми клетками в произвольном порядке. Он называет свой проект «рассеянной Жизнью», поскольку относительная доля живых клеток должна быть довольно низкой по сравнению с количеством мертвых клеток, иначе это приведет к слишком большому числу неконтролируемых взаимодействий. «В некоторых конфигурациях присутствует нечто, напоминающее естественный отбор, — объясняет Ник. — Есть конфигурации, регулирующие появление других конфигураций аналогичного типа. Я убежден, что, если бы моя программа выполнялась достаточно долго, вступил бы в действие закон естественного отбора».