Теорема Ладнера — различия между версиями
Assaron (обсуждение | вклад) (→Доказательство: добавил два утверждения и условия на A) |
Assaron (обсуждение | вклад) (→Доказательство: еще чуть-чуть доказательства) |
||
| Строка 44: | Строка 44: | ||
==Доказательство== | ==Доказательство== | ||
| − | Будем искать | + | Будем искать язык <math>A</math>, удовлетворяющий следующим условиям: |
#<math>A \in P</math> (что влечёт за собой<math>SAT \cap A \in NP</math>) | #<math>A \in P</math> (что влечёт за собой<math>SAT \cap A \in NP</math>) | ||
#<math>SAT \cap A \not\in P</math> | #<math>SAT \cap A \not\in P</math> | ||
#<math>SAT \nleqslant SAT \cap A</math> | #<math>SAT \nleqslant SAT \cap A</math> | ||
| − | '''Утверждение 1.''' Можно перечислить (возможно с повторениями) все языки из <math>P</math> | + | Если такой язык существует, то <math>L = A \cap SAT</math> искомым примером множества |
| + | из <math>NP \setminus (P \cup NPC)</math>. | ||
| + | |||
| + | '''Утверждение 1.''' Можно перечислить (возможно с повторениями) все языки из <math>P</math>. | ||
Действительно, рассмотрим последовательность всех программ | Действительно, рассмотрим последовательность всех программ | ||
| Строка 73: | Строка 76: | ||
Определим <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| < \ | + | *: Если существует <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>. |
*'''Случай 2:''' <math>f(n-1)=2i+1</math>. | *'''Случай 2:''' <math>f(n-1)=2i+1</math>. | ||
| − | *:Если существует <math>x</math>, такой что <math>|x| < \ | + | *:Если существует <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 \in \tilde{P}</math>. Для упрощения будем считать, что алфавит <math>\Sigma={0,1}</math>. | ||
| + | <math>T(n) = T(n-1) + a(n)(b_1(n) + b_2(n) + b_3(n) + b_4(n)) + c_1(n) + c2_2(n)</math>, где: | ||
| + | *<math>T(n-1)</math> идёт на вычисление <math>f(n-1)</math>; | ||
| + | *<math>a(n)</math> — перебор всех слов <math>x</math>, таких что <math>|x| < \log_2 n</math>; | ||
| + | *<math>b_1(n)</math> — запуск <math>p_i(x)</math>; | ||
| + | *<math>b_2(n)</math> — запуск <math>SAT(x)</math>; | ||
| + | *<math>b_3(n)</math> — запуск <math>L(x)</math>; | ||
| + | *<math>b_4(n)</math> — запуск <math>L(f_i(x))</math>; | ||
| + | *<math>c_1(n)</math> — построение программы <math>p_i</math>; | ||
| + | *<math>c_1(n)</math> — построение программы <math>f_i</math>. | ||
| + | |||
| + | <math>a(n) \approx 2^{log_2 n} = n</math>, таким образом <math>a(n) \in \tilde{P}</math> | ||
| + | |||
| + | <math>b_1(n) \approx</math> что-то, тоже из <math>\tilde{P}</math> | ||
| + | |||
| + | <math>b_2(n) \approx 2^{log_2 n} log_2 n </math>, из <math>\tilde{P}</math> | ||
| + | |||
| + | <math>b_3(n) \approx 2^{log_2 n} log_2 n + log_2 n</math>, из <math>\tilde{P}</math> | ||
| + | |||
| + | <math>b_4(n) \approx </math> что-то типа <math>b_3(n)</math>, но с оценкой на <math>|f_i(x)|</math> | ||
| + | вместо <math>log_2 n</math>, из <math>\tilde{P}</math> | ||
| + | |||
| + | <math>c_1(n)</math> и <math>c_2(n)</math> тоже полиномиальны. | ||
| + | |||
| + | Получаем, что <math>T(n) = T(n-1) + poly</math>. Значит <math>T(n) \le n \cdot poly </math>. | ||
| + | Поэтому <math>T(n) \in \tilde{P}</math> и <math>A \in P</math>. | ||
| + | |||
| + | В результате всё почти хорошо. | ||
| + | |||
| + | Теорема доказана. | ||
Версия 01:04, 6 марта 2010
Формулировка
Теорема Ладнера (Ladner's Theorem) утверждает, что если , то существует язык , принадлежащий .
Иллюстрация
Определим язык как множество таких формул что чётно. Иными словами, — это язык формул с длинами, лежащими в промежутках Далее будем обозначать как .
Рассмотрим язык . Логично предположить, что как в , так и в лежит бесконечное множество элементов из , не принадлежащих классу , поэтому . Из и следует, что .
Осталось показать, что не является NP-полным. Пусть это не так. Тогда из NP-полноты следует, что существует полиномиальная функция сводящая по Карпу к .
Возьмем формулу длиной . Она не лежит в и, следовательно, в . Функция не может перевести в промежуток или дальше, так как размер выхода полиномиальной функции не может быть экспоненциально больше длинны входа. Значит отображается в меньший промежуток, но в этом случае размер выхода экспоненциально меньше длины входа. Добавляя к этому то, что проверку на принадлежность можно осуществить за (это следует из принадлежности ), получаем программу разрешающую за полином. Утверждение о том, что все формулы длиной принадлежат классу скорее всего не верно, а ,следовательно, язык не является NP-полным.
Заметим, что это объяснение не является доказательством!
Доказательство
Будем искать язык , удовлетворяющий следующим условиям:
- (что влечёт за собой)
Если такой язык существует, то искомым примером множества из .
Утверждение 1. Можно перечислить (возможно с повторениями) все языки из .
Действительно, рассмотрим последовательность всех программ Обозначим за программу, запускающую с таймером . Тогда среди встречаются только программы из , и для каждой полиномиальной программы , работающей за полином , существует номер , такой что для всех натуральных и делает то же самое, что и . Таким образом распознает тот же язык, что и .
Утверждение 2. Можно перечислить все функции из .
Доказательство аналогично доказательству предыдущего утверждения.
Определим . Для этого рассмотрим два случая:
- Случай 1: .
- Если существует , такой что и , то , иначе .
- Случай 2: .
- Если существует , такой что и , то , иначе .
Покажем, что . Для упрощения будем считать, что алфавит . , где:
- идёт на вычисление ;
- — перебор всех слов , таких что ;
- — запуск ;
- — запуск ;
- — запуск ;
- — запуск ;
- — построение программы ;
- — построение программы .
, таким образом
что-то, тоже из
, из
, из
что-то типа , но с оценкой на вместо , из
и тоже полиномиальны.
Получаем, что . Значит . Поэтому и .
В результате всё почти хорошо.
Теорема доказана.