[126]; если бы в вычисления случайно вкралась ошибка округления, одна и та же величина аппроксимации сохранялась бы вечно. Но добавьте в систему Солнце, и она станет нелинейной. Дело в том, что Земля влияет на Луну, а это значит, что Земля влияет и на то, как Луна влияет на Солнце, а это, в свою очередь, означает, что Земля влияет на то, как Луна влияет на то, как Солнце влияет на Землю… И не забывайте о цепочке влияний в другом направлении, Земля – Солнце – Луна. Взаимодействие трех переменных исключает возможность линейного прогнозирования. Как только вы вступаете в область взаимодействия трех и более переменных – сегодня она известна как задача трех тел, – будущее немедленно и неизбежно становится непредсказуемым.
Когда мы имеем дело с нелинейной системой, следствием мельчайших отклонений в начальном состоянии может стать огромное, и даже экспоненциальное[127], расхождение конечных состояний; сегодня этот феномен называют «чувствительность к начальным условиям». Лоренц заметил, что непредсказуемость, вместо того чтобы навсегда устремляться в экспоненциальную стратосферу, иногда бывает ограниченной, связанной и «диссипативной». Другими словами, значения функции беспорядочно колеблются вокруг расчетных и все время оказываются то чуть больше, то чуть меньше спрогнозированной величины, причем величина отклонения всегда разная. Как будто каждое полученное значение притягивается к предсказанному, но недостаточно сильно, чтобы и в самом деле его достичь. Очень странно. Потому-то Лоренц и назвал наблюдаемые феномены странными аттракторами[128]{163}.
Итак, крошечные отклонения в начальных условиях способны непредсказуемо усиливаться со временем. Лоренц обобщил эту идею метафорой о чайках. Друг предложил ему другую, получше, и в 1972 г. она станет названием доклада Лоренца, а позже – еще одной священной реликвией этой области знаний (см. на следующей странице).
Так на свет появилась выразительная аллегория теории хаоса и связанной с ней научной революции – эффект бабочки[129]{164}.
Давайте посмотрим, как хаотичность и чувствительность к начальным условиям выглядят на практике. Здесь нам пригодится модель системы, такая классная и забавная, что я на миг размечтался научиться программировать, чтобы мне было проще с ней играть.
Начнем с сетки, изображенной на листке бумаги в клеточку, где первый ряд клеток – это наше начальное состояние. Если точнее, каждая из клеток в ряду может принимать одно из двух значений – быть или пустой, или заполненной (или, на языке двоичного кода, нулем или единицей). Для этого ряда существует 16 384 возможных комбинации[130]; мы случайным образом выбрали такую:
Теперь давайте сгенерируем второй ряд клеток, каждая из которых тоже будет пустой или заполненной, а конфигурация второго ряда будет детерминирована[131] конфигурацией первого. Для этого нам потребуется какое-нибудь правило. Вот, например, самый скучный из возможных вариантов: клетка второго ряда, расположенная под заполненной, тоже будет заполненной, а клетка под пустой клеткой тоже будет пустой. Применяя это правило снова и снова, используя второй ряд как основу для третьего, а третий – как основу для четвертого и так далее, мы получим ряд тоскливых колонок. Можно ввести противоположное правило: клетка под заполненной остается пустой; под пустой клеткой, соответственно, будет тогда заполненная. Результат тоже ничем не примечателен: какие-то кривобокие шашечки.
Смысл вот в чем: если вам известно начальное состояние (например, конфигурация первого ряда), то, применяя одно из этих правил, вы сможете точно предсказать, как будет выглядеть любой последующий ряд. Перед нами знакомая линейная вселенная.
А теперь вернемся к первому ряду:
И введем новое правило: состояние клетки второго ряда (пустая она или заполненная) определяется состоянием трех клеток первого ряда: клетки непосредственно над ней и тех двух, что соседствуют с задающей клеткой в первом ряду.
Вот случайное правило, согласно которому три соседние клетки первого ряда задают состояние клетки во втором ряду: клетка второго ряда заполненная, если заполнена одна и только одна из тех трех, что расположены в предыдущем ряду над ней. Иначе клетка второго ряда остается пустой.
Давайте начнем со второй клетки второго ряда. Вот как выглядит тройка клеток непосредственно над ней (то есть три первые клетки первого ряда):
Одна из трех клеток заполненная, а это означает, что интересующая нас клетка второго ряда тоже будет заполненной:
Посмотрим на следующие три клетки первого ряда (то есть клетки 2, 3 и 4). Заполненная только одна из них, соответственно, третья клетка во втором ряду тоже будет заполненной:
В первом ряду, в тройке клеток 3, 4 и 5, две клетки (4 и 5) заполненные, поэтому следующая клетка второго ряда остается пустой. И так далее. Правило, которого мы придерживаемся (заполняй клетку нижнего ряда только в том случае, если заполнена одна и только одна из тройки клеток над ней), графически можно изобразить следующим образом:
Существует восемь возможных комбинаций троек (два возможных состояния первой клетки умножить на два состояния второй клетки и умножить на два состояния третьей клетки), и только четвертая, шестая и седьмая комбинации дают нам заполненную клетку во втором ряду.
Вернемся к нашему начальному состоянию. Применяя выбранное правило, мы получаем второй ряд вот такого вида:
Но подождите – а как быть с первой и последней клетками второго ряда, ведь у клетки над ними только по одной соседке? Это не было бы проблемой, если бы первый ряд длился в обе стороны до бесконечности, но нам такая роскошь недоступна. Как быть? Будем решать по имеющимся двум клеткам верхнего ряда: если одна из них заполнена, заполняем и интересующую нас клетку во втором ряду; если обе заполненные или обе пустые, мы оставляем ее пустой. Итак, с этим расширением правила второй ряд выглядит следующим образом:
Теперь применим то же самое правило, чтобы сгенерировать третий ряд:
Если вам больше нечем заняться, продолжайте в том же духе.
Теперь давайте применим наше правило к другому начальному состоянию:
Первые два ряда будут выглядеть так:
Заполните рядов этак 250 – и получите вот такую картинку:
Возьмите другое случайное начальное состояние, с рядами подлиннее, применяйте то же самое правило снова и снова – и получите что-то такое:
Ничего себе.
А теперь попробуйте такое начальное состояние:
И уже ко второму ряду получите вот что:
Ровным счетом ничего. В случае этого конкретного начального состояния весь второй ряд целиком состоит только из пустых клеток, и, соответственно, все последующие ряды тоже. Паттерн первого ряда угас.
Давайте попробуем описать наши новые знания метафорически, отказавшись от терминов ввод, вывод и алгоритм. Некоторые начальные состояния и законы воспроизводства, согласно которым на свет появляются следующие поколения, способны эволюционировать в весьма интересные зрелые состояния, зато какие-нибудь другие могут и вымереть, как в последнем примере.
К чему эта биологическая метафора? Дело в том, что мир генерации паттернов, подобный этому, существует и в живой природе (см. рис. ниже).
Мы только что познакомились с примером клеточного автомата, в котором вы начинаете с ряда клеток – пустых либо заполненных, – применяете правило воспроизводства и повторяете процесс[132]{165}.
Слева – настоящая ракушка, справа – паттерн, созданный компьютером
Правило, которому мы с вами следовали (если и только если одна клетка из тройки вышележащих клеток заполнена), в мире клеточных автоматов называется правило 22; всего их 256[133]. Не все из них порождают что-нибудь интересное – в зависимости от начального состояния одни дают паттерны, которые инертно и безжизненно повторяются до бесконечности, а другие угасают уже ко второму ряду. Очень немногие порождают сложные динамические паттерны. Правило 22 – самое популярное из этих немногих. Ученые на его хаотичности строят свои научные карьеры.
Что хаотичного в правиле 22? Мы видели, что, в зависимости от начального состояния, применяя правило 22, можно получить один из трех зрелых паттернов: (а) ничего, потому что паттерн угас; (б) кристаллизованный, скучный, неорганический периодический паттерн; (в) паттерн, который растет, ветвится и меняется, а структурированные зоны уступают место чему-то явно динамического, органического характера. И, что самое главное, не существует способа взять какое-нибудь непериодическое начальное состояние и предсказать, каким будет его сотый, тысячный или любой другой ряд. Чтобы выяснить это, придется пройтись по всем промежуточным рядам и их смоделировать. Невозможно предсказать, угаснет ли зрелая форма какого-нибудь начального состояния, будет ли она кристаллической или динамической, а если будет, то как она будет выглядеть; выдающиеся математики пытались и потерпели неудачу. Это ограничение, как ни парадоксально, распространяется и на то, что вы не можете доказать, что где-то за пару шажочков до бесконечности хаотическая непредсказуемость не выродится внезапно в аккуратный повторяющийся паттерн. Перед нами один из вариантов проблемы трех тел, взаимодействие которых и не линейно, и не аддитивно. Вы не можете прибегнуть к редуктивному подходу, разобрать правило на составные части (восемь разных вариантов троек и их следствия) и предсказать, что получится. Эта система не подх