NP-полнота задачи о выполнимости булевой формулы в форме 3-КНФ — различия между версиями
| Строка 6: | Строка 6: | ||
Для того, чтобы доказать <tex>NP</tex>-полноту задачи, необходимо установить следующие факты: | Для того, чтобы доказать <tex>NP</tex>-полноту задачи, необходимо установить следующие факты: | ||
| + | # <tex> 3SAT \in NP </tex>. | ||
# <tex> 3SAT \in NPH </tex>; | # <tex> 3SAT \in NPH </tex>; | ||
| − | |||
| − | + | ---- | |
| + | # Для того, чтобы доказать, что <tex>3SAT \in NP </tex>, предъявим сертификат: набор <tex>x_1 \ldots x_{n}</tex>, удовлетворяющий формулу. | ||
| + | |||
| + | ---- | ||
| + | Теперь докажем <tex>NP</tex>-трудность <tex>3SAT</tex>. | ||
Для этого покажем, что <tex>CNFSAT \le 3SAT</tex>, то есть <tex>CNFSAT</tex> сводится по Куку к <tex>3SAT</tex>. | Для этого покажем, что <tex>CNFSAT \le 3SAT</tex>, то есть <tex>CNFSAT</tex> сводится по Куку к <tex>3SAT</tex>. | ||
Версия 17:26, 16 марта 2010
Теорема
, т.е. задача о выполнимости булевой формулы в форме 3-КНФ -полна.
Доказательство
Для того, чтобы доказать -полноту задачи, необходимо установить следующие факты:
- .
- ;
- Для того, чтобы доказать, что , предъявим сертификат: набор , удовлетворяющий формулу.
Теперь докажем -трудность . Для этого покажем, что , то есть сводится по Куку к .
Рассмотрим один член булевой формулы в форме КНФ (скобку). В форме 3-КНФ этот член должен иметь вид . Научимся приводить члены вида , , к нужному виду.
- заменим на . Ясно, что последняя формула выполнима тогда и только тогда, когда выполнима исходная, при любых ;
- заменим на - свели задачу к предыдущей;