Задача о выполнимости: различия между версиями
Glk (обсуждение | вклад) (Создана новая страница размером '''Задача о выполнимости''' (''Satisfiability problem'') - одна из основных ''<math>\cal NP</math>-по...) |
KEV (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''Задача о выполнимости''' (''Satisfiability problem'') | '''Задача о выполнимости''' (''[[Satisfiability problem]]'') — одна из основных [[NP-Полная задача|''<math>\mathcal NP</math>-полных'' задач]]. Формулируется следующим образом. | ||
одна из основных ''<math>\ | |||
Формулируется следующим образом. | |||
У с л о в и е. Задано множество булевых переменных <math>V</math> и | У с л о в и е. Задано множество булевых переменных <math>V</math> и правильно построенное булево выражение <math>E</math> над <math>V</math>. | ||
правильно построенное булево выражение <math>E</math> над <math>V</math>. | |||
В о п р о с. Существует ли набор значений переменных | В о п р о с. Существует ли набор значений переменных множества <math>V</math>, при котором выражение <math>E</math> выполнено, т.е. принимает значение "истина"? | ||
множества <math>V</math>, при котором выражение <math>E</math> выполнено, т.е. | |||
принимает значение "истина"? | |||
Можно показать, что даже при более жестких ограничениях на | Можно показать, что даже при более жестких ограничениях на вид формулы задача выполнимости булевых формул также <math>{\mathcal NP}</math>-полна. | ||
вид формулы задача выполнимости булевых формул также <math>{\ | |||
NP}</math>-полна. | |||
Булева формула находится в ''конъюнктивной нормальной | Булева формула находится в ''конъюнктивной нормальной форме'' (КНФ), если она представляет собой произведение сумм литералов, где каждый ''литерал'' имеет вид <math>x</math> или <math>\lnot x</math> для некоторой переменной <math>x</math>. | ||
форме'' | Задача выполнимости формул, находящихся в КНФ, <math>{\mathcal NP}</math>-полна. | ||
литералов, где каждый ''литерал'' имеет вид <math>x</math> или <math>\lnot | |||
x</math> для некоторой переменной <math>x</math>. | |||
Задача выполнимости формул, находящихся в КНФ, <math>{\ | |||
NP}</math>-полна. | |||
Говорят, что булева формула находится в <math>k</math>-''конъюнктивной нормальной форме'' (<math>k</math>-КНФ), если она | Говорят, что булева формула находится в <math>k</math>-''конъюнктивной нормальной форме'' (<math>k</math>-КНФ), если она представляет собой произведение сумм, состоящих не более чем | ||
представляет собой произведение сумм, состоящих не более чем | |||
из <math>k</math> литералов. Задача <math>k</math>-''выполнимости'' (<math>k</math>-''ВЫП'') | из <math>k</math> литералов. Задача <math>k</math>-''выполнимости'' (<math>k</math>-''ВЫП'') | ||
состоит в выяснении выполнимости формулы, находящейся в | состоит в выяснении выполнимости формулы, находящейся в <math>k</math>-КНФ. | ||
<math>k</math>-КНФ. | |||
Для <math>k=1</math> и 2 известны ''полиномиальные алгоритмы'', | Для <math>k=1</math> и 2 известны ''[[полиномиальный алгоритм|полиномиальные алгоритмы]]'', проверяющие <math>k</math>-выполнимость, т.е. ''1-ВЫП, 2-ВЫП'' <math>\in \mathcal NP</math>. | ||
проверяющие <math>k</math>-выполнимость, т.е. ''1-ВЫП, 2-ВЫП'' <math>\in \ | Ситуация изменяется при <math>k=3</math>, поскольку задача о 3-выполнимости является <math>{\mathcal NP}</math>- полной. | ||
Ситуация изменяется при <math>k=3</math>, поскольку задача о | |||
3-выполнимости является <math>{\ | |||
См. также ''Задача о вершинном покрытии, Задача о клике, Задача о неэквивалентности регулярных выражений, Задача о разбиении, Задача о точном покрытии 3- | ==См. также== | ||
* ''[[Задача о вершинном покрытии]],'' | |||
* ''[[Задача о клике]],'' | |||
* ''[[Задача о неэквивалентности регулярных выражений]],'' | |||
* ''[[Задача о разбиении]],'' | |||
* ''[[Задача о точном покрытии 3-множествами]],'' | |||
* ''[[Задача о трехмерном сочетании]],'' | |||
* ''[[Классы P и NP|Классы <math>\mathcal P</math> и <math>\mathcal NP</math>]],'' | |||
* ''[[Метод локальной замены]],'' | |||
* ''[[Метод построения компонент]],'' | |||
* ''[[Метод сужения задачи]],'' | |||
* ''[[Полиномиальная сводимость (трансформируемость)]],'' | |||
* ''[[NP-Полная задача|<math>\mathcal NP</math>-полная задача]],'' | |||
* ''[[Труднорешаемая задача]].'' | |||
==Литература== | ==Литература== | ||
* Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. — М.: Мир, 1979. | |||
* Касьянов В.Н. Лекции по теории формальных языков, автоматов и сложности вычислений. — Новосибирск: НГУ, 1995. |
Текущая версия от 13:57, 11 февраля 2011
Задача о выполнимости (Satisfiability problem) — одна из основных [math]\displaystyle{ \mathcal NP }[/math]-полных задач. Формулируется следующим образом.
У с л о в и е. Задано множество булевых переменных [math]\displaystyle{ V }[/math] и правильно построенное булево выражение [math]\displaystyle{ E }[/math] над [math]\displaystyle{ V }[/math].
В о п р о с. Существует ли набор значений переменных множества [math]\displaystyle{ V }[/math], при котором выражение [math]\displaystyle{ E }[/math] выполнено, т.е. принимает значение "истина"?
Можно показать, что даже при более жестких ограничениях на вид формулы задача выполнимости булевых формул также [math]\displaystyle{ {\mathcal NP} }[/math]-полна.
Булева формула находится в конъюнктивной нормальной форме (КНФ), если она представляет собой произведение сумм литералов, где каждый литерал имеет вид [math]\displaystyle{ x }[/math] или [math]\displaystyle{ \lnot x }[/math] для некоторой переменной [math]\displaystyle{ x }[/math]. Задача выполнимости формул, находящихся в КНФ, [math]\displaystyle{ {\mathcal NP} }[/math]-полна.
Говорят, что булева формула находится в [math]\displaystyle{ k }[/math]-конъюнктивной нормальной форме ([math]\displaystyle{ k }[/math]-КНФ), если она представляет собой произведение сумм, состоящих не более чем из [math]\displaystyle{ k }[/math] литералов. Задача [math]\displaystyle{ k }[/math]-выполнимости ([math]\displaystyle{ k }[/math]-ВЫП) состоит в выяснении выполнимости формулы, находящейся в [math]\displaystyle{ k }[/math]-КНФ.
Для [math]\displaystyle{ k=1 }[/math] и 2 известны полиномиальные алгоритмы, проверяющие [math]\displaystyle{ k }[/math]-выполнимость, т.е. 1-ВЫП, 2-ВЫП [math]\displaystyle{ \in \mathcal NP }[/math]. Ситуация изменяется при [math]\displaystyle{ k=3 }[/math], поскольку задача о 3-выполнимости является [math]\displaystyle{ {\mathcal NP} }[/math]- полной.
См. также
- Задача о вершинном покрытии,
- Задача о клике,
- Задача о неэквивалентности регулярных выражений,
- Задача о разбиении,
- Задача о точном покрытии 3-множествами,
- Задача о трехмерном сочетании,
- Классы [math]\displaystyle{ \mathcal P }[/math] и [math]\displaystyle{ \mathcal NP }[/math],
- Метод локальной замены,
- Метод построения компонент,
- Метод сужения задачи,
- Полиномиальная сводимость (трансформируемость),
- [math]\displaystyle{ \mathcal NP }[/math]-полная задача,
- Труднорешаемая задача.
Литература
- Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. — М.: Мир, 1979.
- Касьянов В.Н. Лекции по теории формальных языков, автоматов и сложности вычислений. — Новосибирск: НГУ, 1995.