Теорема Бермана — Форчуна — различия между версиями
AndrewD (обсуждение | вклад) |
AndrewD (обсуждение | вклад) |
||
| Строка 6: | Строка 6: | ||
Рассмотрим произвольный язык <tex>L_1 \in NP</tex>. Тогда <tex>\overline {L_1} \in coNP</tex>. Так как <tex>L \in coNPC</tex>, то <tex>\overline {L_1} \le L</tex>, следовательно <tex>L_1 \le \overline L</tex> (по [[Сведение по Карпу. Трудные и полные задачи|лемме]]). | Рассмотрим произвольный язык <tex>L_1 \in NP</tex>. Тогда <tex>\overline {L_1} \in coNP</tex>. Так как <tex>L \in coNPC</tex>, то <tex>\overline {L_1} \le L</tex>, следовательно <tex>L_1 \le \overline L</tex> (по [[Сведение по Карпу. Трудные и полные задачи|лемме]]). | ||
| − | Получили, что <tex>\overline L \in NP</tex> и <tex>\forall L_1 \in NP \ | + | Получили, что <tex>\overline L \in NP</tex> и <tex>\forall L_1 \in NP \Rightarrow L_1 \le \overline L</tex>. Значит <tex>\overline L \in NPC</tex>. |
В обратную сторону доказательство аналогично. | В обратную сторону доказательство аналогично. | ||
}} | }} | ||
| Строка 12: | Строка 12: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | <tex>TAUT = \{\phi</tex> {{---}} булева формула <tex>| \forall x \, \phi(x)=1\}</tex>. | + | <tex>TAUT = \{\phi</tex> {{---}} булева формула <tex>| \forall x = (x_1, x_2, \ldots , x_m) \, \phi(x)=1\}</tex>. |
}} | }} | ||
Версия 23:25, 27 апреля 2012
| Лемма (1): |
| Доказательство: |
|
Пусть . Тогда и . Рассмотрим произвольный язык . Тогда . Так как , то , следовательно (по лемме). Получили, что и . Значит . В обратную сторону доказательство аналогично. |
| Определение: |
| — булева формула . |
| Лемма (2): |
| Доказательство: |
| , то есть . Тогда по лемме (1) . |
| Определение: |
| полином . |
| Теорема (Махэни, light): |
| Доказательство: |
|
Пусть существует . Разрешим за полином. Для начала напишем программу, разрешающую : if return if return 0 if return 1 return Ответом будет . Так как и , то , то есть . Поэтому, если в предыдущей программе заменить все обращения к , на , то полученная программа по прежнему будет разрешать . Оценим необходимый размер . Можно считать, что , где , а — монотонно возрастающий полином. Тогда . Так как , то , где — полином. Можно считать, что монотонно возрастает. Тогда размер можно оценить сверху: , где — полином. if //(1) return if return 0 if return 1 //(2) if exit return Рассмотрим двоичное дерево, получающееся в результате рекурсивных вызовов данной программы. Рассмотрим произвольный элемент . Заметим, что условие в ходе выполнения программы является ложным при обращении к элементу не более одного раза. Так как всего в не более элементов, то суммарно за все время выполнения программы условие принимает ложное значение не более раз. Отсюда следует, что присваивание выполняется не более раз, а значит в дереве не более внутренних вершин. Значит всего в дереве не более вершин, то есть данная программа работает за полиномиальное время. Итого, данная программа разрешает за полиномиальное время. А так как , то , то есть , откуда . |