Теорема Ладнера — различия между версиями
Assaron (обсуждение | вклад) м (→Иллюстрация) |
Assaron (обсуждение | вклад) м (→Доказательство) |
||
Строка 52: | Строка 52: | ||
из <math>NP \setminus (P \cup NPC)</math>. | из <math>NP \setminus (P \cup NPC)</math>. | ||
− | '''Утверждение 1.''' Можно перечислить (возможно с повторениями) все языки из <math>P</math>. | + | '''Утверждение 1.''' Можно перечислить (возможно, с повторениями) все языки из <math>P</math>. |
Действительно, рассмотрим последовательность всех программ, упорядоченных по длине: | Действительно, рассмотрим последовательность всех программ, упорядоченных по длине: | ||
Строка 91: | Строка 91: | ||
#:<math>f(n) = f(n-1)</math>; | #:<math>f(n) = f(n-1)</math>; | ||
#<math>f(n-1)=2i</math>: | #<math>f(n-1)=2i</math>: | ||
− | #: | + | #:если существует <math>x</math>, такой что <math>|x| < \log_2 n</math> и <math>p_i(x) \ne L(x)</math>, то <math>f(n) = f(n-1)+1</math>, иначе <math>f(n) = f(n-1)</math>; |
#<math>f(n-1)=2i+1</math>: | #<math>f(n-1)=2i+1</math>: | ||
− | #: | + | #:если существует <math>x</math>, такой что <math>|x| < \log_2 n</math> и <math>SAT(x) \ne L(f_i(x))</math>, то <math>f(n) = f(n-1)+1</math>, иначе <math>f(n) = f(n-1)</math>. |
Первый случай позволяет сказать, что <math>f(n)</math> ограничена <math>O\left(\log_{\log_2 n} n\right) = O(\log_2 n)</math>. | Первый случай позволяет сказать, что <math>f(n)</math> ограничена <math>O\left(\log_{\log_2 n} n\right) = O(\log_2 n)</math>. | ||
Строка 131: | Строка 131: | ||
Поэтому <math>T(n) \in \tilde{P}</math> и <math>A \in P</math>. | Поэтому <math>T(n) \in \tilde{P}</math> и <math>A \in P</math>. | ||
− | Таким образом, <math>f</math> полиномиальна | + | Таким образом, <math>f</math> полиномиальна и <math>A \in P</math>. |
Предположим, что <math>\lim_{n \to \infty}f(n) = 2i</math>. Это значит, что фунция «застряла» в ветке «иначе» случая два, | Предположим, что <math>\lim_{n \to \infty}f(n) = 2i</math>. Это значит, что фунция «застряла» в ветке «иначе» случая два, |
Версия 22:05, 8 марта 2010
Формулировка
Теорема Ладнера (Ladner's Theorem) утверждает, что если
, то существует язык , принадлежащий .Иллюстрация
Определим язык
как множество таких формул , что чётно. Иными словами, — это язык формул с длинами, лежащими в промежутках Далее будем обозначать как .Рассмотрим язык
. Логично предположить, что как в , так и в лежит бесконечное множество элементов из , не принадлежащих классу , поэтому . Из и следует, что .Осталось показать, что
не является NP-полным. Пусть это не так. Тогда из NP-полноты следует, что существует полиномиальная функция , сводящая по Карпу к .Возьмём формулу
длиной . Она не лежит в и, следовательно, в . Функция не может перевести в промежуток или дальше, так как размер выхода полиномиальной функции не может быть экспоненциально больше длины входа. Значит, отображается в меньший промежуток, но в этом случае размер выхода экспоненциально меньше длины входа. Добавляя к этому то, что проверку на принадлежность можно осуществить за (это следует из её принадлежности классу ), получаем программу, разрешающую за полином. Утверждение о том, что все формулы длиной принадлежат классу , скорее всего не верно, и, следовательно, язык не является NP-полным.Заметим, что это объяснение не является доказательством!
Доказательство
Будем искать язык
, удовлетворяющий следующим условиям:- (что влечёт за собой );
- ;
- .
Если такой язык существует, то
является искомым примером множества из .Утверждение 1. Можно перечислить (возможно, с повторениями) все языки из
.Действительно, рассмотрим последовательность всех программ, упорядоченных по длине:
Обозначим за программу, запускающую с таймером . Тогда среди встречаются только программы из , и для каждой полиномиальной программы , работающей за полином , существует номер , такой что для всех натуральных , и делает то же самое, что и . Таким образом распознает тот же язык, что и .Утверждение 2. Можно перечислить все функции из
.Аналогично предыдущему доказательству, сначала построим последовательность
, а затем, добавив таймер , получим последовательность .Упорядочим все слова по возрастанию длины. Разобьем всё
на множества , так, что отличается от элементом из , и существует для которого выполняется условия и .
Если мы сможем построить такие , то язык
будет отличаться от любого полиномиального языка, и ни какая полиномиальная функция не будет сводить
к .
Попытаемся построить такую полиномиальную функцию
, что . Тогда иЗададим
. Затем рекурсивно определим . Для этого рассмотрим три случая:- ;
:
- если существует , такой что и , то , иначе ;
:
- если существует , такой что и , то , иначе .
:
Первый случай позволяет сказать, что
ограничена . Второй «ответственен» за множества для чётных , третий — для нечетных. Логарифм в условии необходим для полиномиальности .Покажем, что
. Для упрощения будем считать, что алфавит ., где:
- идёт на вычисление ;
- — время перебора всех слов , таких что ;
- — время работы ;
- — время работы ;
- — время работы ;
- — время работы ;
- — время, необходимое для построения программы ;
- — время, необходимое для построения функции .
, таким образом .
Чтобы построить программу
достаточно построить . Из того, что все упорядоченны по длине, следует, что длина не превосходит (константа зависит от языка описания программы). Поэтому для построения i-ой программы достаточно перебрать все слов с длиной не больше и вывести i-ое, являющееся программой. Такой способ требует времени. Аналогично можно построить и . Из этого следует, что и тоже полиномиальны.Получаем, что
. Значит . Поэтому и .Таким образом,
полиномиальна и .Предположим, что
. Это значит, что фунция «застряла» в ветке «иначе» случая два, но из этого следует, что отличается от лишь на конечное число элементов. Это влечёт за собой принадлежность к , что противоречит предположению .Аналогично, в случае, если
. Тогда функция «застряла» в ветке «иначе» случая три. Следствием этого является то, что функцией сводится к конечному множеству, что тоже противоречит предположению .Получается, что
, но по построению, если неограниченно растет, то не совпадает ни с каким языком , и ни какая функция не сводит к . Следовательно, выполняются все три пункта, и является примером языка из .Теорема доказана.