Колмогоровская сложность — различия между версиями
(→Примеры) |
(→Примеры) |
||
| Строка 34: | Строка 34: | ||
{{Теорема | {{Теорема | ||
|statement = Существует оптимальный декомпрессор <tex>U</tex>, который лучше всех остальных. | |statement = Существует оптимальный декомпрессор <tex>U</tex>, который лучше всех остальных. | ||
| − | |proof = Пусть <tex>p</tex> {{---}} некоторая строка, <tex>|p| = n</tex>. Обозначим за <tex>\hat{p}</tex> строку <tex>p_1 p_1 p_2 p_2 | + | |proof = Пусть <tex>p</tex> {{---}} некоторая строка, <tex>|p| = n</tex>. Обозначим за <tex>\hat{p}</tex> строку <tex>p_1 p_1 p_2 p_2 \dots p_n p_n 0 1</tex> (мы удвоили каждый бит строки <tex>p</tex> и добавили в конце <tex>01</tex>).<br> |
Оптимальный декомпрессор будет работать следующим образом: <tex>U(\hat{p}x) = \langle p \rangle(x)</tex>, т.е. он интерпретирует <tex>p</tex> как программу, а <tex>x</tex> как входные данные и запускает <tex>p</tex> на входе <tex>x</tex>. | Оптимальный декомпрессор будет работать следующим образом: <tex>U(\hat{p}x) = \langle p \rangle(x)</tex>, т.е. он интерпретирует <tex>p</tex> как программу, а <tex>x</tex> как входные данные и запускает <tex>p</tex> на входе <tex>x</tex>. | ||
Покажем, что такой декомпрессор будет лучше любого другого. <br> Пусть <tex>D</tex> {{---}} другой декомпрессор. По определению <tex>D</tex> {{---}} это алгоритм, значит есть программа, которая исполняет <tex>D</tex>. <br> | Покажем, что такой декомпрессор будет лучше любого другого. <br> Пусть <tex>D</tex> {{---}} другой декомпрессор. По определению <tex>D</tex> {{---}} это алгоритм, значит есть программа, которая исполняет <tex>D</tex>. <br> | ||
Версия 00:54, 5 января 2015
Колмогоровскую сложность (Kolmogorov complexity) можно рассматривать как способ измерения количества информации в строке.
Но как понять, какое количество информации содержит в себе строка? Один из классических способов — это подсчет количества битов (число, пропорциональное длине строки). Рассмотрим следующий пример:
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Понятно, что эту строку можно описать более компактно на естественном языке, "128 нулей", всего 9 символов.
Можем дать следующее определение. Количество информации, которое несет строка — это размер архива, полученного сжатием строки каким-то конкретным архиватором (например, LZW). Это более нетривиальная задача, но мы можем придумать строку, которая явно несет в себе мало информации, но которую архиватор тем не менее не сожмет.
Еще более сильное определение. Количество информации, которое несет строка — это размер архива, сжатого максимальным образом, самым лучшим архиватором. Но тогда встает вопрос, почему такой архиватор существует. На самом деле он есть, и в некотором смысле колмогоровская сложность строки — это размер наименьшей программы, которая печатает эту строку.
Содержание
Определения
Декомпрессор
| Определение: |
| Назовём декомпрессором алгоритм, восстанавливающий разжатый текст из сжатого. |
Примечание: для простоты мы будем рассматривать бинарный алфавит, но все утверждения мы можем обобщить на строки произвольного алфавита.
Относительно каждого декомпрессора мы можем определить понятие сложности строки:
| Определение: |
| Пусть , тогда назовем колмогоровской сложностью строки , размер минимальной строки , такой, что . Если такого не существует, тогда . |
Примеры
- , тогда
- , тогда
| Определение: |
| Будем говорить, что декомпрессор лучше, чем декомпрессор , если . |
| Теорема: |
Существует оптимальный декомпрессор , который лучше всех остальных. |
| Доказательство: |
|
Пусть — некоторая строка, . Обозначим за строку (мы удвоили каждый бит строки и добавили в конце ). |
| Определение: |
| Пусть — это оптимальный декомпрессор, тогда колмогоровская сложность . |
| Утверждение: |
Очевидно, что если и — оптимальные декомпрессоры, то |
Свойства
Тривиальные свойства
- Если — алгоритм, то
( запишем как пару — информация об алгоритме и информация о строке , по предыдущему пункту нам нужно закодировать только сложность первого аргумента, что есть константа) - Принцип несжимаемости:
(Какой бы у нас ни был архиватор, он не может все строки фиксированной длины делать меньше. Строк длины меньшей, чем — , мы не сможем деархивировать) - — невычислимая функция.
Докажем последнее свойство:
Невычислимость
| Лемма: |
Если — вычислимая функция, такая, что , тогда . |
| Доказательство: |
|
Пусть , где , тогда — вычислимая (т.к — вычислима и ограничена), всюду определенная функция. Вспомним, что , следовательно . Отсюда: , но ясно, что при больших это неравенство не выполняется. Противоречие. |
Примечание: если функция определена только на , то лемма остается в силе с единственным отличием, что пробегает все значения из в порядке перечисления.
| Утверждение (следствие из леммы): |
невычислима. |
| Пусть вычислима. Возьмем вместо . Очевидно, что , но из принципа несжимаемости ясно, что неограничена. Противоречие. Следовательно, невычислима. |
Применение
Альтернативное доказательство теоремы Гёделя о неполноте
Г. Хайтин заметил следующее:
| Утверждение: |
В данной фиксированной системе вывода существует недоказуемое утверждение вида |
|
Выпишем множество пар утверждение доказуемо . Возможны два варианта:
|
Заметим, что во всех множествах пар все ограничены какой-то константой, следовательно существует огромное число истинных, но недоказуемых утверждений вида
Доказательство бесконечности простых чисел
| Утверждение: |
Простых чисел бесконечно много. |
| Предположим, что простых чисел конечное число. Тогда любое число , где — это некоторая константа. Возьмём наибольшей колмогоровской сложности. Тогда , но также , т.к. . Но это неравенство не будет выполняться на достаточно больших , противоречие. |