Колмогоровская сложность — различия между версиями
ExileHell (обсуждение | вклад)  (→Альтернативное доказательство с использованием теоремы о рекурсии)  | 
				Shersh (обсуждение | вклад)  м (→Альтернативное доказательство с использованием теоремы о рекурсии)  | 
				||
| Строка 90: | Строка 90: | ||
====Альтернативное доказательство с использованием теоремы о рекурсии====  | ====Альтернативное доказательство с использованием теоремы о рекурсии====  | ||
| − | Функция <tex> K(x) </tex> - это минимальная длина программы <tex> p : p(\varepsilon) = x </tex>.  | + | Функция <tex> K(x) </tex> {{---}} это минимальная длина программы <tex> p : p(\varepsilon) = x </tex>.  | 
Допустим, что <tex> K </tex> вычислима, тогда напишем такую программу:  | Допустим, что <tex> K </tex> вычислима, тогда напишем такую программу:  | ||
<code>  | <code>  | ||
Версия 20:01, 7 января 2017
Колмогоровскую сложность (англ. Kolmogorov complexity) можно рассматривать как способ измерения количества информации в строке.
Но как понять, какое количество информации содержит в себе строка? Один из классических способов — это подсчет количества битов (число, пропорциональное длине строки). Рассмотрим следующий пример:
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Понятно, что эту строку можно описать более компактно на естественном языке, "128 нулей", всего 9 символов.
Можем дать следующее определение. Количество информации, которое несет строка — это размер файла, полученного сжатием строки каким-то конкретным компрессором (например, LZW). Но мы по-прежнему можем придумать строку, которая явно несет в себе мало информации, но которую компрессор тем не менее не сожмет.
Еще более сильное определение. Количество информации, которое несет строка — это размер файла, сжатого максимальным образом, самым лучшим компрессором. Но тогда встает вопрос, почему такой компрессор существует. На самом деле он есть, и в некотором смысле колмогоровская сложность строки — это размер наименьшей программы, которая печатает эту строку.
Определения
Декомпрессор
| Определение: | 
| Назовём декомпрессором (англ. decompressor) алгоритм, восстанавливающий разжатый текст из сжатого. | 
Примечание: для простоты мы будем рассматривать бинарный алфавит, но все утверждения мы можем обобщить на строки произвольного алфавита.
Относительно каждого декомпрессора мы можем определить понятие сложности строки:
| Определение: | 
| Пусть , тогда назовем колмогоровской сложностью строки , размер минимальной строки , такой, что .  Если такого не существует, тогда .  | 
Примеры
- , тогда
 - , тогда
 
| Определение: | 
| Будем говорить, что декомпрессор не хуже, чем декомпрессор , если . | 
| Теорема: | 
Существует оптимальный декомпрессор (англ. optimal decompressor) , который не хуже всех остальных.  | 
| Доказательство: | 
| 
 Пусть  — некоторая строка, . Обозначим за  строку  (мы удвоили каждый бит строки  и добавили в конце ).  | 
| Определение: | 
| Пусть — это оптимальный декомпрессор, тогда колмогоровская сложность . | 
| Утверждение: | 
Очевидно, что если  и  — оптимальные декомпрессоры, то   | 
Свойства
Тривиальные свойства
-  Если  — алгоритм, то  
( запишем как пару — информация об алгоритме и информация о строке , по предыдущему пункту нам нужно закодировать только сложность первого аргумента, что есть константа) -  Принцип несжимаемости:  
(Какой бы у нас ни был компрессор, он не может все строки фиксированной длины делать меньше. Строк длины меньшей, чем — , мы не сможем декомпрессировать) - — невычислимая функция.
 
Докажем последнее свойство:
Невычислимость
| Утверждение (Лемма): | 
Если  — вычислимая функция, такая, что , тогда .  | 
|  
 Пусть , где , тогда  — вычислимая (т.к  — вычислима и ограничена), всюду определенная функция.  Вспомним, что , следовательно . Отсюда: , но ясно, что при больших это неравенство не выполняется. Противоречие.  | 
Примечание: если функция определена только на , то лемма остается в силе с единственным отличием, что пробегает все значения из в порядке перечисления.
| Утверждение (следствие из леммы): | 
 невычислима.  | 
Пусть вычислима. Возьмем вместо . Очевидно, что , но из принципа несжимаемости ясно, что неограничена. Противоречие. Следовательно, невычислима.
, если только или — невычислима.
Альтернативное доказательство с использованием теоремы о рекурсии
Функция  — это минимальная длина программы .
Допустим, что  вычислима, тогда напишем такую программу:
foreach //перебираем слова по возрастанию длины if //теорема о рекурсии используется здесь return
Длина этой программы меньше длины минимальной программы, которая возвращает на пустом входе. Поэтому возникает противоречие. Следовательно невычислима.
Применение
Альтернативное доказательство теоремы Гёделя о неполноте
Г. Хайтин[1] заметил следующее:
| Утверждение: | 
В данной фиксированной системе вывода существует недоказуемое утверждение вида   | 
|  
 Выпишем множество пар утверждение доказуемо . Возможны два варианта: 
  | 
Заметим, что во всех множествах пар все ограничены какой-то константой, следовательно существует огромное число истинных, но недоказуемых утверждений вида
Доказательство бесконечности простых чисел
| Утверждение: | 
Простых чисел бесконечно много.  | 
| Предположим, что простых чисел конечное число. Тогда любое число , где — это некоторая константа. Возьмём наибольшей колмогоровской сложности. Тогда , но также , т.к. . Но это неравенство не будет выполняться на достаточно больших , противоречие. | 
См. также
Примечания
- ↑ Грегори Джон Хайтин — аргентино-американский математик и информатик, внёс вклад в метаматематику, совместно с Андреем Колмогоровым считается основателем алгоритмической теории информации.