Колмогоровская сложность — различия между версиями
(→Примеры) |
|||
Строка 60: | Строка 60: | ||
===Тривиальные свойства=== | ===Тривиальные свойства=== | ||
* <tex>KS(x) \leqslant |x| + c</tex> | * <tex>KS(x) \leqslant |x| + c</tex> | ||
− | * <tex>KS(x,y) \leqslant KS(x) + KS(y) + 2\lceil log_2 KS(x) \rceil + 2</tex> | + | * <tex>KS(x,y) \leqslant KS(x) + KS(y) + 2\lceil \log_2 KS(x) \rceil + 2</tex> |
* Если <tex>A</tex> {{---}} алгоритм, то <tex>KS(A(x)) \leqslant KS(x) + c_A</tex> <br> (<tex>A(x)</tex> запишем как пару {{---}} информация об алгоритме <tex>A</tex> и информация о строке <tex>x</tex>, по предыдущему пункту нам нужно закодировать только сложность первого аргумента, что есть константа) | * Если <tex>A</tex> {{---}} алгоритм, то <tex>KS(A(x)) \leqslant KS(x) + c_A</tex> <br> (<tex>A(x)</tex> запишем как пару {{---}} информация об алгоритме <tex>A</tex> и информация о строке <tex>x</tex>, по предыдущему пункту нам нужно закодировать только сложность первого аргумента, что есть константа) | ||
* '''Принцип несжимаемости:''' <tex>\exists x \in \{0,1\}^n : KS(x) \geqslant n</tex> <br> (Какой бы у нас ни был архиватор, он не может все строки фиксированной длины делать меньше. Строк длины меньшей, чем <tex>n</tex> {{---}} <tex>(2^n-1)</tex>, мы не сможем деархивировать) | * '''Принцип несжимаемости:''' <tex>\exists x \in \{0,1\}^n : KS(x) \geqslant n</tex> <br> (Какой бы у нас ни был архиватор, он не может все строки фиксированной длины делать меньше. Строк длины меньшей, чем <tex>n</tex> {{---}} <tex>(2^n-1)</tex>, мы не сможем деархивировать) | ||
Строка 72: | Строка 72: | ||
|proof= | |proof= | ||
Пусть <tex>A(n) = \arg\min \limits_{x} f(x) \geqslant n</tex>, где <tex>n \in N</tex>, тогда <tex>A(n)</tex> {{---}} вычислимая (т.к <tex>f(x)</tex> {{---}} вычислима и ограничена), всюду определенная функция. <br> | Пусть <tex>A(n) = \arg\min \limits_{x} f(x) \geqslant n</tex>, где <tex>n \in N</tex>, тогда <tex>A(n)</tex> {{---}} вычислимая (т.к <tex>f(x)</tex> {{---}} вычислима и ограничена), всюду определенная функция. <br> | ||
− | По свойству невозрастания <tex>KS(x)</tex> при алгоритмических преобразованиях, <tex>KS(A(n)) \leqslant KS(n) + c_1 \leqslant log_2 n + c_2</tex>. <br> Вспомним, что <tex>f(x) \leqslant KS(x)</tex>, следовательно <tex>KS(A(n)) \geqslant f(A(n)) \geqslant n</tex>. <br> Отсюда: <tex>\forall n : log_2 n + c_2 \geqslant n</tex>, но ясно, что при больших <tex>n</tex> это неравенство не выполняется. Противоречие. | + | По свойству невозрастания <tex>KS(x)</tex> при алгоритмических преобразованиях, <tex>KS(A(n)) \leqslant KS(n) + c_1 \leqslant \log_2 n + c_2</tex>. <br> Вспомним, что <tex>f(x) \leqslant KS(x)</tex>, следовательно <tex>KS(A(n)) \geqslant f(A(n)) \geqslant n</tex>. <br> Отсюда: <tex>\forall n : \log_2 n + c_2 \geqslant n</tex>, но ясно, что при больших <tex>n</tex> это неравенство не выполняется. Противоречие. |
}} | }} | ||
<hr> | <hr> | ||
Строка 101: | Строка 101: | ||
|statement= Простых чисел бесконечно много. | |statement= Простых чисел бесконечно много. | ||
|proof= | |proof= | ||
− | Предположим, что простых чисел конечное число. Тогда любое число <tex>n = {p_1}^{\alpha_1}{p_2}^{\alpha_2}\dots{p_k}^{\alpha_k}</tex>, где <tex>k</tex> {{---}} это некоторая константа. Возьмём <tex>n</tex> наибольшей колмогоровской сложности. Тогда <tex>KS(n) \geqslant log_2 n</tex>, но также <tex>KS(n) \leqslant 2 k log_2 log_2 n + c</tex>, т.к. <tex>\alpha_i \leqslant log_2 n</tex>. Но это неравенство не будет выполняться на достаточно больших <tex>n</tex>, противоречие. | + | Предположим, что простых чисел конечное число. Тогда любое число <tex>n = {p_1}^{\alpha_1}{p_2}^{\alpha_2}\dots{p_k}^{\alpha_k}</tex>, где <tex>k</tex> {{---}} это некоторая константа. Возьмём <tex>n</tex> наибольшей колмогоровской сложности. Тогда <tex>KS(n) \geqslant \log_2 n</tex>, но также <tex>KS(n) \leqslant 2 k \log_2 \log_2 n + c</tex>, т.к. <tex>\alpha_i \leqslant \log_2 n</tex>. Но это неравенство не будет выполняться на достаточно больших <tex>n</tex>, противоречие. |
}} | }} | ||
Версия 00:55, 5 января 2015
Колмогоровскую сложность (Kolmogorov complexity) можно рассматривать как способ измерения количества информации в строке.
Но как понять, какое количество информации содержит в себе строка? Один из классических способов — это подсчет количества битов (число, пропорциональное длине строки). Рассмотрим следующий пример:
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Понятно, что эту строку можно описать более компактно на естественном языке, "128 нулей", всего 9 символов.
Можем дать следующее определение. Количество информации, которое несет строка — это размер архива, полученного сжатием строки каким-то конкретным архиватором (например, LZW). Это более нетривиальная задача, но мы можем придумать строку, которая явно несет в себе мало информации, но которую архиватор тем не менее не сожмет.
Еще более сильное определение. Количество информации, которое несет строка — это размер архива, сжатого максимальным образом, самым лучшим архиватором. Но тогда встает вопрос, почему такой архиватор существует. На самом деле он есть, и в некотором смысле колмогоровская сложность строки — это размер наименьшей программы, которая печатает эту строку.
Содержание
Определения
Декомпрессор
Определение: |
Назовём декомпрессором | алгоритм, восстанавливающий разжатый текст из сжатого.
Примечание: для простоты мы будем рассматривать бинарный алфавит, но все утверждения мы можем обобщить на строки произвольного алфавита.
Относительно каждого декомпрессора мы можем определить понятие сложности строки:
Определение: |
Пусть Если такого не существует, тогда . | , тогда назовем колмогоровской сложностью строки , размер минимальной строки , такой, что .
Примеры
- , тогда
- , тогда
Определение: |
Будем говорить, что декомпрессор | лучше, чем декомпрессор , если .
Теорема: |
Существует оптимальный декомпрессор , который лучше всех остальных. |
Доказательство: |
Пусть |
Определение: |
Пусть | — это оптимальный декомпрессор, тогда колмогоровская сложность .
Утверждение: |
Очевидно, что если и — оптимальные декомпрессоры, то |
Свойства
Тривиальные свойства
- Если
( запишем как пару — информация об алгоритме и информация о строке , по предыдущему пункту нам нужно закодировать только сложность первого аргумента, что есть константа)
— алгоритм, то - Принцип несжимаемости:
(Какой бы у нас ни был архиватор, он не может все строки фиксированной длины делать меньше. Строк длины меньшей, чем — , мы не сможем деархивировать) - — невычислимая функция.
Докажем последнее свойство:
Невычислимость
Лемма: |
Если — вычислимая функция, такая, что , тогда . |
Доказательство: |
Пусть Вспомним, что , следовательно . Отсюда: , но ясно, что при больших это неравенство не выполняется. Противоречие. |
Примечание: если функция
определена только на , то лемма остается в силе с единственным отличием, что пробегает все значения из в порядке перечисления.Утверждение (следствие из леммы): |
невычислима. |
Пусть | вычислима. Возьмем вместо . Очевидно, что , но из принципа несжимаемости ясно, что неограничена. Противоречие. Следовательно, невычислима.
Применение
Альтернативное доказательство теоремы Гёделя о неполноте
Г. Хайтин заметил следующее:
Утверждение: |
В данной фиксированной системе вывода существует недоказуемое утверждение вида |
Выпишем множество пар утверждение доказуемо . Возможны два варианта:
|
Заметим, что во всех множествах пар все
ограничены какой-то константой, следовательно существует огромное число истинных, но недоказуемых утверждений видаДоказательство бесконечности простых чисел
Утверждение: |
Простых чисел бесконечно много. |
Предположим, что простых чисел конечное число. Тогда любое число | , где — это некоторая константа. Возьмём наибольшей колмогоровской сложности. Тогда , но также , т.к. . Но это неравенство не будет выполняться на достаточно больших , противоречие.