Колмогоровская сложность

Из Википедии, бесплатной энциклопедии
Это изображение иллюстрирует часть Мандельброта фрактала множества . Для простого хранения 24-битного цвета каждого пикселя этого изображения потребуется 23 миллиона байт, но небольшая компьютерная программа может воспроизвести эти 23 МБ, используя определение множества Мандельброта и угловые координаты изображения. Таким образом, колмогоровская сложность этого образа намного меньше 23 МБ в любой прагматической модели вычислений . . Универсальное сжатие изображений PNG уменьшает его только до 1,6 МБ, что меньше, чем необработанные данные, но намного превышает колмогоровскую сложность

В алгоритмической теории информации (раздел информатики и математики ) колмогоровская сложность объекта, такого как фрагмент текста, — это длина кратчайшей компьютерной программы (на заранее определенном языке программирования ), которая создает объект в качестве вывода. Это мера вычислительных ресурсов, необходимых для определения объекта, которая также известна как алгоритмическая сложность , сложность Соломонова-Колмогорова-Чайтина , сложность размера программы , описательная сложность или алгоритмическая энтропия . Он назван в честь Андрея Колмогорова , впервые опубликовавшего эту тему в 1963 году. [1] [2] и является обобщением классической теории информации.

Понятие колмогоровской сложности можно использовать для формулировки и доказательства результатов о невозможности, подобных диагональному аргументу Кантора , теореме Гёделя о неполноте и проблеме остановки Тьюринга . В частности, ни одна программа P , вычисляющая нижнюю границу для колмогоровской сложности каждого текста, не может вернуть значение, существенно большее, чем § собственная длина P (см. раздел Теорема Чайтина о неполноте ); следовательно, ни одна программа не может вычислить точную колмогоровскую сложность для бесконечного числа текстов.

Определение [ править ]

Интуиция [ править ]

Рассмотрим следующие две строки из 32 строчных букв и цифр:

abababababababababababababababab , и
4c1j5b2p0cv4w1x8rx2y39umgw5q85s7

Первая строка имеет краткое англоязычное описание, а именно «write ab 16 раз», которое состоит из 17 символов. Второй не имеет очевидного простого описания (с использованием того же набора символов), кроме записи самой строки, например, «write 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7», которая имеет 38 символов. Следовательно, можно сказать, что операция записи первой строки имеет «меньшую сложность», чем запись второй.

Более формально, сложность строки — это длина кратчайшего возможного описания строки на некотором фиксированном универсальном языке описания (чувствительность сложности относительно выбора языка описания обсуждается ниже). Можно показать, что колмогоровская сложность любой строки не может превышать длину самой строки более чем на несколько байт. Строки, подобные приведенному выше примеру abab , колмогоровская сложность которых мала по сравнению с размером строки, не считаются сложными.

Колмогоровскую сложность можно определить для любого математического объекта, но для простоты объем этой статьи ограничен строками. Сначала мы должны указать язык описания строк. Такой язык описания может быть основан на любом языке компьютерного программирования, например Lisp , Pascal или Java . Если P — программа, которая выводит строку x , то P — описание x . Длина описания равна длине P как символьной строки, умноженной на количество битов в символе (например, 7 для ASCII ).

В качестве альтернативы мы могли бы выбрать кодировку для машин Тьюринга , где кодировка — это функция, которая связывает с каждой машиной Тьюринга M битовую строку <M> . Если M — машина Тьюринга, которая на входе w выводит строку , то объединенная строка <M> w x является описанием x . Для теоретического анализа этот подход больше подходит для построения подробных формальных доказательств и обычно предпочитается в исследовательской литературе. В этой статье обсуждается неформальный подход.

Любая строка s имеет хотя бы одно описание. Например, вторая строка выше выводится псевдокодом :

функция  GenerateString2() 
      вернуть  "4c1j5b2p0cv4w1x8rx2y39umgw5q85s7" 
 

тогда как первая строка выводится с помощью (гораздо более короткого) псевдокода:

функция  GenerateString1() 
      вернуть  «ab» × 16 
 

Если описание d ( s ) строки s имеет минимальную длину (т.е. использует наименьшее количество битов), оно называется минимальным описанием s , а длина d ( s ) (т.е. количество битов в минимальном описание) — это сложность s колмогоровская , записанная K ( s ). Символически,

К ( s ) знак равно | д ( с )|.

Длина кратчайшего описания будет зависеть от выбора языка описания; но эффект смены языков ограничен (результат, называемый теоремой инвариантности ).

Обычная колмогоровская сложность C [ править ]

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

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

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

