Ответ 1
Чтобы показать проблему, NP завершен, вам необходимо:
Покажите, что он находится в NP
Другими словами, с учетом некоторой информации C
вы можете создать алгоритм полиномиального времени V
, который будет проверять для каждого возможного ввода X
, является ли X
в вашем домене или нет.
Пример
Докажите, что проблема вершинных покрытий (т.е. для некоторого графа G
, имеет ли она набор вершинного размера размера k
такой, что каждое ребро в G
имеет по крайней мере одну вершину в наборе покрытий?) находится в NP:
-
наш вход
X
представляет собой некоторый графикG
и некоторое числоk
(это из определения проблемы) -
Возьмите нашу информацию
C
как "любое возможное подмножество вершин в графеG
размераk
" -
Затем мы можем написать алгоритм
V
, который при заданныхG
,k
иC
вернет, является ли этот набор вершин вершинным накрытием дляG
или нет, в полиномиальное время.
Тогда для каждого графа G
, если существует некоторое "возможное подмножество вершин в G
размера k
", которое является вершинным накрытием, то G
находится в NP
.
Примечание, которое мы делаем не, нужно найти C
в полиномиальное время. Если бы мы могли, проблема была бы в `P.
Примечание, что алгоритм V
должен работать для каждого G
для некоторого C
. Для каждого входа должна быть существует информация, которая может помочь нам проверить, находится ли вход в проблемной области или нет. То есть не должно быть ввода, где информация не существует.
Докажите, что это NP Hard
Это включает в себя получение известной NP-полной проблемы, такой как SAT, набор булевых выражений в форме:
(A или B или C) и (D или E или F) и...
где выражение является выполнимым, то есть существует некоторая установка для этих булевых, что делает выражение истинным.
Затем уменьшите NP-полную проблему до вашей проблемы в полиномиальное время.
То есть, учитывая некоторый ввод X
для SAT
(или любую проблему, связанную с NP-полным, которую вы используете), создайте для своей проблемы некоторый ввод Y
, так что X
находится в SAT тогда и только тогда, когда Y
находится в вашей проблеме. Функция f : X -> Y
должна выполняться в полиномиальном времени.
В приведенном выше примере вход Y
будет графиком G
, а размер вершинного покрытия k
.
Для полного доказательства вам нужно будет доказать оба:
-
что
X
находится вSAT
= >Y
в вашей проблеме -
и
Y
в вашей проблеме = >X
вSAT
.
Ответ marcog содержит ссылку на несколько других NP-полных проблем, которые вы могли бы свести к вашей проблеме.
Сноска: на шаге 2 (Докажите, что это NP-hard), уменьшая еще одну NP-сложную (не обязательно NP-полную) проблему до текущей проблемы, так как NP-полные проблемы подмножество NP-жестких задач (которые также находятся в NP).