Чтение онлайн

ЖАНРЫ

Структура реальности
Шрифт:

Таким образом, факт существования сложных организмов и непрерывного ряда постепенно совершенствующихся изобретений и научных теорий (таких как механика Галилея, механика Ньютона, механика Эйнштейна, квантовая механика) говорит кое-что еще о том, какого рода универсальность вычислений существует в реальности. Он говорит нам, что действительные законы физики, по крайней мере, до сих пор, поддаются последовательной аппроксимации с помощью теорий, дающих все лучшие объяснения и предсказания, и что задача открытия каждой теории при наличии предыдущей является вычислительно разрешимой на базе ранее открытых законов и ранее созданных технологий. Структура реальности должна быть (и была) многоуровневой для легкого доступа к самой себе. Подобным образом, если рассматривать саму эволюцию как вычисление, этот факт говорит нам, что существовало достаточно много жизнеспособных организмов, закодированных с помощью ДНК, что позволило организмам с более высокой степенью адаптации быть вычисленными (т. е. проэволюционировать), используя ресурсы, предоставленные их предками с меньшей степенью адаптации. Таким образом, мы можем сделать вывод, что законы физики не только предписывают свою собственную постижимость через принцип Тьюринга, но и гарантируют, что соответствующие эволюционные процессы,

такие как жизнь и мышление, не являются слишком затратными по времени и требуют не слишком много ресурсов иного рода, чтобы произойти в реальности.

Итак, законы физики не только позволяют (или, как я обосновал, требуют) существование жизни и мышления, но требуют от них эффективности, в некотором определенном смысле. Для выражения этого чрезвычайно важного свойства реальности современный анализ универсальности обычно исходит из возможности существования компьютеров, универсальных даже в более строгом смысле, чем того требует сам принцип Тьюринга: универсальные генераторы виртуальной реальности не только возможны, но их можно построить так, что они не потребуют непрактично больших ресурсов для воспроизведения простых аспектов реальности. В дальнейшем, говоря об универсальности, я буду иметь в виду именно такую универсальность, если не сказано иного.

Насколько эффективно можно воспроизвести те или иные аспекты реальности? Другими словами, какие вычисления можно практически выполнить за данное время и при данных возможностях? Это основной вопрос теории вычислительной сложности, которая, как я уже сказал, занимается изучением ресурсов, необходимых для решения вычислительных задач. Теория сложности еще не объединена в достаточной степени с физикой, чтобы дать многие ответы в количественном виде. Однако она достигла немалого успеха в важном деле грубого различия вычислительных задач на легко- и труднорешаемые. Общий подход лучше всего проиллюстрировать на примере. Рассмотрим задачу умножения двух достаточно больших чисел, скажем, 4 220 851 и 2 594 209. Многие из нас помнят тот метод умножения, которому мы научились в детстве. Он включает умножение каждой цифры одного числа поочередно на каждую цифру другого, сдвиг промежуточных результатов и их сложение. Этот стандартный алгоритм позволяет получить окончательный ответ, в данном случае – 10 949 769 651 859. Вероятно, многие не захотят признать, что эта утомительная процедура делает умножение «легкой» задачей хоть в каком-то обыденном смысле этого слова. (В действительности существуют более эффективные методы умножения больших чисел, но этот весьма нагляден.) Однако с точки зрения теории сложности, которая имеет дело с трудными задачами, решаемыми компьютерами, не подверженными скуке и почти никогда не ошибающимися, этот метод определенно попадает в категорию «легких».

В соответствии со стандартным определением для «легкости» решения задачи важно не фактическое время, затрачиваемое на умножение конкретной пары чисел, а тот факт, что при применении того же самого метода даже к большим числам время увеличивается не слишком резко. Возможно, это покажется неожиданным, но такой очень косвенный метод определения «легкости» очень хорошо работает на практике для многих (хотя и не всех) важных классов вычислительных задач. В случае умножения, например, нетрудно убедиться, что стандартный метод можно использовать и для умножения чисел, скажем, в десять раз больших, приложив совсем незначительные дополнительные усилия. Ради иллюстрации предположим, что каждое элементарное умножение одной цифры на другую занимает у некоторого компьютера одну микросекунду (включая время, необходимое для сложения, сдвига и других операций, сопровождающих каждое элементарное умножение). При умножении семизначных чисел 4 220 851 и 2 594 209 каждую из семи цифр первого числа нужно умножить на каждую из семи цифр второго числа. Таким образом, общее время, необходимое для умножения (если операции выполняются последовательно), составит семью семь, или 49 микросекунд. Если на вход поданы числа примерно в десять раз большие, то есть содержащие по восемь цифр, на их умножения потребуется 64 микросекунды: увеличение составляет всего 31 %.