Одна из проблем с простой сложностью заключается в том, что , потому что, интуитивно говоря, не существует общего способа определить, где разделить выходную строку, просто взглянув на объединенную строку. Мы можем разделить его, указав длину или , но это займет дополнительные символы. Действительно, для любого Существует такой, что . [3]

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

Основная проблема простой сложности заключается в том, что в программу добавляется что-то дополнительное. Программа не только представляет что-то своим кодом, но и представляет свою собственную длину. В частности, программа может представлять собой двоичное число до , просто по своей длине. Другими словами, это похоже на то, как если бы мы использовали символ завершения для обозначения места окончания слова, и поэтому мы используем не 2 символа, а 3. Чтобы исправить этот недостаток, мы вводим беспрефиксную колмогоровскую сложность. [4]

Колмогоровская сложность без префиксов K [ править ]

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

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

Это дает нам следующий формальный способ описания K . [5]

  • Исправьте универсальную машину Тьюринга без префиксов с тремя лентами: лентой чтения, бесконечной в одном направлении, рабочей лентой, бесконечной в двух направлениях, и лентой записи, бесконечной в одном направлении.
  • Машина может читать с ленты чтения только в одном направлении (без обратного отслеживания) и записывать на ленту записи только в одном направлении. Он может читать и записывать рабочую ленту в обоих направлениях.
  • Рабочая лента и лента записи начинаются с нулей. Считывание ленты начинается с входного префиксного кода, за которым следуют все нули.
  • Позволять быть кодом без префиксов на , используемый универсальной машиной Тьюринга.

Обратите внимание, что некоторые универсальные машины Тьюринга не могут быть запрограммированы с помощью префиксных кодов. Нам нужно выбрать только универсальную машину Тьюринга без префиксов.

Сложность строки без префикса это кратчайший префиксный код, который делает вывод машины :

инвариантности Теорема

Неофициальное обращение [ править ]

Существуют некоторые языки описания, которые являются оптимальными в следующем смысле: при любом описании объекта на языке описания это описание может использоваться на оптимальном языке описания с постоянными накладными расходами. Константа зависит только от используемых языков, а не от описания объекта или описываемого объекта.

Вот пример оптимального языка описания. Описание будет состоять из двух частей:

  • В первой части описывается другой язык описания.
  • Вторая часть представляет собой описание объекта на этом языке.

Говоря более техническим языком, первая часть описания представляет собой компьютерную программу (в частности: компилятор языка объекта, написанный на языке описания), а вторая часть является входными данными для этой компьютерной программы, которая создает объект на выходе.

Теорема инвариантности гласит: для любого языка описания L оптимальный язык описания по крайней мере так же эффективен, как и L , с некоторыми постоянными издержками.

Доказательство: любое описание D в L можно преобразовать в описание на оптимальном языке, сначала описав L как компьютерную программу P (часть 1), а затем используя исходное описание D в качестве входных данных для этой программы (часть 2). общая длина этого нового описания D' составляет (приблизительно):

| Д' | = | П | + | Д |

Длина P не зависящая от D. — константа , Таким образом, накладные расходы не превышают постоянные, независимо от описываемого объекта. Следовательно, оптимальный язык универсален с точностью до этой аддитивной константы.

Более формальный подход [ править ]

Теорема : Если K 1 и K 2 являются функциями сложности относительно полного описания Тьюринга языков L 1 и L 2 , то существует константа c – которая зависит только от выбранных языков L 1 и L 2 – такая, что

с . - c K 1 ( s ) - K 2 ( s ) ≤ c .

Доказательство . В силу симметрии достаточно доказать, что существует некоторая константа c такая, что для всех строк s

K 1 ( s ) ≤ K 2 ( s ) + c .

существует программа на языке L1 , которая действует как интерпретатор L2 что : Теперь предположим ,

функция  InterpretLanguage(  строка   p  )
 

где p — программа в L 2 . Интерпретатор характеризуется следующим свойством:

Бег InterpretLanguage на входе p возвращает результат запуска p .

Таким образом, если P — программа в L2 , являющаяся минимальным описанием s , то InterpretLanguage( P ) возвращает строку s . Длина этого описания s равна сумме

  1. Продолжительность программы InterpretLanguage, которую мы можем принять за константу c .
  2. Длина P , которая по определению равна K 2 ( s ).

Это доказывает требуемую верхнюю оценку.

и контекст История

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

