Как доказать, что задача является NP-полной?
У меня проблема с расписанием. Мне нужно доказать, что задача является NP-полной. Какие могут быть методы, чтобы доказать это NP complete?
5 ответов:
чтобы показать, что проблема NP завершена, вам нужно:
показать это в NP
другими словами, дана некоторая информация
C, вы можете создать алгоритм полиномиального времениVчто будет проверять для каждого возможного входного сигналаXлиXв домене или нет.пример
доказать, что проблема вершинных покрытий (то есть для некоторого графа
G,имеет ли он набор вершинного покрытия размераkтакой, что каждый край вGимеет по крайней мере одну вершину в крышке установлен?) находится в НП:
наш вход
Xэто какой-то графGи какое-то количествоk(это из определения проблемы)принять нашу информацию
Cбыть " любым возможным подмножеством вершин в графеGв размереk"тогда мы можем написать алгоритм
V, что с учетомG,kиC, вернет ли этот набор вершин является вершинным покрытием дляGили нет,полиномиальное время.тогда для каждого графика
G, если существует некоторое " возможное подмножество вершин вGв размереk" который является вершинным покрытием, тоGнаходится вNP.Примечание что мы делаем не нужно найти
Cза полиномиальное время. Если бы проблема была бы в П.Примечание алгоритм
Vдолжны работать для каждыйGдля некоторыхC. Для каждого входа должно быть существует информация, которая может помочь нам проверить, находится ли вход в проблемной области или нет. То есть, не должно быть входа, где информация не существует.доказать, что это NP трудно
это включает в себя получение известной NP-полной проблемы, как села, набор булевых выражений в виде:
(A или B или C) и (D или E или F) И...
где выражение выполнимой, то есть существует некоторая настройка для этих булевых значений, которая делает выражение правда.
затем уменьшите NP-полную проблему до вашей проблемы за полиномиальное время.
то есть, учитывая некоторые вход
XнаSAT(или что-то еще NP-полная проблема, которую вы используете), создайте некоторый входYдля вашей проблемы, такой чтоXнаходится в СБ тогда и только тогда, когдаYв вашей проблеме. Функцияf : X -> Yдолжны работать в полиномиальное время.в приведенном выше примере вход
Yбыл бы графGи размер крышки вершиныk.на полное доказательство, вы должны были бы доказать оба:
это
XвSAT=>Yваши проблемыи
Yв ваши проблемы =>XнаSAT.marcog это ответ имеет связь с несколькими другими NP-полными проблемами, которые вы можете свести к своей проблеме.
сноска: в шаге 2 (доказать, что это NP-трудно), сведение другой NP-жесткой (не обязательно NP-полной) проблемы к текущей проблеме будет сделано, так как NP-полные проблемы являются a подмножество NP-трудных задач (которые также находятся в NP).
вам нужно уменьшить NP-полную проблему до проблемы, которую вы имеете. Если сокращение может быть сделано за полиномиальное время, то вы доказали, что ваша проблема NP-полная, если проблема уже находится в NP, потому что:
Это не проще, чем NP-полная задача, так как она может быть сведена к ней за полиномиальное время, что делает задачу NP-трудной.
смотрите конец http://www.ics.uci.edu / ~eppstein/161/960312.html для большего.
во-первых, вы показываете, что он лежит в NP вообще.
тогда вы найдете еще одну проблему, которую вы уже знаете, является NP полной и показать, как вы полиномиально уменьшить NP трудную проблему к вашей проблеме.
- познакомьтесь с подмножеством NP полных задач
- докажите твердость NP: уменьшите произвольный экземпляр полной задачи NP до экземпляра вашей проблемы. Это самый большой кусок пирога, и где знакомство с NP-полной проблемы платит. Сокращение будет более или менее сложным в зависимости от NP полной проблемы, которую вы выберете.
- докажите, что ваша проблема находится в NP : разработайте алгоритм, который может проверить в полиномиальное время, является ли экземпляр решения.
чтобы доказать, что задача L является NP-полной, нам нужно сделать следующие шаги:
- докажите, что ваша задача L принадлежит NP (то есть, что при наличии решения вы можете проверить его в полиномиальное время)
- выберите известную NP-полную задачу L'
- опишите алгоритм f, который преобразует L ' в L
- докажите, что ваш алгоритм верен (формально: x ∈ L ' тогда и только тогда, когда f (x) ∈ L )
- доказать, что алгоритм работает за полиномиальное Ф время