Теорема Ладнера — различия между версиями
Assaron (обсуждение | вклад) м (→Описание способа построения A) |
|||
Строка 69: | Строка 69: | ||
===Описание способа построения <math>A</math>=== | ===Описание способа построения <math>A</math>=== | ||
Упорядочим все слова по возрастанию длины. Разобьем всё <tex>\Sigma^{*}</tex> на множества | Упорядочим все слова по возрастанию длины. Разобьем всё <tex>\Sigma^{*}</tex> на множества | ||
− | <tex>A_i</tex> так, что <tex>\forall i<j, \forall \alpha \in A_i, \beta \in A_j: |\alpha| < |\beta|</tex> | + | <tex>A_i</tex> так, что: |
+ | *<tex>\forall i<j, \forall \alpha \in A_i, \beta \in A_j: |\alpha| < |\beta|</tex> | ||
(то есть разбиение происходит по длинам, причем <tex>A_i</tex> идут «подряд»), | (то есть разбиение происходит по длинам, причем <tex>A_i</tex> идут «подряд»), | ||
− | <tex>SAT \cap \bigcup_{i=0}^{k} A_{2i}</tex> отличается от <tex>L(p_k)</tex> элементом <tex>x_{2k}</tex> | + | *<tex>SAT \cap \bigcup_{i=0}^{k} A_{2i}</tex> отличается от <tex>L(p_k)</tex> элементом <tex>x_{2k}</tex> |
− | из <tex>\bigcup_{i=0}^{2k} A_i</tex> | + | из <tex>\bigcup_{i=0}^{2k} A_i</tex>, |
+ | *для любого <tex>k</tex> существует <tex>x_{2k+1} \in \bigcup_{i=0}^{2k+1} A_i</tex>, | ||
для которого выполняются условия <tex>f_k(x_{2k+1}) \in \bigcup_{i=0}^{2k+1} A_i</tex> и | для которого выполняются условия <tex>f_k(x_{2k+1}) \in \bigcup_{i=0}^{2k+1} A_i</tex> и | ||
<tex>[x_{2k+1} \in SAT] \ne [f_k(x_{2k+1}) \in SAT \cap \bigcup_{i=0}^{k} A_{2i}]</tex>. | <tex>[x_{2k+1} \in SAT] \ne [f_k(x_{2k+1}) \in SAT \cap \bigcup_{i=0}^{k} A_{2i}]</tex>. | ||
Строка 85: | Строка 87: | ||
<tex>A_i = \left\{x \mid f(|x|) = i\right\}</tex>. Тогда | <tex>A_i = \left\{x \mid f(|x|) = i\right\}</tex>. Тогда | ||
<tex>A=\left\{x \mid f(|x|) \, \vdots \, 2 \right\}</tex> и | <tex>A=\left\{x \mid f(|x|) \, \vdots \, 2 \right\}</tex> и | ||
− | < | + | <tex>L=SAT \cap A = \left\{\varphi \mid \varphi \in SAT \land f(|\varphi|)\, \vdots \, 2 \right\}</tex> |
===Построение <tex>f</tex>=== | ===Построение <tex>f</tex>=== |
Версия 16:21, 19 марта 2010
Теорема Ладнера (Ladner's Theorem) утверждает, что если P не совпадает с NP, то существует язык , принадлежащий , но не являющийся полиномиальным и NP-полным.
Содержание
Иллюстрация
Определим язык
как множество таких формул , что чётно. Иными словами, — это язык формул с длинами, лежащими в промежутках Далее будем обозначать как .Рассмотрим язык SAT всех удовлетворимых формул. Логично предположить, что как в , так и в лежит бесконечное множество элементов из , не распознаваемых за полиномиальное время, поэтому . Из и следует, что .
Осталось показать, что сводящая по Карпу к .
не является NP-полным. Пусть это не так. Тогда из NP-полноты следует, что существует полиномиальная функция ,Возьмём формулу
длиной . Она не лежит в и, следовательно, в . Функция не может перевести в промежуток или дальше, так как размер выхода полиномиальной функции не может быть экспоненциально больше длины входа. Значит, отображается в меньший промежуток, но в этом случае размер выхода экспоненциально меньше длины входа. Добавляя к этому то, что проверку на принадлежность к можно осуществить за (это следует из её принадлежности классу ), получаем программу, разрешающую за полином. Утверждение о том, что все формулы длиной принадлежат классу , скорее всего не верно, и, следовательно, язык не является NP-полным.Заметим, что это объяснение не является доказательством!
Доказательство
Будем искать язык
, удовлетворяющий следующим условиям:- (что влечёт за собой );
- ;
- .
Если такой язык существует, то
является искомым примером множества из .Утверждение 1
Можно перечислить (возможно, с повторениями) все языки из
.Действительно, рассмотрим последовательность всех программ, упорядоченных по длине:
Обозначим за программу, запускающую с таймером . Тогда среди встречаются только программы из , и для каждой полиномиальной программы , работающей за полином , существует номер такой, что для всех натуральных и делает то же самое, что и . Таким образом, распознает тот же язык, что и .Утверждение 2
Можно перечислить все функции из
.Аналогично предыдущему доказательству, сначала построим последовательность
, а затем, добавив таймер , получим последовательность .Описание способа построения
Упорядочим все слова по возрастанию длины. Разобьем всё
на множества так, что:(то есть разбиение происходит по длинам, причем
идут «подряд»),- отличается от элементом
из
,- для любого существует ,
для которого выполняются условия
и .Если мы сможем построить такие
, то язык будет отличаться от любого полиномиального языка, и ни одна полиномиальная функция не будет сводить к .Попытаемся построить такую полиномиальную функцию
, что . Тогда иПостроение
Зададим
. Затем рекурсивно определим . Для этого рассмотрим три случая:- ;
:
- если существует такой, что и , то , иначе ;
:
- если существует такой, что , и , то , иначе .
:
Заметим, что вызовы
делаются для , для которых уже построена.Первый случай позволяет сказать, что
ограничена . Второй «ответственен» за множества для чётных , третий — для нечетных. Логарифм в условии необходим для полиномиальности .Полиномиальность
Покажем, что
. Для упрощения будем считать, что алфавит ., где:
- идёт на вычисление ;
- — время перебора всех слов таких, что ;
- — время работы ;
- — время работы ;
- — время работы ;
- — время работы ;
- — время, необходимое для построения программы ;
- — время, необходимое для построения функции .
, таким образом .
Чтобы построить программу
достаточно построить . Из того, что все упорядочены по длине, следует, что длина не превосходит (константа зависит от языка описания программы). Поэтому для построения i-ой программы достаточно перебрать все слов с длиной не больше и вывести i-ое, являющееся программой. Такой способ требует времени. Аналогично можно построить и . Из этого следует, что и тоже полиномиальны.Получаем, что
. Значит, . Поэтому и .Таким образом,
полиномиальна и .Доказательство выполнения свойств
Предположим, что
. Это значит, что фунция «застряла» в ветке «иначе» случая два, но из этого следует, что не отличается от . Это влечёт за собой принадлежность к , что противоречит предположению .Аналогично, в случае, если
. Тогда функция «застряла» в ветке «иначе» случая три. Следствием этого является то, что функцией сводится к конечному множеству, что тоже противоречит предположению .Получается, что
, но по построению если неограниченно растет, то не совпадает ни с каким языком и ни одна функция не сводит к . Следовательно, выполняются все три требуемых свойста, и является примером языка из .Теорема доказана.