Ясно, что числа из огромного диапазона – безусловно содержащего любые числа, которые когда-либо были измерены как количественные значения физических переменных, – можно перемножить за крошечную долю секунды. Таким образом, умножение действительно является легкорешаемой задачей для любых целей в пределах физики (или, по крайней мере, в пределах существующей физики). За пределами физики, конечно, могут появиться практические причины для умножения куда больших чисел. Например, для криптографии огромный интерес представляют произведения простых чисел, состоящих примерно из 125 цифр. Наша гипотетическая машина могла бы перемножить два таких простых числа, получив произведение, состоящее из 250 цифр, примерно за 0,01 секунды. За одну секунду она могла бы перемножить два тысячезначных числа, и современные компьютеры легко могут улучшить это достижение. Лишь немногие исследователи эзотерических областей чистой математики интересуются перемножением столь непостижимо больших чисел, однако мы видим, что даже у них нет причины считать умножение неразрешимой задачей.

Напротив, разложение на множители – по сути, процесс, обратный умножению, – кажется гораздо сложнее. Вначале вводится одно число, скажем, 10 949 769 651 859. Задача заключается в том, чтобы найти два его множителя – меньших числа, произведение которых равно 10 949 769 651 859. Поскольку мы только что перемножили эти числа, мы знаем, что в данном случае ответ будет 4 220 851 и 2 594 209 (и поскольку оба эти числа простые, это единственный подходящий ответ). Но не располагая заранее такой подсказкой, как бы мы нашли эти множители? Если в поисках простого метода вы обратитесь к детским воспоминаниям, то это будет бесполезно, поскольку такого метода не существует.

Самый очевидный метод разложения на множители – делить вводимое число на все возможные множители, начиная с 2 и продолжая каждым нечетным числом, до тех пор, пока введенное число не разделится без остатка. По крайней мере, один из множителей (с учетом того, что введенное число не является простым) не может быть больше квадратного корня введенного числа, и это позволяет оценить, сколько времени может потребовать данный метод. В рассматриваемом случае наш компьютер найдет меньший из двух множителей, 2 594 209, примерно за секунду с небольшим. Однако если исходное число будет в десять раз больше, а его квадратный корень примерно в три раза больше, то разложение его на множители по этому методу займет в три раза больше времени. Другими словами, увеличение вводимого числа на один разряд уже утроит время обработки. Увеличение его еще на

один разряд снова утроит это время и т. д. Таким образом, время обработки будет увеличиваться в геометрической прогрессии, т. е. экспоненциально, с увеличением количества разрядов в раскладываемом на множители числе. Разложение на множители числа с 25-значными множителями по этому методу заняло бы все компьютеры на Земле на несколько веков.

Этот метод можно усовершенствовать, однако всем современным методам разложения числа на множители присуще это свойство экспоненциального роста. Самое большое число, которое было «в гневе» (а это было действительно так) разложено на множители, – число, сомножители которого тайно выбрали одни математики, чтобы бросить вызов другим математикам, – имело 129 цифр [38] . Разложение на множители выполнили с помощью сети Интернет глобальными совместными усилиями, в которых были задействованы тысячи компьютеров. Знаменитый специалист по алгоритмам Дональд Кнут [39] оценил, что разложение на множители 250-значного числа при использовании самых эффективных из известных методов, с помощью сети, состоящей из миллиона компьютеров, заняло бы более миллиона лет. Такие вещи трудно оценить, но даже если Кнут был чрезмерно пессимистичен, то нужно взять числа всего на несколько разрядов большие, и задача во много раз усложнится. Именно это мы имеем в виду, когда говорим, что разложение на множители больших чисел – труднорешаемая задача. Все это очень сильно отличается от умножения, где, как мы видели, операцию с парой 250-значных чисел можно выполнить на домашнем компьютере. Никто не может даже представить себе, как можно разложить на множители числа, состоящие из тысячи или миллиона цифр.

