Насколько эффективно можно воспроизвести те или иные аспекты реальности? Другими словами, какие вычисления можно практически выполнить за данное время и при данных возможностях? Это основной вопрос теории вычислительной сложности, которая, как я уже сказал, занимается изучением ресурсов, необходимых для решения вычислительных задач. Теория сложности ещё не объединена в достаточной степени с физикой, чтобы дать многие ответы в количественном виде. Однако она достигла немалого успеха в важном деле грубого различия вычислительных задач на
В соответствии со стандартным определением для «лёгкости» решения задачи важно не фактическое время, затрачиваемое на умножение конкретной пары чисел, а тот факт, что при применении того же самого метода даже к большим числам время увеличивается не слишком резко. Возможно, это покажется неожиданным, но такой очень косвенный метод определения «лёгкости» очень хорошо работает на практике для многих (хотя и не всех) важных классов вычислительных задач. В случае умножения, например, нетрудно убедиться, что стандартный метод можно использовать и для умножения чисел, скажем, в десять раз больших, приложив совсем незначительные дополнительные усилия. Ради иллюстрации предположим, что каждое элементарное умножение одной цифры на другую занимает у некоторого компьютера одну микросекунду (включая время, необходимое для сложения, сдвига и других операций, сопровождающих каждое элементарное умножение). При умножении семизначных чисел 4 220 851 и 2 594 209 каждую из семи цифр первого числа нужно умножить на каждую из семи цифр второго числа. Таким образом, общее время, необходимое для умножения (если операции выполняются последовательно), составит семью семь, или 49 микросекунд. Если на вход поданы числа примерно в десять раз бо́льшие, то есть содержащие по восемь цифр, на их умножения потребуется 64 микросекунды: увеличение составляет всего 31 %.
Ясно, что числа из огромного диапазона — безусловно содержащего любые числа, которые когда-либо были измерены как количественные значения физических переменных, — можно перемножить за крошечную долю секунды. Таким образом, умножение действительно является легкорешаемой задачей для любых целей в пределах физики (или, по крайней мере, в пределах существующей физики). За пределами физики, конечно, могут появиться практические причины для умножения куда больших чисел. Например, для криптографии огромный интерес представляют произведения простых чисел, состоящих примерно из 125 цифр. Наша гипотетическая машина могла бы перемножить два таких простых числа, получив произведение, состоящее из 250 цифр, примерно за 0,01 секунды. За одну секунду она могла бы перемножить два тысячезначных числа, и современные компьютеры легко могут улучшить это достижение. Лишь немногие исследователи эзотерических областей чистой математики интересуются перемножением столь непостижимо больших чисел, однако мы видим, что даже у них нет причины считать умножение неразрешимой задачей.
Напротив,