Теорема Махэни — различия между версиями
Строка 13: | Строка 13: | ||
|statement=<tex>\mathrm{LSAT} \in \mathrm{NPC}</tex>. | |statement=<tex>\mathrm{LSAT} \in \mathrm{NPC}</tex>. | ||
|proof= | |proof= | ||
− | #Очевидно, что <tex>\mathrm{LSAT} \in \mathrm{NP}</tex> (в качестве сертификата можно запросить <tex>x</tex>). | + | #Очевидно, что <tex>\mathrm{LSAT} \in \mathrm{NP}</tex> (в качестве [[Классы NP, coNP, Σ₁, Π₁|сертификата]] можно запросить <tex>x</tex>). |
#[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи | Сведём]] <tex>\mathrm{SAT}</tex> к <tex>\mathrm{LSAT}</tex>. Для этого рассмотрим отображение <tex>\varphi \mapsto \langle \varphi, 1^{|\varphi|}\rangle</tex>, где <tex>|\varphi|</tex> — количество различных переменных в формуле <tex>\varphi</tex>. Ясно, что данное преобразование можно сделать за полиномиальное время. Теперь докажем, что сведение верное. | #[[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи | Сведём]] <tex>\mathrm{SAT}</tex> к <tex>\mathrm{LSAT}</tex>. Для этого рассмотрим отображение <tex>\varphi \mapsto \langle \varphi, 1^{|\varphi|}\rangle</tex>, где <tex>|\varphi|</tex> — количество различных переменных в формуле <tex>\varphi</tex>. Ясно, что данное преобразование можно сделать за полиномиальное время. Теперь докажем, что сведение верное. | ||
− | #*Если <tex>\varphi \in \mathrm{SAT}</tex>, то формула <tex>\varphi</tex> удовлетворима, а значит <tex>\exists x: x \leqslant_{lex} 1^{|\varphi|}, \varphi(x)=1</tex>. Следовательно, <tex>\langle \varphi, 1^{|\varphi|}\rangle \in \mathrm{LSAT}</tex>. | + | #*Если <tex>\varphi \in \mathrm{SAT}</tex>, то формула <tex>\varphi</tex> удовлетворима, а значит <tex>\exists x: x \leqslant_{lex} 1^{|\varphi|}, \varphi(x)=1</tex>. Такой <tex> x </tex> cуществует, потому что формула удовлетворима и любой вектор длины <tex> |\varphi| </tex> меньше либо равен единичному, значит мы переберем всевозможые вектора. Следовательно, <tex>\langle \varphi, 1^{|\varphi|}\rangle \in \mathrm{LSAT}</tex>. |
#*Если <tex>\langle \varphi, 1^{|\varphi|}\rangle \in \mathrm{LSAT}</tex>, то <tex>\exists x: x \leqslant_{lex} 1^{|\varphi|}, \varphi(x)=1</tex>. Значит формула <tex>\varphi</tex> удовлетворима, и <tex>\varphi \in \mathrm{SAT}</tex>. | #*Если <tex>\langle \varphi, 1^{|\varphi|}\rangle \in \mathrm{LSAT}</tex>, то <tex>\exists x: x \leqslant_{lex} 1^{|\varphi|}, \varphi(x)=1</tex>. Значит формула <tex>\varphi</tex> удовлетворима, и <tex>\varphi \in \mathrm{SAT}</tex>. | ||
:Таким образом, <tex>\mathrm{SAT} \leqslant \mathrm{LSAT}</tex>. Но [[Теорема Кука | по теореме Кука ]]<tex>\mathrm{SAT} \in \mathrm{NPC}</tex>, а значит для любого <tex>L \in \mathrm{NP} </tex> выполнено <tex> L \leqslant \mathrm{SAT}</tex>. Тогда в силу транзитивности <tex>\forall L \in \mathrm{NP} \; L \leqslant \mathrm{LSAT}</tex>, то есть <tex>\mathrm{LSAT} \in \mathrm{NPH}</tex>. | :Таким образом, <tex>\mathrm{SAT} \leqslant \mathrm{LSAT}</tex>. Но [[Теорема Кука | по теореме Кука ]]<tex>\mathrm{SAT} \in \mathrm{NPC}</tex>, а значит для любого <tex>L \in \mathrm{NP} </tex> выполнено <tex> L \leqslant \mathrm{SAT}</tex>. Тогда в силу транзитивности <tex>\forall L \in \mathrm{NP} \; L \leqslant \mathrm{LSAT}</tex>, то есть <tex>\mathrm{LSAT} \in \mathrm{NPH}</tex>. | ||
Строка 38: | Строка 38: | ||
Они называются редкими потому, что строк длины <tex> n </tex> всего <tex> 2^{n} </tex>, и если язык содержит только полином от этого числа, то при большом <tex> n </tex> эта часть стремится к нулю. | Они называются редкими потому, что строк длины <tex> n </tex> всего <tex> 2^{n} </tex>, и если язык содержит только полином от этого числа, то при большом <tex> n </tex> эта часть стремится к нулю. | ||
− | '''Пример:''' <tex> \{1^{n} \mid n</tex>-я [[Машина Тьюринга | машина Тьюринга]] останавливается | + | '''Пример:''' Согласно [https://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis тезису Чёрча - Тьюринга], существует биекция между машинами Тьюринга и программами. Зафиксировав язык, можно занумеровать программы, а следовательно и машины Тьюринга. <tex> \{1^{n} \mid n</tex>-я [[Машина Тьюринга | машина Тьюринга]] останавливается в допускающем состоянии <tex> \} \in \mathrm{SPARSE}</tex>. Более того, любой унарный язык принадлежит <tex>\mathrm{SPARSE} </tex> (просто принять <tex> p(n) = 1 </tex>). |
==Теорема== | ==Теорема== |
Версия 12:36, 4 апреля 2016
Теорема Махэни, доказанная Стефаном Махэни в 1982 году, утверждает, что если хотя бы один редкий язык — -полный, то
Содержание
Подготовка к доказательству
Введём вспомогательный язык
.Определение: |
лексикографический порядок. | , где — булева формула из переменных, и отношение задает
Лемма (1): |
. |
Доказательство: |
|
Лемма (2): |
. Тогда . |
Доказательство: |
. Тогда . Так как , то , следовательно . |
Редкие языки
Определение: |
полином — множество редких (англ. sparse) языков. |
То есть множество языков таких, что множество слов длины
из языка ограничено полиномом от .Они называются редкими потому, что строк длины
всего , и если язык содержит только полином от этого числа, то при большом эта часть стремится к нулю.Пример: Согласно тезису Чёрча - Тьюринга, существует биекция между машинами Тьюринга и программами. Зафиксировав язык, можно занумеровать программы, а следовательно и машины Тьюринга. -я машина Тьюринга останавливается в допускающем состоянии . Более того, любой унарный язык принадлежит (просто принять ).
Теорема
Теорема (Махэни): |
. |
Доказательство: |
Пусть .Так как и , то существует полиномиальная функция сведения такая, что .Так как функция работает полиномиальное время, и ( — длина вектора ), то , где — полином. , следовательно , где — некоторый полином.Тогда , где — также полином.Опишем алгоритм для нахождения лексикографически минимальной строки , удовлетворяющей формуле .Пусть . Изначально область поиска для — все строки длины . Опишем одну итерацию поиска.Разобьём текущее множество строк на подотрезок примерно равной длины. Обозначим концы полученных подотрезков . Пусть теперь .Из леммы (2) мы знаем, что, начиная с некоторого , все пары . Тогда по сведению для всех .Рассмотрим два случая:
В обоих случаях мы сузили область поиска как минимум на её размера.Будем повторять эту процедуру до тех пор, пока не останется не более строки, которые мы можем проверить за полиномиальное время. Если какая-то из них удовлетворила формуле , то удовлетворяет . Иначе, не существует.Оценим время работы нашего алгоритма. После итераций у нас останется не более строк. Оценим .формулой Тейлора для логарифма). Таким образом, мы можем разрешить язык . Отсюда (это можно получить, выразив через и и воспользовавшись за полиномиальное время, найдя лексикографически минимальную строку, удовлетворяющую формуле, и сравнив её с нашим аргументом. Так как , то мы можем решить любую задачу из за полиномиальное время, а значит . |
См. также
- Класс P
- Классы NP и Σ₁
- Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи
- Теорема Бермана — Форчуна