ЖАНРЫ

Программируя Вселенную. Квантовый компьютер и будущее науки
Шрифт:

Алгоритмическая информация

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

Во второй главе мы видели, что компьютерные языки позволяют придавать строкам битов тот или иной смысл. На таком языке эти строки можно интерпретировать как инструкции, побуждающие компьютер создавать те или иные выходные данные. Однако для любого желаемого выхода есть множество возможных языков, и, как правило, желаемый результат могут выдать многие компьютерные программы. Например, существует много разных программ, которые на выходе дают первый миллион цифр числа p. Важно отметить, однако, что не все эти программы одинаковой длины. Одна программа просто говорит: «Напечатать 3,1415926…» (где «…» состоит из остальных 999 992 цифр). Эта программа очень простая, но длинная. Более короткая, хотя и более сложная программа будет описывать конкретный способ для вычисления этого миллиона цифр. Например, такая программа может следовать примеру древних греков и аппроксимировать окружность в виде последовательности сторон многоугольника все меньшей длины. Такая программа для вычисления числа p может состоять всего из нескольких сотен инструкций.

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

Алгоритмическое информационное содержание независимо друг от друга открыли в начале и середине 1960-х гг. ученый Рэй Соломонофф из Кембриджа, Массачусетс, российский математик Андрей Николаевич Колмогоров и Грегори Хайтин, которому тогда было 18 лет и который учился в Сити-колледже в Нью-Йорке. Все эти исследователи отметили, что алгоритмическое информационное содержание обеспечивает в некоторых случаях более удовлетворительное измерение информации, чем длина записи числа в битах (это еще один способ описать информационное содержание числа), потому что алгоритмическая информация учитывает присущую числу математическую регулярность, а длина в битах на это не способна.

Для большинства чисел алгоритмическое информационное содержание близко к длине числа в битах. Оно не может намного превышать длину числа, ведь любое число, например 01110110101110111011101, можно получить с помощью простейшей программы, которая говорит: «Напечатать 01110110101110111011101». Для большинства чисел алгоритмическое информационное содержание не может быть и намного короче самого числа, просто потому что коротких программ гораздо меньше, чем длинных чисел. Например, можно спросить, сколько двадцатибитных чисел могут создавать десятибитные программы. Существует 220 (то есть 1 048 576) двадцатибитных чисел, но только 1024 = 210 возможных десятибитных программ. Поэтому в самом лучшем случае десятибитные программы могут создать лишь одно из каждых 1024 двадцатибитных чисел.

Числа, которые могут быть созданы короткими программами, – это математически регулярные, правильные числа. p – одно из таких чисел, но таким является, например, и число из миллиарда единиц, которое может выдать программа, которая – в переводе на обычный язык – говорит: «Печатать 1 один миллиард раз». Но, как мы уже сказали, большинство чисел не обладают существенной математической регулярностью. Большинство чисел, по существу, являются случайными.

Самая короткая компьютерная программа, создающая число, всегда определяется для данного компьютерного языка – Java, C, Fortran, BASIC. Но ее длина не слишком сильно зависит от того, какой именно язык использован. Большинство языков могут выдать первый миллион цифр числа p с помощью всего нескольких сотен инструкций. Более того, такую программу, написанную на фортране, можно превратить в программу, написанную на Java и создающую те же самые числа, с помощью специальной программы-переводчика. Но тогда самая короткая программа на Java, позволяющая создать первый миллион цифр числа p, не будет длиннее, чем самая короткая программа на фортране плюс длина программы преобразования. Если задавать все более длинные числа, длина программы преобразования будет все меньше и меньше по сравнению с основной программой, добавляя сравнительно небольшую длину к алгоритмическому информационному содержанию.

Такая «переводимость» компьютерных программ – главная черта вычислений. Программу, написанную на Fortran, всегда можно преобразовать в другую программу, написанную на Java. Эта «переводимость» – аспект универсального характера вычислений. Еще один знакомый нам универсальный аспект вычислений состоит в том, что одни и те же программы, например Microsoft Word, могут работать на компьютерах разной архитектуры. У PC и Mac очень разные схемы коммутации, как и способ представления и исполнения инструкций. Но Word может работать на компьютерах обоих типов. Если нам нужно установить Word на Mac, эта программа транслируется (или компилируется) в ряд инструкций, которые понимает Mac, и то же самое верно для PC. Несмотря на эти различия в основе, создавая документ в Word на Mac, мы используем те же самые клавиши, чтобы составить такой же документ, как и на PC {14} .

