Теорема Ладнера — различия между версиями
Assaron (обсуждение | вклад) (→Иллюстрация: исправлена пара опечаток) |
Assaron (обсуждение | вклад) (→Доказательство: добавил два утверждения и условия на A) |
||
Строка 43: | Строка 43: | ||
==Доказательство== | ==Доказательство== | ||
+ | |||
+ | Будем искать такое <math>A</math>, что оно удовлетворяет следующим условиям: | ||
+ | #<math>A \in P</math> (что влечёт за собой<math>SAT \cap A \in NP</math>) | ||
+ | #<math>SAT \cap A \not\in P</math> | ||
+ | #<math>SAT \nleqslant SAT \cap A</math> | ||
+ | |||
+ | '''Утверждение 1.''' Можно перечислить (возможно с повторениями) все языки из <math>P</math> | ||
+ | |||
+ | Действительно, рассмотрим последовательность всех программ | ||
+ | <math> \tilde{p_1}, \tilde{p_2}, \ldots, \tilde{p_n}, \ldots</math> | ||
+ | Обозначим за <math>p_i</math> программу, запускающую <math>\tilde{p_i}</math> | ||
+ | с таймером <math>in^i</math>. Тогда среди <math>{p_i}</math> встречаются | ||
+ | только программы из <math>P</math>, и для каждой полиномиальной программы | ||
+ | <math>\tilde{p_i}</math>, работающей за полином <math>q_i(n)</math>, существует | ||
+ | номер <math>j</math>, такой что <math>jn^j > g_i(n)</math> для всех натуральных <math>n</math> | ||
+ | и <math>\tilde{p_j}</math> делает то же самое, что и <math>\tilde{p_i}</math>. | ||
+ | Таким образом <math>p_j</math> распознает тот же язык, что и <math>\tilde{p_i}</math>. | ||
+ | |||
+ | '''Утверждение 2.''' Можно перечислить все функции из <math>\tilde{P}</math>. | ||
+ | |||
+ | Доказательство аналогично доказательству предыдущего утверждения. | ||
<math>L=\left\{\varphi | \varphi \in SAT \and f(|\varphi|) \text{ is even}\right\}</math> | <math>L=\left\{\varphi | \varphi \in SAT \and f(|\varphi|) \text{ is even}\right\}</math> | ||
Строка 50: | Строка 71: | ||
<math>f(0) = f(1) = 0</math> | <math>f(0) = f(1) = 0</math> | ||
− | Определим <math>f(n)</math>: | + | Определим <math>f(n)</math>. Для этого рассмотрим два случая: |
*'''Случай 1:''' <math>f(n-1)=2i</math>. | *'''Случай 1:''' <math>f(n-1)=2i</math>. | ||
− | *: Если существует <math>x</math>, такой что <math>|x| < \log_2n</math> и <math>M_i(x) \ne L(x)</math>, то <math>f(n) = f(n-1)+1</math>, иначе <math>f(n) = f(n-1)</math> | + | *: Если существует <math>x</math>, такой что <math>|x| < \log_2n</math> и <math>M_i(x) \ne L(x)</math>, то <math>f(n) = f(n-1)+1</math>, иначе <math>f(n) = f(n-1)</math>. |
*'''Случай 2:''' <math>f(n-1)=2i+1</math>. | *'''Случай 2:''' <math>f(n-1)=2i+1</math>. | ||
− | *:Если существует <math>x</math>, такой что <math>|x| < \log_2n</math> и <math>SAT(x) \ne L(g_i(x))</math>, то <math>f(n) = f(n-1)+1</math>, иначе <math>f(n) = f(n-1)</math> | + | *:Если существует <math>x</math>, такой что <math>|x| < \log_2n</math> и <math>SAT(x) \ne L(g_i(x))</math>, то <math>f(n) = f(n-1)+1</math>, иначе <math>f(n) = f(n-1)</math>. |
Версия 17:15, 5 марта 2010
Формулировка
Теорема Ладнера (Ladner's Theorem) утверждает, что если
, то существует язык , принадлежащий .Иллюстрация
Определим язык
как множество таких формул что чётно. Иными словами, — это язык формул с длинами, лежащими в промежутках Далее будем обозначать как .Рассмотрим язык
. Логично предположить, что как в , так и в лежит бесконечное множество элементов из , не принадлежащих классу , поэтому . Из и следует, что .Осталось показать, что
не является NP-полным. Пусть это не так. Тогда из NP-полноты следует, что существует полиномиальная функция сводящая по Карпу к .Возьмем формулу
длиной . Она не лежит в и, следовательно, в . Функция не может перевести в промежуток или дальше, так как размер выхода полиномиальной функции не может быть экспоненциально больше длинны входа. Значит отображается в меньший промежуток, но в этом случае размер выхода экспоненциально меньше длины входа. Добавляя к этому то, что проверку на принадлежность можно осуществить за (это следует из принадлежности ), получаем программу разрешающую за полином. Утверждение о том, что все формулы длиной принадлежат классу скорее всего не верно, а ,следовательно, язык не является NP-полным.Заметим, что это объяснение не является доказательством!
Доказательство
Будем искать такое
, что оно удовлетворяет следующим условиям:- (что влечёт за собой )
Утверждение 1. Можно перечислить (возможно с повторениями) все языки из
Действительно, рассмотрим последовательность всех программ
Обозначим за программу, запускающую с таймером . Тогда среди встречаются только программы из , и для каждой полиномиальной программы , работающей за полином , существует номер , такой что для всех натуральных и делает то же самое, что и . Таким образом распознает тот же язык, что и .Утверждение 2. Можно перечислить все функции из
.Доказательство аналогично доказательству предыдущего утверждения.
Определим
. Для этого рассмотрим два случая:- Случай 1:
- Если существует , такой что и , то , иначе .
.
- Случай 2:
- Если существует , такой что и , то , иначе .
.