Концепция и теория колмогоровской сложности основана на ключевой теореме, впервые открытой Рэем Соломоновым , который опубликовал ее в 1960 году, описав ее в «Предварительном отчете по общей теории индуктивного вывода». [6] как часть его изобретения алгоритмической вероятности . Более полное описание он дал в своих публикациях 1964 года «Формальная теория индуктивного вывода», часть 1 и часть 2 в книге « Информация и контроль» . [7] [8]

Позднее Андрей Колмогоров независимо опубликовал эту теорему в журнале «Проблемы Информ». Передача инфекции [9] в 1965 году. Грегори Чайтин также представляет эту теорему в J. ACM - статья Чайтина была представлена ​​в октябре 1966 года и исправлена ​​в декабре 1968 года, и цитирует статьи Соломонова и Колмогорова. [10]

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

Когда Колмогорову стало известно о работе Соломонова, он признал приоритет Соломонова. [11] В течение нескольких лет работы Соломонова были более известны в Советском Союзе, чем в западном мире. Однако общее мнение в научном сообществе заключалось в том, чтобы связать этот тип сложности с Колмогоровым, который интересовался случайностью последовательности, в то время как алгоритмическая вероятность стала ассоциироваться с Соломоновым, который сосредоточился на предсказании с использованием своего изобретения универсального априорного распределения вероятностей. . Более широкую область, охватывающую сложность описания и вероятность, часто называют сложностью Колмогорова. Ученый-компьютерщик Мин Ли считает это примером эффекта Мэтью : «...каждому, кто имеет, будет дано больше...» [12]

Существует несколько других вариантов колмогоровской сложности или алгоритмической информации. Наиболее широко используемый из них основан на программах саморазграничения и принадлежит главным образом Леониду Левину (1974).

Аксиоматический подход к колмогоровской сложности, основанный на аксиомах Блюма (Blum 1967), был представлен Марком Бургиным в статье, представленной к публикации Андреем Колмогоровым. [13]

Основные результаты [ править ]

Мы пишем быть , где означает некоторый фиксированный способ кодирования кортежа строк x и y.

Неравенства [ править ]

Мы опускаем аддитивные факторы . Этот раздел основан на. [5]

Теорема.

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

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

Теорема : существует такой, что . Более кратко, . Сходным образом, , и . [ нужны разъяснения ]

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

Теорема. (дополнительные информационные границы, субаддитивность)

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

Теорема. (симметрия информации) .

Доказательство. Одна сторона простая. Для другой стороны с , нам нужно использовать счетный аргумент (стр. 38 [14] ).

Теорема. (неувеличение информации) Для любой вычислимой функции , у нас есть .

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

колмогоровской сложности Невычислимость

программы K вычислить попытка Наивная

На первый взгляд может показаться тривиальным написать программу, которая может вычислять K ( s ) для любого s , например следующую:

функция  KolmogorovComplexity(  строка  s) 
      для  i = 1  до  бесконечности: 
          для каждой  строки p  длины  ровно i 
              если  isValidProgram(p)  и  Assessment(p) == s 
                  вернуть  я 
 

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

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

Более того, ни одна программа вообще не может вычислить функцию K , какой бы сложной она ни была. Это доказывается следующим.

Формальное доказательство невычислимости K [ править ]

Теорема : существуют строки сколь угодно большой колмогоровской сложности. Формально: для каждого натурального числа n существует строка s такая, что K ( s ) ≥ n . [примечание 1]

Доказательство: В противном случае все из бесконечного числа возможных конечных строк могли бы быть порождены конечным числом [заметка 2] программы со сложностью ниже n бит.

Теорема : K не является вычислимой функцией . Другими словами, не существует программы, которая принимает на вход любую строку s и выдает на выходе целое число K ( s ).

Следующее доказательство от противного простой язык, подобный Паскалю использует для обозначения программ ; для простоты доказательства предположим, что его описание (т.е. интерпретатор ) имеет длину 1 400 000 бит. Предположим, от противоречия, что существует программа

функция  KolmogorovComplexity(  строка  s)
 

который принимает на вход строку s и возвращает K ( s ). Все программы имеют конечную длину, поэтому для простоты доказательства примем ее равной 7 000 000 000 бит. Теперь рассмотрим следующую программу длиной 1288 бит:

функция  GenerateComplexString() 
      для  i = 1  до  бесконечности: 
          для каждой  строки s  длины  ровно i 
              если  Колмогоровская сложность(и) ≥ 8000000000 
                  вернуть  с 
 

