Теорема Бермана — Форчуна — различия между версиями
AndrewD (обсуждение | вклад) |
AndrewD (обсуждение | вклад) |
||
| Строка 4: | Строка 4: | ||
|proof=Пусть <tex>L</tex> {{---}} <tex>\mathrm{coNP}</tex>-полный. Тогда <tex>L \in \mathrm{coNP}</tex> и <tex>\overline L \in \mathrm{NP}</tex>. | |proof=Пусть <tex>L</tex> {{---}} <tex>\mathrm{coNP}</tex>-полный. Тогда <tex>L \in \mathrm{coNP}</tex> и <tex>\overline L \in \mathrm{NP}</tex>. | ||
| − | Рассмотрим произвольный язык <tex>L_1 \in \mathrm{NP}</tex>. Тогда <tex>\overline {L_1} \in \mathrm{coNP}</tex>. Так как <tex>L</tex> {{---}} <tex>\mathrm{coNP}</tex>-полный, то <tex>\overline {L_1} \le L</tex>, следовательно <tex>L_1 \le \overline L</tex> (по [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи# | + | Рассмотрим произвольный язык <tex>L_1 \in \mathrm{NP}</tex>. Тогда <tex>\overline {L_1} \in \mathrm{coNP}</tex>. Так как <tex>L</tex> {{---}} <tex>\mathrm{coNP}</tex>-полный, то <tex>\overline {L_1} \le L</tex>, следовательно <tex>L_1 \le \overline L</tex> (по [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи#lemma|лемме]]). |
Получили, что <tex>\overline L \in \mathrm{NP}</tex> и <tex>\forall L_1 \in \mathrm{NP} \Rightarrow L_1 \le \overline L</tex>. Значит <tex>\overline L \in \mathrm{NPC}</tex>. | Получили, что <tex>\overline L \in \mathrm{NP}</tex> и <tex>\forall L_1 \in \mathrm{NP} \Rightarrow L_1 \le \overline L</tex>. Значит <tex>\overline L \in \mathrm{NPC}</tex>. | ||
| Строка 18: | Строка 18: | ||
|about=2 | |about=2 | ||
|statement=<tex>\mathrm{TAUT} \in \mathrm{coNPC}</tex>. | |statement=<tex>\mathrm{TAUT} \in \mathrm{coNPC}</tex>. | ||
| − | |proof=<tex>\overline {\mathrm{TAUT}} = \{\phi | \exists x : \phi(x) \ne 1\} = \{\phi | \overline {\phi} \in SAT\}</tex>, то есть <tex>\overline {\mathrm{TAUT}} \in \mathrm{NPC | + | |proof=<tex>\overline {\mathrm{TAUT}} = \{\phi | \exists x : \phi(x) \ne 1\} = \{\phi | \overline {\phi} \in \mathrm{SAT}\}</tex>, то есть <tex>\mathrm{SAT} \le \overline {\mathrm{TAUT}} \, (f(\phi) = \overline {\phi})</tex>. Кроме того, <tex>\overline {\mathrm{TAUT}} \in NP</tex> <tex>(</tex>в качестве сертификата используется <tex>x</tex>, на котором <tex>\phi(x) \ne 1)</tex>. Значит <tex>\overline{\mathrm{TAUT}} \in NPC</tex>. Тогда по лемме (1) <tex>\mathrm{TAUT} \in \mathrm{coNPC}</tex>. |
}} | }} | ||
Версия 01:44, 3 июня 2012
| Лемма (1): |
Язык является -полным тогда и только тогда, когда является -полным. |
| Доказательство: |
|
Пусть — -полный. Тогда и . Рассмотрим произвольный язык . Тогда . Так как — -полный, то , следовательно (по лемме). Получили, что и . Значит . В обратную сторону доказательство аналогично. |
| Определение: |
| — булева формула . |
| Лемма (2): |
. |
| Доказательство: |
| , то есть . Кроме того, в качестве сертификата используется , на котором . Значит . Тогда по лемме (1) . |
| Определение: |
| полином . |
| Теорема (Берман, Форчун): |
. |
| Доказательство: |
|
Пусть существует . Разрешим за полином. Для начала напишем программу, разрешающую : : if return 0 if return 1 if return return Ответом будет . Так как и , то , то есть . Поэтому, если в предыдущей программе заменить все обращения к , на , то полученная программа по-прежнему будет разрешать . Оценим необходимый размер . Можно считать, что , где , а — монотонно возрастающий полином. Тогда . Так как , то , где — полином. Можно считать, что монотонно возрастает. Тогда размер можно оценить сверху: , где — полином. : if return 0 if return 1 if //(1) return //(2) if exit return Рассмотрим двоичное дерево, получающееся в результате рекурсивных вызовов данной программы. Рассмотрим произвольный элемент . Заметим, что условие в ходе выполнения программы является ложным при обращении к элементу не более одного раза. Так как всего в не более элементов, то суммарно за все время выполнения программы условие принимает ложное значение не более раз. Отсюда следует, что присваивание выполняется не более раз, а значит в дереве не более внутренних вершин. Значит всего в дереве не более вершин, то есть данная программа работает за полиномиальное время. Итого, данная программа разрешает за полиномиальное время. А так как , то , то есть , откуда . |