<?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=178.130.42.66&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=178.130.42.66&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/178.130.42.66"/>
		<updated>2026-06-11T14:14:54Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D0%B4%D0%BD%D0%B5%D1%80%D0%B0&amp;diff=23185</id>
		<title>Теорема Ладнера</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D0%B0%D0%B4%D0%BD%D0%B5%D1%80%D0%B0&amp;diff=23185"/>
				<updated>2012-06-01T19:44:05Z</updated>
		
		<summary type="html">&lt;p&gt;178.130.42.66: Андрей, там определяется (n+1) через n, посмотри внимательнее.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Теорема Ладнера''' (Ladner's Theorem) утверждает, что если [[Класс P|P]] не совпадает с [[Класс NP|NP]], то существует язык, принадлежащий &amp;lt;tex&amp;gt;\mathrm{NP}&amp;lt;/tex&amp;gt;, но не являющийся полиномиальным и [[NP-полнота|NP-полным]].&lt;br /&gt;
&lt;br /&gt;
== Доказательство ==&lt;br /&gt;
&lt;br /&gt;
Предположим, что &amp;lt;tex&amp;gt;\mathrm{P} \neq \mathrm{NP}&amp;lt;/tex&amp;gt;. Из этого следует, что &amp;lt;tex&amp;gt;\mathrm{NP}&amp;lt;/tex&amp;gt;-полный язык (например, &amp;lt;tex&amp;gt;\mathrm{SAT}&amp;lt;/tex&amp;gt;) нельзя свести по Карпу к полиномиальному. Будем искать язык &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, удовлетворяющий следующим условиям:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt;A \in \mathrm{P}&amp;lt;/tex&amp;gt; (что влечёт за собой &amp;lt;tex&amp;gt;\mathrm{SAT} \cap A \in \mathrm{NP}&amp;lt;/tex&amp;gt;);&lt;br /&gt;
# &amp;lt;tex&amp;gt;\mathrm{SAT} \cap A \not \in \mathrm{P}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\mathrm{SAT} \not \le \mathrm{SAT} \cap A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если такой язык существует, то &amp;lt;tex&amp;gt;L = \mathrm{SAT} \cap A&amp;lt;/tex&amp;gt; является искомым примером множества&lt;br /&gt;
из &amp;lt;tex&amp;gt;\mathrm{NP} \setminus (\mathrm{P} \cup \mathrm{NPC})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;M_1, \ldots, M_n, \ldots&amp;lt;/tex&amp;gt; — все машины Тьюринга из &amp;lt;tex&amp;gt;\tilde{\mathrm{P}}&amp;lt;/tex&amp;gt;, причём &amp;lt;tex&amp;gt;T(M_i(x)) \le |x|^i&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;x \in \Sigma^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;f_1, \ldots, f_n, \ldots&amp;lt;/tex&amp;gt; — аналогичное множество полиномиальных функций: &amp;lt;tex&amp;gt;T(f_i(x)) \le |x|^i&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;x \in \Sigma^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для простоты будем считать, что &amp;lt;tex&amp;gt;|\Sigma| = 2&amp;lt;/tex&amp;gt;. Построим такую неубывающую функцию &amp;lt;tex&amp;gt;g \in \tilde{\mathrm{P}}&amp;lt;/tex&amp;gt;, что для &amp;lt;tex&amp;gt;A = \{x \in \Sigma^*: g(|x|) \% 2 = 0\}&amp;lt;/tex&amp;gt; выполняются три названных свойства.&lt;br /&gt;
&lt;br /&gt;
=== Построение &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Определим &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; рекурсивно. Установим &amp;lt;tex&amp;gt;g(0) = g(1) = 1&amp;lt;/tex&amp;gt;. Для &amp;lt;tex&amp;gt;n \ge 1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;log_2^{g(n)} n \ge n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;g(n+1) := g(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Иначе &amp;lt;tex&amp;gt; n &amp;gt; log_2^{g(n)} n \ge log_2 n&amp;lt;/tex&amp;gt;; значения &amp;lt;tex&amp;gt;g(m)&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;m \le log_2 n&amp;lt;/tex&amp;gt; уже известны.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;g(n) = 2i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
 for &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;|x| \le log_2 n&amp;lt;/tex&amp;gt;&lt;br /&gt;
   if &amp;lt;tex&amp;gt;M_i(x)&amp;lt;/tex&amp;gt; and (&amp;lt;tex&amp;gt;g(|x|) \% 2 = 1&amp;lt;/tex&amp;gt; or &amp;lt;tex&amp;gt;x \not \in \mathrm{SAT})&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;g(n+1) := g(n)+1&amp;lt;/tex&amp;gt;, return&lt;br /&gt;
   if &amp;lt;tex&amp;gt;! M_i(x)&amp;lt;/tex&amp;gt; and (&amp;lt;tex&amp;gt;g(|x|) \% 2 = 0&amp;lt;/tex&amp;gt; and &amp;lt;tex&amp;gt;x \in \mathrm{SAT})&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;g(n+1) := g(n)+1&amp;lt;/tex&amp;gt;, return&lt;br /&gt;
   &amp;lt;tex&amp;gt;g(n+1) := g(n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;g(n) = 2i + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
 for &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;|x| \le log_2 n, |f_i(x)| \le log_2 n&amp;lt;/tex&amp;gt;&lt;br /&gt;
   if &amp;lt;tex&amp;gt;x \in \mathrm{SAT}&amp;lt;/tex&amp;gt; and (&amp;lt;tex&amp;gt;g(|f_i(x)|) \% 2 = 1&amp;lt;/tex&amp;gt; or &amp;lt;tex&amp;gt;f_i(x) \not \in \mathrm{SAT})&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;g(n+1) := g(n)+1&amp;lt;/tex&amp;gt;, return&lt;br /&gt;
   if &amp;lt;tex&amp;gt;x \not \in \mathrm{SAT}&amp;lt;/tex&amp;gt; and (&amp;lt;tex&amp;gt;g(|f_i(x)|) \% 2 = 0&amp;lt;/tex&amp;gt; and &amp;lt;tex&amp;gt;f_i(x) \in \mathrm{SAT})&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;g(n+1) := g(n)+1&amp;lt;/tex&amp;gt;, return&lt;br /&gt;
   &amp;lt;tex&amp;gt;g(n+1) := g(n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Утверждается, что для такой функции &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; язык &amp;lt;tex&amp;gt;A = \{x \in \Sigma^*: g(|x|) \% 2 = 0\}&amp;lt;/tex&amp;gt; является искомым.&lt;br /&gt;
&lt;br /&gt;
=== Корректность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Проверим выполнение второго и третьего свойств языка &amp;lt;tex&amp;gt;L = \mathrm{SAT} \cap A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Пусть &amp;lt;tex&amp;gt;g(n)&amp;lt;/tex&amp;gt; не имеет предела при &amp;lt;tex&amp;gt;n \to \infty&amp;lt;/tex&amp;gt;. Значит, для любой &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; существует элемент, на котором &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; «ошибается»; аналогично, для любой полиномиальной функции &amp;lt;tex&amp;gt;f_i&amp;lt;/tex&amp;gt; существует элемент, на котором &amp;lt;tex&amp;gt;f_i&amp;lt;/tex&amp;gt; неверно сводит &amp;lt;tex&amp;gt;\mathrm{SAT}&amp;lt;/tex&amp;gt; к &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Оба свойства выполнены.&lt;br /&gt;
&lt;br /&gt;
* Пусть &amp;lt;tex&amp;gt;\lim_{n \to +\infty} g(n) = 2i&amp;lt;/tex&amp;gt;. Значит, в нашем множестве существует машина Тьюринга &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt;, распознающая &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\forall x M_i(x) = (g(|x|) \% 2 = 0 \cap x \in \mathrm{SAT})&amp;lt;/tex&amp;gt;. С одной стороны, &amp;lt;tex&amp;gt;M_i&amp;lt;/tex&amp;gt; работает за полином, и &amp;lt;tex&amp;gt;L \in \mathrm{P}&amp;lt;/tex&amp;gt;. С другой стороны, по определению &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; различается с &amp;lt;tex&amp;gt;\mathrm{SAT}&amp;lt;/tex&amp;gt; в конечном числе элементов, значит, &amp;lt;tex&amp;gt;\mathrm{SAT} \le L&amp;lt;/tex&amp;gt;. Получено противоречие с предположением &amp;lt;tex&amp;gt;\mathrm{P} \neq \mathrm{NP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Пусть &amp;lt;tex&amp;gt;\lim_{n \to +\infty} g(n) = 2i + 1&amp;lt;/tex&amp;gt;. Тогда в нашем множестве полиномиальных функций существует &amp;lt;tex&amp;gt;f_i&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\forall x (x \in SAT) = (g(|f_i(x)|) \% 2 = 0 \cap f_i(x) \in \mathrm{SAT})&amp;lt;/tex&amp;gt;. С одной стороны, &amp;lt;tex&amp;gt;\mathrm{SAT} \le L&amp;lt;/tex&amp;gt; с помощью &amp;lt;tex&amp;gt;f_i&amp;lt;/tex&amp;gt;. С другой стороны, из определения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; выходит, что язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; конечен, значит, &amp;lt;tex&amp;gt;L \in \mathrm{P}&amp;lt;/tex&amp;gt;. Снова получено противоречие с предположением.&lt;br /&gt;
&lt;br /&gt;
Таким образом, при верности предположения &amp;lt;tex&amp;gt;\mathrm{P} \neq \mathrm{NP}&amp;lt;/tex&amp;gt; второе и третье свойства &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; выполнены.&lt;br /&gt;
&lt;br /&gt;
=== Время работы алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Проверим первое свойство — полиномиальность языка &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;T_g(n)&amp;lt;/tex&amp;gt; — время вычисления &amp;lt;tex&amp;gt;g(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt;g(n) \le n&amp;lt;/tex&amp;gt; по построению для &amp;lt;tex&amp;gt;n \ge 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Время выполнения шагов составляет:&lt;br /&gt;
&lt;br /&gt;
* проверка неравенства:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_1(n) \le g(n) T_*(log_2^{g(n)} n, log_2^{g(n)} n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_1(n) \le c_1 g(n) (log_2 (log_2^{g(n)} n))^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_1(n) \le c_1 g^3(n) log_2^2 log_2 n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_1(n) \le c_1 n^3 log_2^2 log_2 n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_1(n) \le c_1 n^5&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
где &amp;lt;tex&amp;gt;T_*(a, b)&amp;lt;/tex&amp;gt; — время нахождения произведения чисел &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;g(n) = 2i&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_2(n) \le 2^{log_2 n} (T(M_i(x)) + T(g(|x|)) + T(x \in \mathrm{SAT}))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_2(n) \le c_2 n (|x|^i + T_g(|x|) + 2^{|x|}|x|)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_2(n) \le c_2 n (log_2^{i} n + T_g(|x|) + 2^{log_2 n} log_2 n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_2(n) \le c_2 n (log_2^{g(n)} n + T_g(log_2 n) + n log_2 n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_2(n) \le c_2 (n^2 + n^2 log_2 n + n T_g(log_2 n))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_2(n) \le c_2 (2n^3 + n T_g(log_2 n))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;g(n) = 2i + 1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_3(n) \le 2^{log_2 n} (T(x \in \mathrm{SAT}) + T_g(|f_i(x)|) + T(f_i(x) \in \mathrm{SAT}))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_3(n) \le c_3 n (2^{log_2 n} log_2 n + T_g(log_2 n) + 2^{log_2 n} log_2 n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_3(n) \le c_3 (2n^2 log_2 n + n T_g(log_2 n))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_3(n) \le c_3 (2n^3 + n T_g(log_2 n))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_g(n) \le T_g(n-1) + c_1 n^5 + c_2 (2n^3 + n T_g(log_2 n)) + c_3 (2n^3 + n T_g(log_2 n))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_g(n) \le T_g(n-1) + k_1 n^5 + k_2 n T_g(log_2 n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если выписывать полученные значения &amp;lt;tex&amp;gt;g(n)&amp;lt;/tex&amp;gt; на ленте машины Тьюринга в порядке возрастания &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;T_g(log_2 n)&amp;lt;/tex&amp;gt; можно получить за &amp;lt;tex&amp;gt;k_3 (n + log_2 n) \le 2 k_3 n&amp;lt;/tex&amp;gt;. Тогда&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T_g(n) \le T_g(n-1) + k_1 n^5 + 2 k_2 k_3 n^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;T_g(1) = const = d&amp;lt;/tex&amp;gt;. Существует константа &amp;lt;tex&amp;gt;c \ge d&amp;lt;/tex&amp;gt;, для которой при любом &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; верно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;c (n-1)^6 + k_1 n^5 + 2 k_2 k_3 n^2 \le c n^6&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда, в силу &amp;lt;tex&amp;gt;T_g(1) = d \le c 1^6&amp;lt;/tex&amp;gt; и неравенства выше, по индукции легко доказать, что &amp;lt;tex&amp;gt;T_g(n)&amp;lt;/tex&amp;gt; ограничено сверху &amp;lt;tex&amp;gt;c n^6&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;g \in \tilde{\mathrm{P}}&amp;lt;/tex&amp;gt;, а, в свою очередь, &amp;lt;tex&amp;gt;A \in \mathrm{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источник ==&lt;br /&gt;
* ''William Gasarch, Lance Fortnow''. [http://blog.computationalcomplexity.org/media/ladner.pdf Two Proofs of Ladner’s Theorem]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>178.130.42.66</name></author>	</entry>

	</feed>