Теорема Ладнера — различия между версиями
Assaron (обсуждение | вклад) (→Доказательство: еще чуть-чуть доказательства) |
Assaron (обсуждение | вклад) м (→Доказательство: is even -> \vdots 2) |
||
| Строка 68: | Строка 68: | ||
Доказательство аналогично доказательству предыдущего утверждения. | Доказательство аналогично доказательству предыдущего утверждения. | ||
| − | <math>L=\left\{\varphi | + | <math>L=\left\{\varphi \mid \varphi \in SAT \and f(|\varphi|)\, \vdots \, 2\right\}</math> |
| − | <math>A=\left\{x | + | <math>A=\left\{x \mid f(|x|) \, \vdots \, 2 \right\}</math> |
<math>f(0) = f(1) = 0</math> | <math>f(0) = f(1) = 0</math> | ||
Версия 11:38, 6 марта 2010
Формулировка
Теорема Ладнера (Ladner's Theorem) утверждает, что если , то существует язык , принадлежащий .
Иллюстрация
Определим язык как множество таких формул что чётно. Иными словами, — это язык формул с длинами, лежащими в промежутках Далее будем обозначать как .
Рассмотрим язык . Логично предположить, что как в , так и в лежит бесконечное множество элементов из , не принадлежащих классу , поэтому . Из и следует, что .
Осталось показать, что не является NP-полным. Пусть это не так. Тогда из NP-полноты следует, что существует полиномиальная функция сводящая по Карпу к .
Возьмем формулу длиной . Она не лежит в и, следовательно, в . Функция не может перевести в промежуток или дальше, так как размер выхода полиномиальной функции не может быть экспоненциально больше длинны входа. Значит отображается в меньший промежуток, но в этом случае размер выхода экспоненциально меньше длины входа. Добавляя к этому то, что проверку на принадлежность можно осуществить за (это следует из принадлежности ), получаем программу разрешающую за полином. Утверждение о том, что все формулы длиной принадлежат классу скорее всего не верно, а ,следовательно, язык не является NP-полным.
Заметим, что это объяснение не является доказательством!
Доказательство
Будем искать язык , удовлетворяющий следующим условиям:
- (что влечёт за собой)
Если такой язык существует, то искомым примером множества из .
Утверждение 1. Можно перечислить (возможно с повторениями) все языки из .
Действительно, рассмотрим последовательность всех программ Обозначим за программу, запускающую с таймером . Тогда среди встречаются только программы из , и для каждой полиномиальной программы , работающей за полином , существует номер , такой что для всех натуральных и делает то же самое, что и . Таким образом распознает тот же язык, что и .
Утверждение 2. Можно перечислить все функции из .
Доказательство аналогично доказательству предыдущего утверждения.
Определим . Для этого рассмотрим два случая:
- Случай 1: .
- Если существует , такой что и , то , иначе .
- Случай 2: .
- Если существует , такой что и , то , иначе .
Покажем, что . Для упрощения будем считать, что алфавит . , где:
- идёт на вычисление ;
- — перебор всех слов , таких что ;
- — запуск ;
- — запуск ;
- — запуск ;
- — запуск ;
- — построение программы ;
- — построение программы .
, таким образом
что-то, тоже из
, из
, из
что-то типа , но с оценкой на вместо , из
и тоже полиномиальны.
Получаем, что . Значит . Поэтому и .
В результате всё почти хорошо.
Теорема доказана.