С использованием KolmogorovComplexity в качестве подпрограммы программа пробует каждую строку, начиная с самой короткой, пока не вернет строку с колмогоровской сложностью не менее 8 000 000 000 бит, [заметка 3] т.е. строка, которая не может быть создана ни одной программой короче 8 000 000 000 бит. Однако общая длина приведенной выше программы, создавшей s, составляет всего 7 001 401 288 бит. [примечание 4] что является противоречием. (Если код KolmogorovComplexityкороче, противоречие остается. Если оно длиннее, константа, используемая в GenerateComplexString всегда можно изменить соответствующим образом.) [примечание 5]

Приведенное выше доказательство использует противоречие, подобное противоречию парадокса Берри : « 1 2 самых маленьких 3 положительных 4 целых числа 5 это 6 не могу 7 быть 8 определено 9 дюймов на 10 меньше 11 чем 12 двадцать 13 английский 14 слов». Также можно показать невычислимость K путем сведения к невычислимости проблемы остановки H , поскольку K и H эквивалентны тьюринг- . [15]

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

Цепное правило сложности для колмогоровской

Правило цепочки [16] Колмогоровская сложность утверждает, что существует константа c такая, что для всех X и Y :

K ( X , Y ) = K ( X ) + K ( Y | X ) + c*max(1,log( K ( X , Y )))).

Он утверждает, что самая короткая программа, воспроизводящая X и Y, собой не более чем логарифмический член, больший, чем программа для воспроизведения X и программа для воспроизведения Y по заданному X. представляет Используя это утверждение, можно определить аналог взаимной информации для колмогоровской сложности .

Сжатие [ править ]

несложно Вычислить верхние границы для K ( s ) — просто сжимайте строку s каким-либо методом, реализуйте соответствующий декомпрессор на выбранном языке, объединяйте декомпрессор со сжатой строкой и измеряйте длину полученной строки — конкретно, размер самораспаковывающегося архива на данном языке.

Строка s сжимается числом c, если она имеет описание, длина которого не превосходит | s | − c бит. Это эквивалентно тому, что K ( s ) ≤ | s | - с . В противном случае s несжимаемо с помощью c . Строка, несжимаемая на 1, называется просто несжимаемой – по принципу «ячейки» , который применяется, поскольку каждая сжатая строка отображается только в одну несжимаемую строку, несжимаемые строки должны существовать, поскольку существует 2 н битовые строки длины n , но только 2 н − 1 более короткие строки, то есть строки длиной меньше n (т. е. длиной 0, 1, ..., n − 1). [примечание 6]

По той же причине большинство строк сложны в том смысле, что их невозможно существенно сжать — их K ( s ) ненамного меньше | s |, длина s в битах. Чтобы сделать это точным, зафиксируйте значение n . Есть 2 н битовые строки длины n . Равномерное в распределение вероятностей пространстве этих битовых строк присваивает точно равный вес 2 п к каждой строке длины n .

Теорема : При равномерном распределении вероятностей в пространстве битовых строк длины n вероятность того, что строка несжимаема с помощью c , равна как минимум 1 - 2. с +1 + 2 п .

Для доказательства теоремы заметим, что количество описаний длины, не превышающей n c , задается геометрической прогрессией:

1 + 2 + 2 2 + ... + 2 п - с = 2 п - с +1 − 1.

Осталось по крайней мере

2 н − 2 п - с +1 + 1

битовые строки длины n , несжимаемые с помощью c . Чтобы определить вероятность, разделите на 2 н .

Чайтина о неполноте Теорема

Колмогоровская сложность K ( s ) и две вычислимые функции нижней границы prog1(s), prog2(s). Горизонтальная ось ( логарифмический масштаб ) нумерует все строки s , упорядоченные по длине; вертикальная ось ( линейная шкала ) измеряет колмогоровскую сложность в битах . Большинство строк несжимаемы, т.е. их колмогоровская сложность превышает их длину на постоянную величину. На рисунке показаны 9 сжимаемых струн, которые выглядят как почти вертикальные склоны. Из-за теоремы Чайтина о неполноте (1974) выходные данные любой программы, вычисляющей нижнюю границу колмогоровской сложности, не могут превышать некоторый фиксированный предел, который не зависит от входной строки s .

Согласно приведенной выше теореме ( § Сжатие ), большинство строк являются сложными в том смысле, что их нельзя описать каким-либо существенно «сжатым» способом. Однако оказывается, что тот факт, что конкретная строка является сложной, формально доказать невозможно, если сложность строки превышает определенный порог. Точная формализация такова. Сначала зафиксируем конкретную аксиоматическую систему S для натуральных чисел . Система аксиом должна быть достаточно мощной, чтобы некоторым утверждениям A о сложности строк можно было связать формулу F A в S . Эта ассоциация должна обладать следующим свойством:

