Шрифт:
Интервал:
Закладка:
В этой статье я поделил меры сложности на четыре категории: во-первых, меры того, насколько сложно что-то описать (такие как алгоритмическая информация); во-вторых, меры того, насколько сложно что-то сделать (такие как вычислительная сложность); в-третьих, меры степени организации в системе; в-четвертых, неколичественные идеи о сложности (такие как самоорганизация или сложные адаптивные системы). Из этих сорока двух самыми интересными я считаю подходы, сочетающие в единой мере сразу три составляющие: насколько сложно что-то описать, насколько сложно что-то сделать и степень организации. О таких мерах мы и будем говорить ниже.
Законы физики описывают компромиссы и взаимосвязи между измеримыми величинами, и законы сложности делают то же самое. Особенно полезным является компромисс между информацией и усилиями. Алгоритмическую информацию можно считать мерой содержания информации, а вычислительную сложность – мерой необходимых усилий. Рассмотрим количество усилий, необходимых для создания определенной строки битов – например, первого миллиона цифр числа p. Эти цифры можно получить с относительно небольшим количеством вычислительной сложности (всего несколько миллионов логических операций, что на обычном компьютере займет меньше секунды) с помощью программы длиной из миллиона с лишним знаков, которая говорит: «Напечатать 3,1415926…» Мы не знаем точной алгоритмической информации в первом миллионе цифр числа p (ведь алгоритмическая информация невычисляема), но можем искать верхнюю границу этой алгоритмической информации, создавая короткие программы, вычисляющие первый миллион цифр числа p. Например, в программе, которая вычисляет эти цифры с помощью математического метода представления в виде цепной дроби, может быть меньше 1000 знаков, но эта компактная программа будет вычислять первый миллион цифр числа p намного дольше, чем самая простая, но очень длинная программа типа «напечатать». Чтобы получить этот миллион цифр, ей потребуется выполнить миллиарды логических операций.
В начале 1980-х гг. Чарльз Беннетт предложил простое определение сложности, основанное на компромиссе между информацией и усилиями. Вслед за Соломоноффом, Беннетт признал самым вероятным описанием строки битов или набора данных самую короткую программу, способную их создать. (Если существует несколько программ, почти столь же коротких, как самая короткая, Беннетт также включил и их как приемлемые описания.) Затем Беннетт рассматривал вычислительную сложность этих коротких программ. Он назвал эту величину – усилия, необходимые для получения строки битов из ее самого вероятного описания, – логической глубиной.
Из всех мер сложности, которые исследовали мы с Хайнцем, логическая глубина оказалась самой привлекательной. Очевидно простые строки битов, например строка, состоящая из миллиарда единиц, могут быть созданы короткими и быстро выполняемыми программами («напечатать 1 один миллиард раз»), и они будут логически неглубокими. Случайные строки битов (например, 11010101100010… 011 – это строка битов, которую я создал лично, подбрасывая монетку и обозначив «орел» как 1, а «решку» как 0), можно создать с помощью длинных, но быстрых программ («напечатать 11010101100010… 011»), и они тоже логически неглубокие. А вот строку битов, соответствующую первому миллиону цифр числа p, даже посредством самых коротких известных программ придется считать долго, и эти строки логически глубоки. Логически глубокие строки битов обладают большим количеством структуры, и чтобы вычислить эту структуру с помощью самой короткой программы, нужно много времени.
Нам с Хайнцем очень нравились идеи Беннетта о сложности. Единственная жалоба Хайнца состояла в том, что эта схема недостаточно физическая. «Логическая глубина» относилась к строкам битов, компьютерным программам и логическим операциям. Хайнц хотел найти меру сложности, которая отсылала бы к физическим системам – энергии и энтропии. Поэтому мы с ним придумали физический аналог логической глубины, который назвали «термодинамической глубиной», чтобы подчеркнуть ее связь с работой Беннетта. Термодинамическая глубина – это свойство не битовых строк, а физических систем. Вместо поиска самого вероятного способа, которым строку битов можно было создать посредством самой короткой программы, мы с Хайнцем рассматривали самый вероятный способ создания физической системы. Наконец, вместо вычислительной сложности – количества логических операций, которые потребовались для создания данной строки битов, мы рассматривали объем физических ресурсов, необходимых для создания данной физической системы, скажем атома или слона.
Один особый физический ресурс, который рассматривали мы с Хайнцем, связан с энтропией. Мы помним, что энтропия измеряется в битах. Энтропия состоит из случайных, неизвестных битов. Противоположность энтропии называют «негэнтропией». Негэнтропия состоит из известных, структурированных битов. Негэнтропия системы – мера того, как далеко находится эта система от максимальной возможной энтропии. У живого, дышащего человека много негэнтропии, в противоположность, скажем, атомам гелия при постоянной температуре, у которых ее вообще нет. Можно сказать, что энтропия состоит из случайных, «мусорных» битов, а негэнтропия – из упорядоченных, полезных битов. Так вот, термодинамическая глубина физической системы равна числу полезных битов, которые понадобились для создания этой системы.
Будучи законным потомком логической глубины, термодинамическая глубина сохраняет много положительных качеств первой. Простые, регулярные системы, которые легко создать, например кристаллы соли, обычно термодинамически неглубоки. Совершенно неупорядоченные системы, такие как наши атомы гелия, получающие свои свойства в результате случайных процессов, таких как нагревание, также термодинамически неглубоки. Но чтобы создать замысловатые, структурированные системы, например живые системы, требуются огромные инвестиции полезных битов на протяжении нескольких миллиардов лет, и такие системы термодинамически глубоки.
В применении к строкам битов (например, созданным случайным образом запрограммированным квантовым компьютером) термодинамическая глубина оказывается еще ближе к логической глубине. Самый вероятный путь создания строки битов – посредством самой короткой программы. Поэтому термодинамическая глубина строки битов есть объем пространства памяти, использованный квантовым компьютером для создания этой строки; иначе говоря, термодинамическая глубина – это пространственная вычислительная сложность самой короткой программы.
В вычислительной Вселенной, где каждая физическая система действительно соответствует строке квантовых битов, а ее поведение запрограммированно случайными квантовыми флуктуациями, термодинамическая глубина и логическая глубина – взаимодополняющие и тесно связанные между собой величины. Чтобы до конца понять аналогию между термодинамической и логической глубиной, нужно найти физический аналог элементарной логической операции. В предыдущей главе мы как раз описали такой аналог: такая операция выполняется каждый раз, когда колеблется квантовая волна. Чтобы найти физический аналог числа операций, необходимых для создания строки битов, достаточно подсчитать число колебаний, которые потребовались для создания физической системы.
Из предыдущей главы мы помним, что это число колебаний пропорционально тому, что в физике называют действием физической системы. Действие – это число колебаний, умноженное на постоянную Планка. Действие, деленное на постоянную Планка, – хороший физический аналог числа элементарных операций, то есть вычислительной сложности. Чтобы оценить, как сложно было создать данную физическую систему, достаточно рассмотреть действие, которое потребовалось для ее создания. («Действие находится там, где происходит действие».)