Чтобы показать, что проблема завершена, вам нужно:
Показать в 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) и ...
где выражение выполнимо , то есть существует некоторая настройка для этих логических значений, которая делает выражение true .
Тогда уменьшите проблему NP-complete до вашей задачи за полиномиальное время .
То есть, с учетом некоторого ввода X
для SAT
(или любой используемой вами NP-complete задачи), создайте некоторый ввод Y
для вашей задачи, такой, что X
находится в SAT тогда и только тогда, когда Y
в вашей проблеме. Функция f : X -> Y
должна выполняться за полиномиальное время .
В приведенном выше примере входом Y
будет график G
и размер покрытия вершины k
.
Для полного доказательства вы должны доказать оба:
ответ marcog связан с несколькими другими NP-полными проблемами, которые вы можете свести к своей проблеме.
Сноска. На шаге 2 ( Докажите, что это NP-сложный ) подойдет еще одна проблема NP-hard (не обязательно NP-полная) до текущей, так как проблемы с NP-полной подмножество NP-сложных задач (которые также есть в NP).