Если F A доказуемо из аксиом S , то соответствующее утверждение A должно быть истинным. Эта «формализация» может быть достигнута на основе нумерации Гёделя .

Теорема : существует константа L (которая зависит только от S и от выбора языка описания) такая, что не существует строки s , для которой выполняется утверждение

K ( s ) ≥ L (формализовано в S )

может быть доказано в пределах S . [17] [18]

Идея доказательства : Доказательство этого результата смоделировано на самореферентной конструкции, используемой в парадоксе Берри . Сначала мы получаем программу, которая перечисляет доказательства внутри S и задаем процедуру P , которая принимает в качестве входных данных целое число L и печатает строки x , находящиеся в пределах доказательств внутри S утверждения K ( x ) ≥ L. , Установив затем L больше, чем длина этой процедуры P , мы получим, что требуемая длина программы для печати x , как указано в K ( x ) ≥ L , как минимум L , тогда меньше суммы L , поскольку строка x процедуры P. был напечатан с помощью Это противоречие. не может Таким образом, система доказательств S доказать K ( x ) ≥ L для L сколь угодно большого размера, в частности, для L большей, чем длина процедуры P (которая конечна).

Доказательство :

Мы можем найти эффективное перечисление всех формальных доказательств в S с помощью некоторой процедуры

функция  NthProof(  int   n  );
 

который принимает на вход n и выводит некоторое доказательство. Эта функция перечисляет все доказательства. Некоторые из них являются доказательствами формул, которые нас здесь не интересуют, поскольку каждое возможное доказательство на языке S производится для некоторого n . Некоторые из них представляют собой формулы сложности вида K ( s ) ≥ n где s и n — константы языка S. , Есть процедура

функция  NthProofProvesComplexityFormula(  int   n  )
 

который определяет, действительно ли - е доказательство доказывает формулу сложности K ( s ) ≥ L. n Строки s и целое число L , в свою очередь, вычислимы с помощью процедуры:

функция  StringNthProof(  int   n  )
 
функция  ComplexityLowerBoundNthProof(  int   n  )
 

Рассмотрим следующую процедуру:

функция  GenerateProvallyComplexString(  int   n  ) 
      для  i = 1 до бесконечности: 
          если  NthProofProvesComplexityFormula(i)  и  ComplexityLowerBoundNthProof(i) ≥  n 
             возвращают  StringNthProof(  i  ) 
 

Учитывая n , эта процедура пробует каждое доказательство, пока не найдет строку и доказательство в формальной системе S формулы K ( s ) ≥ L для некоторого L n ; если такого доказательства не существует, оно зацикливается навсегда.

Наконец, рассмотрим программу, состоящую из всех этих определений процедур и основного вызова:

GenerateProvallyComplexString(  n  0  )
 

где константа n 0 будет определена позже. Общая длина программы может быть выражена как U +log 2 ( n 0 ), где U — некоторая константа, а log 2 ( n 0 ) представляет длину целочисленного значения n 0 при разумном предположении, что оно закодировано двоичными цифрами. . Мы выберем n 0 больше длины программы, то есть такое, что n 0 > U +log 2 ( n 0 ). Это, очевидно, верно для достаточно большого n 0 , поскольку левая часть растет линейно по n 0, тогда как правая часть растет логарифмически по n 0 вплоть до фиксированной константы U .

доказательство вида « K ( s )≥ L » с L n0 , невозможно получить Тогда в S в чем можно убедиться косвенным рассуждением : Если ComplexityLowerBoundNthProof(i) может вернуть значение ≥ n 0 , тогда цикл внутри GenerateProvablyComplexString в конечном итоге завершится, и эта процедура вернет строку s такую, что

К ( с )
п 0           путем строительства GenerateProvablyComplexString
> U + журнал 2 ( п 0 ) по выбору n 0
К ( с ) поскольку s было описано программой с такой длиной

Это противоречие, КЭД

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

Подобные идеи используются для доказательства свойств константы Чайтина .

Минимальная длина сообщения [ править ]

Принцип минимальной длины сообщения для статистического и индуктивного вывода и машинного обучения был разработан К.С. Уоллесом и Д.М. Бултоном в 1968 году. MML является байесовским (т.е. он включает в себя априорные убеждения) и теоретико-информационным. Он обладает такими желательными свойствами, как статистическая инвариантность (т. е. преобразование вывода с помощью повторной параметризации, например, из полярных координат в декартовы координаты), статистическая согласованность (т. е. даже для очень сложных задач MML сходится к любой базовой модели) и эффективность ( т.е. модель MML будет сходиться к любой истинной базовой модели настолько быстро, насколько это возможно). К.С. Уоллес и Д.Л. Доу (1999) показали формальную связь между MML и алгоритмической теорией информации (или колмогоровской сложностью). [19]

