Теорема Махэни — различия между версиями
Kirelagin (обсуждение | вклад) |
Kirelagin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | <tex>LSAT=\{\langle\phi,y\rangle | \exists x: x\le_{lex}y, \phi(x) = 1\}</tex>. | + | <tex>\mathrm{LSAT}=\{\langle\phi,y\rangle | \exists x: x\le_{lex}y, \phi(x) = 1\}</tex>. |
}} | }} | ||
{{Лемма | {{Лемма | ||
|about=1 | |about=1 | ||
− | |statement=<tex>LSAT \in \mathrm{NPC}</tex>. | + | |statement=<tex>\mathrm{LSAT} \in \mathrm{NPC}</tex>. |
|proof= | |proof= | ||
− | #Очевидно, что <tex>LSAT \in \mathrm{NP}</tex> (в качестве сертификата можно запросить <tex>x</tex>). | + | #Очевидно, что <tex>\mathrm{LSAT} \in \mathrm{NP}</tex> (в качестве сертификата можно запросить <tex>x</tex>). |
− | #Сведём <tex>SAT</tex> к <tex>LSAT</tex>. Для этого рассмотрим отображение <tex>\phi \mapsto \langle \phi, 1^{|\phi|}\rangle</tex>, где <tex>|\phi|</tex> — количество различных переменных в формуле <tex>\phi</tex>. Ясно, что данное преобразование можно сделать за полиномиальное время. Теперь докажем, что сведение верное. | + | #Сведём <tex>SAT</tex> к <tex>\mathrm{LSAT}</tex>. Для этого рассмотрим отображение <tex>\phi \mapsto \langle \phi, 1^{|\phi|}\rangle</tex>, где <tex>|\phi|</tex> — количество различных переменных в формуле <tex>\phi</tex>. Ясно, что данное преобразование можно сделать за полиномиальное время. Теперь докажем, что сведение верное. |
− | #*Если <tex>\phi \in SAT</tex>, то формула <tex>\phi</tex> удовлетворима, а значит <tex>\exists x: x \le_{lex} 1^{|\phi|}, \phi(x)=1</tex>. Следовательно, <tex>\langle \phi, 1^{|\phi|}\rangle \in LSAT</tex>. | + | #*Если <tex>\phi \in SAT</tex>, то формула <tex>\phi</tex> удовлетворима, а значит <tex>\exists x: x \le_{lex} 1^{|\phi|}, \phi(x)=1</tex>. Следовательно, <tex>\langle \phi, 1^{|\phi|}\rangle \in \mathrm{LSAT}</tex>. |
− | #*Если <tex>\langle \phi, 1^{|\phi|}\rangle \in LSAT</tex>, то <tex>\exists x: x \le_{lex} 1^{|\phi|}, \phi(x)=1</tex>. Значит формула <tex>\phi</tex> удовлетворима, и <tex>\phi \in SAT</tex>. | + | #*Если <tex>\langle \phi, 1^{|\phi|}\rangle \in \mathrm{LSAT}</tex>, то <tex>\exists x: x \le_{lex} 1^{|\phi|}, \phi(x)=1</tex>. Значит формула <tex>\phi</tex> удовлетворима, и <tex>\phi \in SAT</tex>. |
− | :Таким образом, <tex>SAT \le LSAT</tex>. Но <tex>SAT \in \mathrm{NPC}</tex>, а значит <tex>\forall L \in \mathrm{NP} \; L \le SAT</tex>. Тогда в силу транзитивности <tex>\forall L \in \mathrm{NP} \; L \le LSAT</tex>, то есть <tex>LSAT \in \mathrm{NPH}</tex>. | + | :Таким образом, <tex>SAT \le \mathrm{LSAT}</tex>. Но <tex>SAT \in \mathrm{NPC}</tex>, а значит <tex>\forall L \in \mathrm{NP} \; L \le SAT</tex>. Тогда в силу транзитивности <tex>\forall L \in \mathrm{NP} \; L \le \mathrm{LSAT}</tex>, то есть <tex>\mathrm{LSAT} \in \mathrm{NPH}</tex>. |
− | Итого мы доказали, что <tex>LSAT \in \mathrm{NPH}</tex> и <tex>LSAT \in \mathrm{NP}</tex>. Тогда по определению <tex>LSAT \in \mathrm{NPC}</tex>. | + | Итого мы доказали, что <tex>\mathrm{LSAT} \in \mathrm{NPH}</tex> и <tex>\mathrm{LSAT} \in \mathrm{NP}</tex>. Тогда по определению <tex>\mathrm{LSAT} \in \mathrm{NPC}</tex>. |
}} | }} | ||
{{Лемма | {{Лемма | ||
|about=2 | |about=2 | ||
− | |statement=<tex>\langle\phi,y\rangle \in LSAT, y<_{lex}z</tex>. Тогда <tex>\langle\phi,z\rangle \in LSAT</tex>. | + | |statement=<tex>\langle\phi,y\rangle \in \mathrm{LSAT}, y<_{lex}z</tex>. Тогда <tex>\langle\phi,z\rangle \in \mathrm{LSAT}</tex>. |
− | |proof=<tex>\langle\phi,y\rangle \in LSAT</tex>. Тогда <tex>\exists x: x\le_{lex}y, \phi(x) = 1</tex>. Так как <tex>y<_{lex}z</tex>, то <tex>\exists x: x<_{lex}z, \phi(x) = 1</tex>, следовательно <tex>\langle\phi,z\rangle \in LSAT</tex>. | + | |proof=<tex>\langle\phi,y\rangle \in \mathrm{LSAT}</tex>. Тогда <tex>\exists x: x\le_{lex}y, \phi(x) = 1</tex>. Так как <tex>y<_{lex}z</tex>, то <tex>\exists x: x<_{lex}z, \phi(x) = 1</tex>, следовательно <tex>\langle\phi,z\rangle \in \mathrm{LSAT}</tex>. |
}} | }} | ||
Строка 29: | Строка 29: | ||
|proof=Пусть <tex>S \in \mathrm{NPC} \cap \mathrm{SPARSE}</tex>. | |proof=Пусть <tex>S \in \mathrm{NPC} \cap \mathrm{SPARSE}</tex>. | ||
− | Так как <tex>S\in \mathrm{NPC}</tex>, и <tex>LSAT \in \mathrm{NP}</tex>, то существует полиномиальная функция сведения <tex>f</tex> такая, что <tex>\langle \phi, y \rangle \in LSAT \Leftrightarrow f(\langle \phi, y \rangle) \in S</tex>. | + | Так как <tex>S\in \mathrm{NPC}</tex>, и <tex>\mathrm{LSAT} \in \mathrm{NP}</tex>, то существует полиномиальная функция сведения <tex>f</tex> такая, что <tex>\langle \phi, y \rangle \in \mathrm{LSAT} \Leftrightarrow f(\langle \phi, y \rangle) \in S</tex>. |
Так как функция <tex>f</tex> работает полиномиальное время, и <tex>|\phi|=|y|</tex> (<tex>|y|</tex> — длина вектора <tex>y</tex>), то <tex>f(\langle\phi,y\rangle) \le q(|\phi|)</tex>, где <tex>q</tex> — полином. | Так как функция <tex>f</tex> работает полиномиальное время, и <tex>|\phi|=|y|</tex> (<tex>|y|</tex> — длина вектора <tex>y</tex>), то <tex>f(\langle\phi,y\rangle) \le q(|\phi|)</tex>, где <tex>q</tex> — полином. | ||
− | <tex>S\in SPARSE</tex>. Следовательно, <tex>\forall n \; |S \cap \Sigma^n|\le p(n)</tex>, где <tex>p</tex> — некоторый полином. | + | <tex>S\in \mathrm{SPARSE}</tex>. Следовательно, <tex>\forall n \; |S \cap \Sigma^n|\le p(n)</tex>, где <tex>p</tex> — некоторый полином. |
Тогда <tex>|\{x\in S\, |\, |x| \le q(|\phi|)\}| \le \sum\limits_{i=1}^{q(|\phi|)} p(i) = r(|\phi|)</tex>, где <tex>r</tex> — также полином. | Тогда <tex>|\{x\in S\, |\, |x| \le q(|\phi|)\}| \le \sum\limits_{i=1}^{q(|\phi|)} p(i) = r(|\phi|)</tex>, где <tex>r</tex> — также полином. | ||
Строка 42: | Строка 42: | ||
Разобьём текущее множество строк на <tex>r+1</tex> подотрезок примерно равной длины. Обозначим концы полученных подотрезков <tex>w_0,...,w_{r+1}</tex>. Пусть теперь <tex>z_i=f(\langle\phi,w_i\rangle)</tex>. | Разобьём текущее множество строк на <tex>r+1</tex> подотрезок примерно равной длины. Обозначим концы полученных подотрезков <tex>w_0,...,w_{r+1}</tex>. Пусть теперь <tex>z_i=f(\langle\phi,w_i\rangle)</tex>. | ||
− | Из леммы (2) мы знаем, что, начиная с некоторого <tex>l</tex>, все пары <tex>\langle\phi, w_l\rangle \in LSAT</tex>. Тогда по сведению <tex>z_j \in S</tex> для всех <tex>j\ge l</tex>. | + | Из леммы (2) мы знаем, что, начиная с некоторого <tex>l</tex>, все пары <tex>\langle\phi, w_l\rangle \in \mathrm{LSAT}</tex>. Тогда по сведению <tex>z_j \in S</tex> для всех <tex>j\ge l</tex>. |
Рассмотрим два случая: | Рассмотрим два случая: | ||
Строка 57: | Строка 57: | ||
<tex>2^n(1-\frac1{r+1})^k \simeq 1</tex>. Отсюда <tex>k=O(rn)</tex> (это можно получить, выразив <tex>k</tex> через <tex>n</tex> и <tex>r</tex> и воспользовавшись [http://ru.wikipedia.org/wiki/Ряд_Тейлора#.D0.A0.D1.8F.D0.B4.D1.8B_.D0.9C.D0.B0.D0.BA.D0.BB.D0.BE.D1.80.D0.B5.D0.BD.D0.B0_.D0.BD.D0.B5.D0.BA.D0.BE.D1.82.D0.BE.D1.80.D1.8B.D1.85_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B9 формулой Тейлора] для логарифма). | <tex>2^n(1-\frac1{r+1})^k \simeq 1</tex>. Отсюда <tex>k=O(rn)</tex> (это можно получить, выразив <tex>k</tex> через <tex>n</tex> и <tex>r</tex> и воспользовавшись [http://ru.wikipedia.org/wiki/Ряд_Тейлора#.D0.A0.D1.8F.D0.B4.D1.8B_.D0.9C.D0.B0.D0.BA.D0.BB.D0.BE.D1.80.D0.B5.D0.BD.D0.B0_.D0.BD.D0.B5.D0.BA.D0.BE.D1.82.D0.BE.D1.80.D1.8B.D1.85_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B9 формулой Тейлора] для логарифма). | ||
− | Таким образом, мы можем разрешить язык <tex>LSAT</tex> за полиномиальное время, найдя лексиграфически минимальную строку, удовлетворяющую формулу, и сравнив её с нашим аргументом. Так как <tex>LSAT\in \mathrm{NPC}</tex>, то мы можем решить любую задачу из <tex>\mathrm{NP}</tex> за полиномиальное время, а значит <tex>\mathrm{P}=\mathrm{NP}</tex>. | + | Таким образом, мы можем разрешить язык <tex>\mathrm{LSAT}</tex> за полиномиальное время, найдя лексиграфически минимальную строку, удовлетворяющую формулу, и сравнив её с нашим аргументом. Так как <tex>\mathrm{LSAT}\in \mathrm{NPC}</tex>, то мы можем решить любую задачу из <tex>\mathrm{NP}</tex> за полиномиальное время, а значит <tex>\mathrm{P}=\mathrm{NP}</tex>. |
}} | }} |
Версия 01:04, 3 июня 2012
Определение: |
. |
Лемма (1): |
. |
Доказательство: |
|
Лемма (2): |
. Тогда . |
Доказательство: |
. Тогда . Так как , то , следовательно . |
Теорема (Махэни): |
. |
Доказательство: |
Пусть .Так как , и , то существует полиномиальная функция сведения такая, что .Так как функция работает полиномиальное время, и ( — длина вектора ), то , где — полином. . Следовательно, , где — некоторый полином.Тогда , где — также полином.Опишем алгоритм для нахождения лексиграфически минимальной строки , удовлетворяющей формулу .Пусть . Изначально область поиска для — все строки длины . Опишем одну итерацию поиска.Разобьём текущее множество строк на подотрезок примерно равной длины. Обозначим концы полученных подотрезков . Пусть теперь .Из леммы (2) мы знаем, что, начиная с некоторого , все пары . Тогда по сведению для всех .Рассмотрим два случая:
В обоих случаях мы сузили область поиска как минимум на её размера.Будем повторять эту процедуру до тех пор, пока не останется не более строки, которые мы можем проверить за полиномиальное время. Если какая-то из них удовлетворила формулу , то удовлетворяет . Иначе, не существует.Оценим время работы нашего алгоритма. После итераций у нас останется не более строк. Оценим .формулой Тейлора для логарифма). Таким образом, мы можем разрешить язык . Отсюда (это можно получить, выразив через и и воспользовавшись за полиномиальное время, найдя лексиграфически минимальную строку, удовлетворяющую формулу, и сравнив её с нашим аргументом. Так как , то мы можем решить любую задачу из за полиномиальное время, а значит . |