<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=95.140.92.34&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=95.140.92.34&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/95.140.92.34"/>
		<updated>2026-04-11T14:17:49Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BB%D0%BC%D0%BE%D0%B3%D0%BE%D1%80%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56295</id>
		<title>Колмогоровская сложность</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BB%D0%BC%D0%BE%D0%B3%D0%BE%D1%80%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;diff=56295"/>
				<updated>2016-11-25T21:07:18Z</updated>
		
		<summary type="html">&lt;p&gt;95.140.92.34: /* Примеры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Колмогоровскую сложность''' (англ. ''Kolmogorov complexity'') можно рассматривать как способ измерения количества информации в строке.&lt;br /&gt;
&lt;br /&gt;
Но как понять, какое ''количество информации'' содержит в себе строка? Один из классических способов {{---}} это подсчет количества битов (число, пропорциональное длине строки). Рассмотрим следующий пример:&lt;br /&gt;
&amp;lt;pre&amp;gt;00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
Понятно, что эту строку можно описать более компактно на естественном языке, &amp;quot;128 нулей&amp;quot;, всего 9 символов.&lt;br /&gt;
&lt;br /&gt;
Можем дать следующее определение. ''Количество информации'', которое несет строка {{---}} это размер файла, полученного сжатием строки каким-то конкретным компрессором (например, [[Алгоритм LZW|LZW]]). Но мы по-прежнему можем придумать строку, которая явно несет в себе мало информации, но которую компрессор тем не менее не сожмет.&lt;br /&gt;
&lt;br /&gt;
Еще более сильное определение. ''Количество информации'', которое несет строка {{---}} это размер файла, сжатого максимальным образом, самым лучшим компрессором. Но тогда встает вопрос, почему такой компрессор существует. На самом деле он есть, и в некотором смысле '''колмогоровская сложность''' строки {{---}} это размер наименьшей программы, которая печатает эту строку.&lt;br /&gt;
&lt;br /&gt;
==Определения==&lt;br /&gt;
===Декомпрессор===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Назовём '''декомпрессором''' (англ. ''decompressor'') &amp;lt;tex&amp;gt;D : \{0, 1\}^* \to&lt;br /&gt;
\left[\begin{array}{l}\{0, 1\}^* \\&lt;br /&gt;
\bot\end{array}\right.&amp;lt;/tex&amp;gt; алгоритм, восстанавливающий разжатый текст из сжатого.&lt;br /&gt;
}}&lt;br /&gt;
Примечание: для простоты мы будем рассматривать бинарный алфавит, но все утверждения мы можем обобщить на строки произвольного алфавита.&lt;br /&gt;
&lt;br /&gt;
Относительно каждого декомпрессора мы можем определить понятие сложности строки:&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;x \in \{0, 1\}^* &amp;lt;/tex&amp;gt;, тогда назовем '''колмогоровской сложностью''' строки &amp;lt;tex&amp;gt;K_D(x) = \min \limits_{y}\ \{|y|\ |\ D(y) = x \}&amp;lt;/tex&amp;gt;, размер минимальной строки &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, такой, что &amp;lt;tex&amp;gt;D(y) = x&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt; Если такого &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; не существует, тогда &amp;lt;tex&amp;gt;K_D(x) = +\infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Примеры===&lt;br /&gt;
* &amp;lt;tex&amp;gt;D(x) = x&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;K_D(x) = |x|&amp;lt;/tex&amp;gt; &lt;br /&gt;
* &amp;lt;tex&amp;gt;D(x) = xx&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;K_D(0000) = 2, K_D(01) = +\infty &amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Будем говорить, что декомпрессор &amp;lt;tex&amp;gt;D_1&amp;lt;/tex&amp;gt; не хуже, чем декомпрессор &amp;lt;tex&amp;gt;D_2&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\exists c &amp;gt; 0:\forall x \in \{0, 1\}^*\ K_{D_1}(x) \leqslant K_{D_2}(x) + c&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement = Существует '''оптимальный декомпрессор''' (англ. ''optimal decompressor'') &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt;, который не хуже всех остальных.&lt;br /&gt;
|proof = Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; {{---}} некоторая строка, &amp;lt;tex&amp;gt;|p| = n&amp;lt;/tex&amp;gt;. Обозначим за &amp;lt;tex&amp;gt;\hat{p}&amp;lt;/tex&amp;gt; строку &amp;lt;tex&amp;gt;p_1 p_1 p_2 p_2 \dots p_n p_n 0 1&amp;lt;/tex&amp;gt; (мы удвоили каждый бит строки &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; и добавили в конце &amp;lt;tex&amp;gt;01&amp;lt;/tex&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
Оптимальный декомпрессор будет работать следующим образом: &amp;lt;tex&amp;gt;U(\hat{p}x) = \langle p \rangle(x)&amp;lt;/tex&amp;gt;, т.е. он интерпретирует &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; как программу, а &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; как входные данные и запускает &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; на входе &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Покажем, что такой декомпрессор будет не хуже любого другого. &amp;lt;br&amp;gt; Пусть &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; {{---}} другой декомпрессор. По определению &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; {{---}} это алгоритм, значит есть программа, которая исполняет &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; {{---}} номер алгоритма &amp;lt;tex&amp;gt;D,\ p = \#D&amp;lt;/tex&amp;gt;. Тогда:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;K_U(x) \leqslant K_D(x) + 2|p| + 2&amp;lt;/tex&amp;gt;, т.к. &amp;lt;tex&amp;gt;K_D(x)&amp;lt;/tex&amp;gt; достигается на &amp;lt;tex&amp;gt;D(y) = U(\hat{p}y) = x&amp;lt;/tex&amp;gt;, т.е. для этого &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; есть строка &amp;lt;tex&amp;gt;\hat{p}y&amp;lt;/tex&amp;gt;, которая даёт тот же самый результат и имеет длину не больше, чем на &amp;lt;tex&amp;gt;2|p| + 2&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Нетрудно заметить, что &amp;lt;tex&amp;gt;2|p| + 2&amp;lt;/tex&amp;gt; зависит только от &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt;, но никак не зависит от &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, т.е. является константой. &amp;lt;br&amp;gt;&lt;br /&gt;
Следовательно, &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; {{---}} оптимальный декомпрессор.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; {{---}} это оптимальный декомпрессор, тогда '''колмогоровская сложность''' &amp;lt;tex&amp;gt;KS(x) = K_D(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement= Очевидно, что если &amp;lt;tex&amp;gt;D_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;D_2&amp;lt;/tex&amp;gt; {{---}} оптимальные декомпрессоры, то &amp;lt;tex&amp;gt;\exists c_1, c_2: \forall x: &lt;br /&gt;
\left\{&lt;br /&gt;
	\begin{array}{l l}&lt;br /&gt;
		K_{D_1}(x) \leqslant K_{D_2}(x) + c_1 \\&lt;br /&gt;
                K_{D_2}(x) \leqslant K_{D_1}(x) + c_2&lt;br /&gt;
	\end{array}&lt;br /&gt;
	\right.&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Свойства==&lt;br /&gt;
===Тривиальные свойства===&lt;br /&gt;
* &amp;lt;tex&amp;gt;KS(x) \leqslant |x| + c&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;KS(x,y) \leqslant KS(x) + KS(y) + 2\lceil \log_2 KS(x) \rceil + 2&amp;lt;/tex&amp;gt; &lt;br /&gt;
* Если &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; {{---}} алгоритм, то &amp;lt;tex&amp;gt;KS(A(x)) \leqslant KS(x) + c_A&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; (&amp;lt;tex&amp;gt;A(x)&amp;lt;/tex&amp;gt; запишем как пару {{---}} информация об алгоритме &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и информация о строке &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, по предыдущему пункту нам нужно закодировать только сложность первого аргумента, что есть константа)&lt;br /&gt;
* '''Принцип несжимаемости:''' &amp;lt;tex&amp;gt;\exists x \in \{0,1\}^n : KS(x) \geqslant n&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; (Какой бы у нас ни был компрессор, он не может все строки фиксированной длины делать меньше. Строк длины меньшей, чем &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;(2^n-1)&amp;lt;/tex&amp;gt;, мы не сможем декомпрессировать)&lt;br /&gt;
* &amp;lt;tex&amp;gt;KS&amp;lt;/tex&amp;gt; {{---}} невычислимая функция.&lt;br /&gt;
&lt;br /&gt;
Докажем последнее свойство:&lt;br /&gt;
===Невычислимость===&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;f:\{0,1\}^* \rightarrow  N&amp;lt;/tex&amp;gt; {{---}} [[Вычислимые функции|вычислимая функция]], такая, что &amp;lt;tex&amp;gt;\forall x : f(x) \leqslant KS(x)&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;f = O(1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A(n) = \arg\min \limits_{x} f(x) \geqslant n&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n \in N&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;A(n)&amp;lt;/tex&amp;gt; {{---}} вычислимая (т.к &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt; {{---}} вычислима и ограничена), всюду определенная функция. &amp;lt;br&amp;gt;&lt;br /&gt;
По свойству невозрастания &amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt; при алгоритмических преобразованиях, &amp;lt;tex&amp;gt;KS(A(n)) \leqslant KS(n) + c_1 \leqslant \log_2 n + c_2&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt; Вспомним, что &amp;lt;tex&amp;gt;f(x) \leqslant KS(x)&amp;lt;/tex&amp;gt;, следовательно &amp;lt;tex&amp;gt;KS(A(n)) \geqslant f(A(n)) \geqslant n&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt; Отсюда: &amp;lt;tex&amp;gt;\forall n : \log_2 n + c_2 \geqslant n&amp;lt;/tex&amp;gt;, но ясно, что при больших &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; это неравенство не выполняется. Противоречие.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
Примечание: если функция &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt; определена только на &amp;lt;tex&amp;gt;M \subset \{0,1\}^*&amp;lt;/tex&amp;gt;, то лемма остается в силе с единственным отличием, что &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; пробегает все значения из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; в порядке перечисления.&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|about=следствие из леммы&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt; невычислима.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt; вычислима. Возьмем вместо &amp;lt;tex&amp;gt;f(x)\  KS(x)&amp;lt;/tex&amp;gt;. Очевидно, что &amp;lt;tex&amp;gt;KS(x) \leqslant KS(x)&amp;lt;/tex&amp;gt;, но из принципа несжимаемости ясно, что &amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt; неограничена. Противоречие. Следовательно, &amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt; невычислима.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Применение==&lt;br /&gt;
===Альтернативное доказательство теоремы Гёделя о неполноте===&lt;br /&gt;
Г. Хайтин&amp;lt;ref name=chaitin/&amp;gt; заметил следующее:&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement= В данной фиксированной системе вывода существует недоказуемое утверждение вида &amp;lt;tex&amp;gt;KS(x) \geqslant n&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Выпишем множество пар &amp;lt;tex&amp;gt;\{(x,n) |\ &amp;lt;/tex&amp;gt; утверждение &amp;lt;tex&amp;gt;KS(x) \geqslant n&amp;lt;/tex&amp;gt; доказуемо &amp;lt;tex&amp;gt;\}&amp;lt;/tex&amp;gt;. Возможны два варианта:&lt;br /&gt;
* Все &amp;lt;tex&amp;gt;n \leqslant n_0&amp;lt;/tex&amp;gt;. Это означает, что для всех строк будет доказуемо только &amp;lt;tex&amp;gt;KS(x) \geqslant n_0&amp;lt;/tex&amp;gt;. Но т.к. мы знаем, что &amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt; неограничена, то существуют истинные, но недоказуемые утверждения.&lt;br /&gt;
* В этом множестве встречаются сколь угодно большие &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, т.е. есть бесконечная последовательность &amp;lt;tex&amp;gt;(x_i, n_i)&amp;lt;/tex&amp;gt;, в которой &amp;lt;tex&amp;gt;n_{i+1} &amp;gt; n_i&amp;lt;/tex&amp;gt;. Заметим, что эта последовательность задает график какой-то функции. А если график функции перечислим, то сама функция является вычислимой. Также заметим, что всегда выполняется условие &amp;lt;tex&amp;gt;KS(x_i) \geqslant n_i&amp;lt;/tex&amp;gt;, т.е. эта вычислимая функция является нижней оценкой на &amp;lt;tex&amp;gt;KS(x)&amp;lt;/tex&amp;gt;, а мы знаем, что такие функции обязаны быть ограниченными. Противоречие.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что во всех множествах пар все &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; ограничены какой-то константой, следовательно существует огромное число истинных, но недоказуемых утверждений вида &amp;lt;tex&amp;gt;KS(x) \geqslant n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Доказательство бесконечности простых чисел===&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement= Простых чисел бесконечно много.&lt;br /&gt;
|proof=&lt;br /&gt;
Предположим, что простых чисел конечное число. Тогда любое число &amp;lt;tex&amp;gt;n = {p_1}^{\alpha_1}{p_2}^{\alpha_2}\dots{p_k}^{\alpha_k}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; {{---}} это некоторая константа. Возьмём &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; наибольшей колмогоровской сложности. Тогда &amp;lt;tex&amp;gt;KS(n) \geqslant \log_2 n&amp;lt;/tex&amp;gt;, но также &amp;lt;tex&amp;gt;KS(n) \leqslant 2 k \log_2 \log_2 n + c&amp;lt;/tex&amp;gt;, т.к. &amp;lt;tex&amp;gt;\alpha_i \leqslant \log_2 n&amp;lt;/tex&amp;gt;. Но это неравенство не будет выполняться на достаточно больших &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, противоречие. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также == &lt;br /&gt;
* [[Busy beaver]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=chaitin&amp;gt; [https://ru.wikipedia.org/wiki/%D0%A5%D0%B0%D0%B9%D1%82%D0%B8%D0%BD,_%D0%93%D1%80%D0%B5%D0%B3%D0%BE%D1%80%D0%B8 Грегори Джон Хайтин] {{---}} аргентино-американский математик и информатик, внёс вклад в метаматематику, совместно с Андреем Колмогоровым считается основателем алгоритмической теории информации. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [https://www.lektorium.tv/lecture/13494?id=13494 Лекция Дмитрия Ицыксона в CS центре]&lt;br /&gt;
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%BC%D0%BE%D0%B3%D0%BE%D1%80%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C Wikipedia — Колмогоровская сложность]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Теория вычислимости]]&lt;/div&gt;</summary>
		<author><name>95.140.92.34</name></author>	</entry>

	</feed>