Колмогоровская случайность [ править ]

Колмогоровская случайность определяет строку (обычно состоящую из битов ) как случайную тогда и только тогда, когда каждая компьютерная программа , которая может создать эту строку, имеет длину, по крайней мере, такую ​​же, как сама строка. Чтобы быть точным, необходимо указать универсальный компьютер (или универсальную машину Тьюринга ), так что «программа» означает программу для этой универсальной машины. Случайная строка в этом смысле является «несжимаемой», поскольку ее невозможно «сжать» в программу, которая короче самой строки. Для каждого универсального компьютера существует хотя бы одна алгоритмически случайная строка каждой длины. [20] Однако является ли конкретная строка случайной, зависит от выбранного универсального компьютера. Это связано с тем, что универсальный компьютер может иметь определенную строку, жестко закодированную в самом себе, и программа, работающая на этом универсальном компьютере, может затем просто ссылаться на эту жестко запрограммированную строку, используя короткую последовательность битов (т. е. намного короче, чем сама строка). .

Это определение можно расширить, чтобы определить понятие случайности для бесконечных последовательностей из конечного алфавита. Эти алгоритмически случайные последовательности можно определить тремя эквивалентными способами. Один из способов использует эффективный аналог теории меры ; другой использует эффективные мартингалы . Третий способ определяет бесконечную последовательность как случайную, если колмогоровская сложность ее начальных сегментов без префиксов растет достаточно быстро - должна существовать константа c такая, что сложность начального сегмента длины n всегда равна как минимум n c . Это определение, в отличие от определения случайности для конечной строки, не зависит от того, какая универсальная машина используется для определения беспрефиксной колмогоровской сложности. [21]

энтропией с Связь

Для динамических систем скорость энтропии и алгоритмическая сложность траекторий связаны теоремой Брудно, согласно которой равенство подходит почти для всех . [22]

Это можно показать [23] что для вывода источников марковской информации колмогоровская сложность связана с энтропией источника информации. Точнее, колмогоровская сложность вывода марковского источника информации, нормированная на длину вывода, почти наверняка сходится (поскольку длина вывода стремится к бесконечности) к энтропии источника .

Теорема (Теорема 14.2.5 [24] ) Условная колмогоровская сложность двоичной строки удовлетворяет

где двоичная функция энтропии (не путать со скоростью энтропии).

Проблема с остановкой [ править ]

Функция сложности Колмогорова эквивалентна решению проблемы остановки.

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

Другое направление гораздо сложнее. [25] [26] Он показывает, что по колмогоровской функции сложности можно построить функцию , такой, что для всех больших , где функция сдвига Busy Beaver (также обозначаемая как ). Изменяя функцию при более низких значениях мы получаем верхнюю границу , что решает проблему остановки.

Рассмотрите эту программу , который принимает входные данные как и использует .

  • Перечислить все строки длины .
  • Для каждой такой строки , перечислить все (без префиксов) программы длины пока один из них не выведет . Запишите время его выполнения .
  • Выведите самый большой .

Докажем от противного, что для всех больших .

Позволять быть длинным и занятым бобром . Рассмотрим эту программу (без префиксов), которая не принимает никаких входных данных:

  • Запустите программу и запишите продолжительность его выполнения .
  • Генерировать все программы длиной . Запустите каждый из них на срок до шаги. Обратите внимание на результаты тех, которые остановились.
  • Выведите строку с наименьшим лексикографическим порядком, которая не была выведена ни одним из них.

Пусть строка, выдаваемая программой, будет .

Программа имеет длину , где происходит от длины Занятого бобра , (без префиксов) получается в результате использования дельта-кода Элиаса для номера , и исходит из остальной части программы. Поэтому,

для всех больших . Далее, поскольку возможных программ длины , у нас есть по ячейковому принципу . По предположению, , поэтому каждая строка длины имеет минимальную программу со временем выполнения . Таким образом, строка имеет минимальную программу со временем выполнения . Кроме того, эта программа имеет длину . Это противоречит тому, как был построен.

Универсальная вероятность [ править ]

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

Другими словами, это вероятность того, что, учитывая равномерно случайный двоичный поток на входе, универсальная машина Тьюринга остановится после чтения определенного префикса потока и выведет .

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