14

На компьютере Mac программа Word работает не совсем так, как на PC; на одном компьютере Word может работать медленнее, чем на другом. Некоторые версии Word на Mac работают очень медленно. «Перевести» программу можно всегда, но это не всегда эффективно.

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

Многие строки битов в реальном мире обладают математической регулярностью, поэтому их можно представить в сжатом виде. Например, в английском языке разные буквы встречаются с разной частотой: чаще всего используется буква E, за ней идут T, A, I, O, N, S, H, R, D, L, U (в эпоху типографского набора они находились в верхнем, самом доступном ряду ячеек со шрифтом) [39] . Программа, которая кодирует английский текст таким образом, что E соответствует более короткому коду, а Q – более длинному коду, может сжать текст на английском языке почти в два раза [40] .

39

В русском тексте лидирует О, второй идет Е, третье и четвертое места делят А и И, а пятое и шестое – Т и Н, так что шесть первых букв такие же, как и в английском. Замыкают десятку С, Р, В и Л. – Прим. ред.

40

Это было очевидно еще Сэмюэлу Морзе, который присвоил самые короткие телеграфные сигналы из одной точки или тире буквам E и T, а сигналы из двух знаков – буквам A, I, M и N. – Прим. ред.

Алгоритмическая вероятность

Рэй Соломонофф первоначально определил алгоритмическую информацию в процессе поиска формальной математической теории бритвы Оккама. Средневекового философа Уильяма Оккама интересовала возможность найти самое простое объяснение наблюдаемых явлений. «Pluralitas non est ponenda sin necessitate», – объявил он («Не следует множить сущности без необходимости»). Оккам призывал искать и принимать простые объяснения явлений, отклоняя сложные. Он, безусловно, посмеялся бы над теми, кто пытался объяснить наличие регулярных линий на поверхности Марса существованием марсиан. Эти линии можно было объяснить геологическими разломами или оптической иллюзией, что не требует присутствия марсиан. Привлекать марсиан для того, чтобы объяснить линии на Марсе, это и есть «умножение сущности без необходимости», или, проще говоря, попытка сделать вещи сложнее, чем они есть. Бритва Оккама «отрезает» сложные объяснения, указывая, что простые априорно более вероятны.

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

Но в какой степени она лучше других? В 1970-х гг. Грегори Хайтин и его коллега Чарльз Беннетт из IBM рассмотрели алгоритмическую информацию с точки зрения печатающих обезьян. Предположим, обезьяна набирает на клавиатуре случайные строки битов и вводит их в компьютер. Компьютер интерпретирует эти строки как программы, написанные на подходящем языке, скажем на Java. Какова вероятность того, что компьютер выдаст первый миллион цифр числа p? Такая же, как и вероятность того, что случайные строки, введенные в компьютер обезьяной, воспроизведут программу на Java, позволяющую вычислить первый миллион цифр числа p. Вероятность того, что обезьяна правильно напечатает первый бит такой программы, разумеется, составляет 0,5, или 1/2. Вероятность того, что она правильно напечатает два первых бита, составляет 0,25, или 1/4. Вероятность того, что правильно будут напечатаны первые 1000 битов, есть 1/2, умноженная на себя 1000 раз, или 1/21000. Это очень малое число. Очевидно, чем длиннее программа, тем менее вероятно, что обезьяна правильно введет ее в компьютер.

Вероятность того, что случайная программа, которую обезьяна вводит в компьютер, выдаст первый миллион цифр числа p, называют «алгоритмической вероятностью» числа p. Поскольку вероятность случайно правильно набрать длинную программу многократно меньше, чем вероятность правильно набрать короткую, алгоритмическая вероятность максимальна для самых коротких программ. Самая короткая программа, которая может дать на выходе то или иное число, является самым вероятным объяснением того, как это число было создано.

Если взглянуть на это под другим углом, то числа, создаваемые короткими программами, с большей вероятностью окажутся выходом обезьяньего компьютера, чем числа, которые могут быть произведены лишь с помощью длинных программ. При этом множество красивых и сложных математических образов – правильные геометрические формы, фракталы, законы квантовой механики, элементарные частицы, законы химии – можно задать с помощью коротких компьютерных программ. Хотите верьте, хотите нет, но у обезьяны есть хороший шанс создать все, что мы видим вокруг!

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