Введение
В алгоритмической теории информации (подраздел информатики и математики) сложность Колмогорова объекта, например фрагмента текста, — это длина кратчайшей компьютерной программы (на заранее определенном языке программирования), которая выдает этот объект в качестве результата. Это мера вычислительных ресурсов, необходимых для задания объекта, также известная как алгоритмическая сложность, сложность Соломонова — Колмогорова — Чайтина, сложность по размеру программы, описательная сложность или алгоритмическая энтропия. Она названа в честь Андрея Колмогорова, который впервые опубликовал работы на эту тему в 1963 году, и является обобщением классической теории информации. Понятие сложности Колмогорова можно использовать для формулировки и доказательства результатов невозможности, аналогичных диагональному аргументу Кантора, теореме Гёделя о неполноте и проблеме останова Тьюринга. В частности, ни одна программа P, вычисляющая нижнюю границу сложности Колмогорова для каждого текста, не может вернуть значение, существенно превышающее собственную длину P (см. раздел); следовательно, ни одна программа не может вычислить точную сложность Колмогорова для бесконечного числа текстов.
In algorithmic information theory (a subfield of computer science and mathematics), the Kolmogorov complexity of an object, such as a piece of text, is the length of a shortest computer program (in a predetermined programming language) that produces the object as output. It is a measure of the computational resources needed to specify the object, and is also known as algorithmic complexity, Solomonoff–Kolmogorov–Chaitin complexity, program size complexity, descriptive complexity, or algorithmic entropy. It is named after Andrey Kolmogorov, who first published on the subject in 1963 and is a generalization of classical information theory. The notion of Kolmogorov complexity can be used to state and prove impossibility results akin to Cantor's diagonal argument, Gödel's incompleteness theorem, and Turing's halting problem. In particular, no program P computing a lower bound for each text's Kolmogorov complexity can return a value essentially larger than P's own length (see section ); hence no single program can compute the exact Kolmogorov complexity for infinitely many texts.
Равнина Колмогорова сложности C
Существует два определения сложности Колмогорова: простое и без префикса. Простая сложность – это минимальная длина описания любой программы, обозначаемая , а сложность без префикса – это минимальная длина описания любой программы, закодированной кодом без префикса, обозначаемая . Простая сложность более интуитивно понятна, но сложность без префикса легче изучать. По умолчанию все уравнения верны лишь с точностью до аддитивной константы. Например, на самом деле означает, что , то есть, .
Пусть – вычислимая функция, отображающая конечные двоичные строки в двоичные строки. Она является универсальной функцией тогда и только тогда, когда для любой вычислимой функции мы можем закодировать эту функцию в "программу" , такую что . Мы можем рассматривать как интерпретатор программы, который принимает на вход начальный сегмент, описывающий программу, а затем данные, которые программа должна обработать. Одна из проблем простой сложности заключается в том, что , поскольку интуитивно нет общего способа определить, где разделить выходную строку, просто взглянув на конкатенированную строку. Мы можем разделить её, указав длину или , но это потребует дополнительных символов. Действительно, для любого существует такое , что .
Обычно в неравенствах с простой сложностью присутствует член, например, в одной из сторон, в то время как те же неравенства со сложностью без префикса содержат только .
Основная проблема простой сложности заключается в том, что в программу "проникает" дополнительная информация. Программа представляет что-то своим кодом, но также и свою собственную длину. В частности, программа может представлять двоичное число до , просто своей длиной. Иными словами, это как если бы мы использовали символ завершения, чтобы обозначить конец слова, и, следовательно, использовали не 2 символа, а 3. Чтобы устранить этот недостаток, мы вводим сложность Колмогорова без префикса.
Let be a computable function mapping finite binary strings to binary strings. It is a universal function if, and only if, for any computable , we can encode the function in a "program" , such that We can think of as a program interpreter, which takes in an initial segment describing the program, followed by data that the program should process. One problem with plain complexity is that , because intuitively speaking, there is no general way to tell where to divide an output string just by looking at the concatenated string. We can divide it by specifying the length of or , but that would take extra symbols. Indeed, for any there exists such that
Typically, inequalities with plain complexity have a term like on one side, whereas the same inequalities with prefix free complexity have only
The main problem with plain complexity is that there is something extra sneaked into a program. A program not only represent for something with its code, but also represent its own length. In particular, a program may represent a binary number up to , simply by its own length. Stated in another way, it is as if we are using a termination symbol to denote where a word ends, and so we are not using 2 symbols, but 3. To fix this defect, we introduce the prefix free Kolmogorov complexity.
История и контекст
Алгоритмическая теория информации — это область компьютерных наук, изучающая сложность Колмогорова и другие меры сложности для строк (или других структур данных). Концепция и теория сложности Колмогорова основаны на ключевой теореме, впервые обнаруженной Рэем Соломоноффом, который опубликовал её в 1960 году, описав в «Предварительном отчёте об общей теории индуктивного вывода» как часть своего изобретения — алгоритмической вероятности. Более полное описание он дал в своих публикациях 1964 года «Формальная теория индуктивного вывода», части 1 и 2 в журнале «Information and Control». Позже Андрей Колмогоров независимо опубликовал эту теорему в «Проблемах передачи информации» в 1965 году. Грегори Чайтин также представляет эту теорему в журнале J. ACM — статья Чайтина была представлена в октябре 1966 года и пересмотрена в декабре 1968 года, с ссылками на работы Соломоноффа и Колмогорова. Теорема утверждает, что среди алгоритмов, декодирующих строки из их описаний (кодов), существует оптимальный. Этот алгоритм для всех строк позволяет коды, не длиннее, чем те, что допускаются любым другим алгоритмом, с точностью до аддитивной константы, зависящей от алгоритмов, но не от самих строк. Соломонофф использовал этот алгоритм и длины кодов, которые он позволяет, для определения «универсальной вероятности» строки, на основе которой может быть построен индуктивный вывод последующих символов строки. Колмогоров использовал эту теорему для определения нескольких функций строк, включая сложность, случайность и информативность. Когда Колмогоров узнал о работе Соломоноффа, он признал его приоритет. В течение нескольких лет работы Соломоноффа были более известны в Советском Союзе, чем в западном мире. Однако в научном сообществе сложилось общее мнение, что данный тип сложности следует связывать с Колмогоровым, который интересовался случайностью последовательностей, а алгоритмическая вероятность — с Соломоноффом, который сосредоточился на прогнозировании, используя изобретённое им универсальное априорное распределение вероятностей. Более широкая область, охватывающая описательную сложность и вероятность, часто называется сложностью Колмогорова. Компьютерный учёный Мин Ли считает это примером эффекта Мэтью: «Каждому, у кого есть, дано будет ещё больше». Существуют и другие варианты сложности Колмогорова или алгоритмической информации. Наиболее широко используемый из них основан на самоограничивающих программах и в значительной степени принадлежит Леониду Левину (1974). Аксиоматический подход к сложности Колмогорова, основанный на аксиомах Блума (Blum 1967), был предложен Марком Бургиным в статье, представленной для публикации Андреем Колмогоровым.
There are several other variants of Kolmogorov complexity or algorithmic information. The most widely used one is based on self delimiting programs, and is mainly due to Leonid Levin (1974). An axiomatic approach to Kolmogorov complexity based on Blum axioms (Blum 1967) was introduced by Mark Burgin in the paper presented for publication by Andrey Kolmogorov.
Основные результаты
Мы пишем, что be, где означает некоторый фиксированный способ кодирования кортежа строк x и y.
Неравенства
Мы опускаем аддитивные факторы (на которых основан этот раздел). Теорема (информация не увеличивается). Для любой вычислимой функции , у нас есть:
Доказательство. Запрограммируйте машину Тьюринга для чтения двух последовательных программ: одна описывает функцию, а другая – строку. Затем запустите обе программы на рабочей ленте, чтобы получить , и выведите результат.
Proof. Program the Turing machine to read two subsequent programs, one describing the function and one describing the string. Then run both programs on the work tape to produce , and write it out.