Теорема (Теорема 14.11.1 [24] )

Условные версии [ править ]

Условная колмогоровская сложность двух строк. грубо говоря, определяется как колмогоровская сложность x при условии, что y является вспомогательным входом в процедуру. [27] [28]

Существует также сложность, обусловленная длиной , что представляет собой сложность x длины x . с учетом известной/входной [29] [30]

См. также [ править ]

Примечания [ править ]

  1. ^ Однако s с K ( s ) = n не обязательно должен существовать для каждого n . Например, если n не кратно 7, ни одна программа ASCII не может иметь длину ровно n бит.
  2. ^ Есть 1 + 2 + 2 2 + 2 3 + ... + 2 н = 2 п +1 − 1 различных текстов программы длиной до n бит; ср. геометрический ряд . Если длина программы должна быть кратна 7 битам, текстов программы будет еще меньше.
  3. ^ По предыдущей теореме такая строка существует, следовательно, for цикл в конечном итоге завершится.
  4. ^ включая языковой интерпретатор и код подпрограммы для KolmogorovComplexity
  5. ^ Если KolmogorovComplexity имеет длину n бит, константа m, используемая в GenerateComplexString необходимо адаптировать для удовлетворения n + 1 400 000 + 1218 + 7·log 10 ( m ) < m , что всегда возможно, поскольку m растет быстрее, чем log 10 ( m ).
  6. ^ Поскольку существует N L = 2 л строк длины L , количество строк длины L = 0, 1, ..., n − 1 равно N 0 + N 1 + ... + N n −1 = 2 0 + 2 1 + ... + 2 п -1 , представляющий собой конечную геометрическую серию с суммой 2 0 + 2 1 + ... + 2 п -1 = 2 0 × (1 − 2 н ) / (1 − 2) = 2 н − 1

Ссылки [ править ]

  1. ^ Колмогоров, Андрей (1963). «О таблицах случайных чисел». Санкхья Сер. А. 25 : 369–375. МР   0178484 .
  2. ^ Колмогоров, Андрей (1998). «О таблицах случайных чисел» . Теоретическая информатика . 207 (2): 387–395. дои : 10.1016/S0304-3975(98)00075-9 . МР   1643414 .
  3. ^ (Дауни и Хиршфельдт, 2010), Теорема 3.1.4.
  4. ^ (Дауни и Хиршфельдт, 2010), раздел 3.5.
  5. ^ Перейти обратно: а б Хаттер, Маркус (6 марта 2007 г.). «Алгоритмическая теория информации» . Схоларпедия . 2 (3): 2519. Бибкод : 2007SchpJ...2.2519H . doi : 10.4249/scholarpedia.2519 . hdl : 1885/15015 . ISSN   1941-6016 .
  6. ^ Соломонов, Рэй (4 февраля 1960 г.). Предварительный отчет об общей теории индуктивного вывода (PDF) . Отчет В-131 (Отчет). Редакция опубликована в ноябре 1960 г. Архивировано (PDF) из оригинала 9 октября 2022 г.
  7. ^ Соломонов, Рэй (март 1964 г.). «Формальная теория индуктивного вывода, часть I» (PDF) . Информация и контроль . 7 (1): 1–22. дои : 10.1016/S0019-9958(64)90223-2 . Архивировано (PDF) из оригинала 9 октября 2022 г.
  8. ^ Соломонов, Рэй (июнь 1964 г.). «Формальная теория индуктивного вывода, часть II» (PDF) . Информация и контроль . 7 (2): 224–254. дои : 10.1016/S0019-9958(64)90131-7 . Архивировано (PDF) из оригинала 9 октября 2022 г.
  9. ^ Колмогоров А.Н. (1965). «Три подхода к количественному определению информации» . Проблемы Информ. Передача инфекции . 1 (1): 1–7. Архивировано из оригинала 28 сентября 2011 года.
  10. ^ Чайтин, Грегори Дж. (1969). «О простоте и быстродействии программ вычисления бесконечных наборов натуральных чисел». Журнал АКМ . 16 (3): 407–422. CiteSeerX   10.1.1.15.3821 . дои : 10.1145/321526.321530 . S2CID   12584692 .
  11. ^ Колмогоров, А. (1968). «Логические основы теории информации и теории вероятностей». Транзакции IEEE по теории информации . 14 (5): 662–664. дои : 10.1109/TIT.1968.1054210 . S2CID   11402549 .
  12. ^ Ли, Мин; Витаньи, Пол (2008). «Предварительные сведения». Введение в колмогоровскую сложность и ее приложения . Тексты по информатике. стр. 1 –99. дои : 10.1007/978-0-387-49820-1_1 . ISBN  978-0-387-33998-6 .
  13. ^ Бургин, М. (1982). «Обобщенная колмогоровская сложность и двойственность в теории вычислений» . Извещения Российской академии наук . 25 (3): 19–23.
  14. ^ Хаттер, Маркус (2005). Универсальный искусственный интеллект: последовательные решения, основанные на алгоритмической вероятности . Тексты по теоретической информатике. Берлин Нью-Йорк: Спрингер. ISBN  978-3-540-26877-2 .
  15. ^ Изложено без доказательства в: П. Б. Мильтерсен (2005). «Курсовые заметки по сжатию данных — колмогоровская сложность» (PDF) . п. 7. Архивировано из оригинала (PDF) 9 сентября 2009 г.
  16. ^ Звонкин А.; Л. Левин (1970). «Сложность конечных объектов и развитие концепций информации и случайности средствами теории алгоритмов» (PDF) . Российские математические обзоры . 25 (6): 83–124. Бибкод : 1970РуМаС..25...83З . дои : 10.1070/RM1970v025n06ABEH001269 . S2CID   250850390 .
  17. ^ Грегори Дж. Чайтин (июль 1974 г.). «Информационные ограничения формальных систем» (PDF) . Журнал АКМ . 21 (3): 403–434. дои : 10.1145/321832.321839 . S2CID   2142553 . Здесь: Thm.4.1b
  18. ^ Калуде, Кристиан С. (12 сентября 2002 г.). Информация и случайность: алгоритмический взгляд . Спрингер. ISBN  9783540434665 .
  19. ^ Уоллес, CS; Доу, Д.Л. (1999). «Минимальная длина сообщения и колмогоровская сложность». Компьютерный журнал . 42 (4): 270–283. CiteSeerX   10.1.1.17.321 . дои : 10.1093/comjnl/42.4.270 .
  20. ^ Есть 2 н битовые строки длины n , но только 2 н -1 более короткие битовые строки, следовательно, результат сжатия не превышает 1.
  21. ^ Мартин-Лёф, Пер (1966). «Определение случайных последовательностей» . Информация и контроль . 9 (6): 602–619. дои : 10.1016/s0019-9958(66)80018-9 .
  22. ^ Галатоло, Стефано; Хойруп, Матье; Рохас, Кристобаль (2010). «Эффективная символическая динамика, случайные точки, статистическое поведение, сложность и энтропия» (PDF) . Информация и вычисления . 208 : 23–41. arXiv : 0801.0209 . дои : 10.1016/j.ic.2009.05.001 . S2CID   5555443 . Архивировано (PDF) из оригинала 9 октября 2022 г.
  23. ^ Алексей Кальченко (2004). «Алгоритмы оценки информационной дистанции с применением к биоинформатике и лингвистике». arXiv : cs.CC/0404039 .
  24. ^ Перейти обратно: а б Обложка, Томас М.; Томас, Джой А. (2006). Элементы теории информации (2-е изд.). Уайли-Интерсайенс. ISBN  0-471-24195-4 .
  25. ^ Чайтин, Г.; Арсланов А.; Калуде, Кристиан С. (1 сентября 1995 г.). «Сложность размера программы вычисляет проблему остановки». Бык. ЕАТКС . S2CID   39718973 .
  26. ^ Ли, Мин; Витаньи, Пол (2008). «Введение в колмогоровскую сложность и ее приложения» . Тексты по информатике . Упражнение 2.7.7. дои : 10.1007/978-0-387-49820-1 . ISBN  978-0-387-33998-6 . ISSN   1868-0941 .
  27. ^ Йорма Риссанен (2007). Информация и сложность статистического моделирования . Спрингер С.п. 53 . ISBN  978-0-387-68812-1 .
  28. ^ Мин Ли; Пол МБ Витаньи (2009). Введение в колмогоровскую сложность и ее приложения . Спрингер. С. 105–106 . ISBN  978-0-387-49820-1 .
  29. ^ Мин Ли; Пол МБ Витаньи (2009). Введение в колмогоровскую сложность и ее приложения . Спрингер. п. 119 . ISBN  978-0-387-49820-1 .
  30. ^ Витаньи, Пол МБ (2013). «Условная колмогоровская сложность и универсальная вероятность» . Теоретическая информатика . 501 : 93–100. arXiv : 1206.0983 . дои : 10.1016/j.tcs.2013.07.009 . S2CID   12085503 .

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]