38

По состоянию на 2009 г. удалось разложить на сомножители число из 232 десятичных (768 двоичных) цифр. Для этого потребовалось два года вычислений на нескольких сотнях компьютеров. – Прим. ред.

39

Дональд Эрвин Кнут (род. 1938) – американский специалист в области информатики и математики, создатель научного направления анализа алгоритмов. Автор многотомного труда «Искусство программирования» (The Art of Computer Programming), представляющего собой энциклопедию алгоритмов. – Прим. ред.

По крайней мере, никто не мог этого представить до недавнего времени.

В 1982 году физик Ричард Фейнман [40] занимался компьютерным моделированием квантово-механических объектов. Его отправной точкой было факт, известный уже в течение некоторого времени, важность которого, однако, еще не была оценена, а именно, что задача предсказания поведения квантово-механических систем (или, как мы можем это переформулировать – воспроизведения квантово-механических сред в виртуальной реальности) в общем случае является труднорешаемой. Одна из причин, по которой важность этого недооценивали, состояла в том, что никто и не ожидал особенно легкого предсказания интересных физических явлений с помощью компьютера. Возьмите, например, прогноз погоды или землетрясения. Несмотря на то что нужные уравнения известны, все знают, как трудно применять их в реальных ситуациях. В последнее время к этому привлекли широкое внимание в популярных книгах и статьях о хаосе и «эффекте бабочки». Но не эти эффекты ответственны за трудности, с которыми столкнулся Фейнман, по той простой причине, что они имеют место только в классической физике – то есть не в реальности, поскольку реальность квантово-механическая. Тем не менее я хочу сделать несколько замечаний относительно «хаотических» движений в классике, только чтобы подчеркнуть глубоко различный характер классической и квантовой непредсказуемости.

40

Ричард Филлипс Фейнман (1918–1988) – выдающийся американский физик-теоретик и популяризатор науки, нобелевский лауреат (1965). Основные труды в области квантовой механики и квантовой электродинамики. – Прим. ред.

Теория хаоса касается ограничений на предсказуемость в классической физике, проистекающих из факта внутренней неустойчивости почти всех классических систем. «Неустойчивость», о которой идет речь, не имеет ничего общего с какой-либо тенденцией разрушительного поведения или распада. Она связана с чрезмерной чувствительностью к начальным условиям. Допустим, что нам известно текущее состояние какой-то физической системы, например, набора бильярдных шаров, катящихся по столу. Если бы система подчинялась законам классической физики, что она и делает с хорошим приближением, то мы смогли бы определить ее будущее поведение (скажем, попадет ли определенный шар в лузу) из соответствующих законов движения точно так же, как мы можем предсказать солнечное затмение или соединение планет, исходя из этих же законов. Но на практике мы никогда не можем абсолютно точно определить начальные положения и скорости. Таким образом, возникает вопрос: если мы знаем их с некоторой разумной степенью точности, можем ли мы предсказать их будущее поведение с разумной степенью точности? И обычно ответ – не можем. Разница между реальной траекторией и предсказанной траекторией, вычисленной по слегка неточным данным, имеет тенденцию расти во времени экспоненциально и беспорядочно («хаотически»), так что через некоторое время первоначальное состояние, известное с небольшой погрешностью, уже совершенно ничего не будет говорить о поведении системы. Следствие для компьютерных предсказаний состоит в том, что движения планет, которые служат образцом классической предсказуемости, – это нетипичная классическая система. Для того чтобы предсказать поведение типичной классической системы даже через не очень большой промежуток времени, ее начальное состояние необходимо определить с недостижимо высокой точностью. Поэтому говорят, что, в принципе, бабочка, находящаяся в одном полушарии, взмахом своих крылышек может вызвать ураган в другом полушарии. Недостижимость точного прогноза погоды и тому подобное связывают поэтому с невозможностью учесть каждую бабочку на планете.

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

Поделиться с друзьями: