Проблемы с НП и нужна какая-то деталь?
Я вижу один решенный на Алгоритмы. Что из следующего есть в NP?
a) Decision Version of TSP
b) Array is Sorted?
c) Finding the maximum flow network
d) Decision version of 0/1 knapsack?
Моя заметка, говорит, что все это в NP, любой может добавить немного деталей для каждого, почему? а меня смущает около 0/1 ранца, это NP? NP-трудной? или NP-Complete?
Благодарю.
2 ответа
Они все в НП, потому что:
Это проверяется за полиномиальное время. Учитывая некоторый маршрут, мы можем легко проверить, не превышает ли его длина данное значение.
Это в классе P (я думаю, что решение за полиномиальное время очевидно), что автоматически означает, что это в NP.
Опять же, существует решение за полиномиальное время, что означает, что оно находится в P. Таким образом, оно находится в NP.
Мы можем проверить это за полиномиальное время, учитывая соответствующее подмножество. Следовательно, это в NP по определению.
О версии решения задачи о рюкзаке 0/1: в NP. Он также известен как NP-полный (доказательство слишком длинное, чтобы писать здесь, вот ссылка: доказательство). Это также означает, что это NP-сложная задача (любая NP-полная задача является NP-сложной по определению).
PS Я предполагаю, что "найти максимальный поток" означает версию решения здесь.
NP означает, что существует детерминированный алгоритм, который выполняется за полиномиальное время с масштабом проблемы, которая может проверить сертификат. В этом контексте сертификат можно рассматривать как возможное решение проблемы. Сертификат может быть сгенерирован за недетерминированное полиномиальное время. Например, для TSP сертификатом может быть любой путь. В этом случае верификатор должен проверить, что путь гамильтонов и меньше или равен заданной границе.
Что-то X-Hard, если это так же сложно, как X. Для NP-hard это формализуется тем фактом, что каждая проблема в NP может быть сведена за полиномиальное время к этой проблеме.
Проблема в x-Complete, если она одновременно является элементом x и x-Hard. Таким образом, для NP-завершения это означает, что проблема NP-сложна и также является частью NP.
Теперь первая проблема явно в NP. Можно недетерминированным образом сгенерировать все возможные циклы длиной n-1 или менее и позволить верификатору проверить, все ли города посещены ровно один раз, а общий вес меньше или равен заданной длине.
Второе можно даже сделать без использования недетерминизма, вы просто перебираете уже существующий массив и проверяете, больше или равен ли каждый элемент, чем предыдущий.
Третий также может быть сделан детерминистически: есть алгоритм Max-Flow, который работает в O (V ^ 2 E).
Последняя проблема также в NP: сертификат здесь является цепочкой битов на элемент с 1
это означает, что предмет принадлежит к рюкзаку и 0
если это не так. Верификатор должен проверить, не превышает ли общий вес вместимость рюкзака и не превышает ли общее полезное значение заданное.
Таким образом, все проблемы в NP, не все проблемы, однако (обязательно) NP-сложные (и, следовательно, по степени не NP-полные). Чтобы доказать, что что-то является NP-трудным, достаточно показать, что от этой проблемы есть сокращение от SAT. Поскольку доказано, что все проблемы NP могут быть сведены к SAT, если вы можете уменьшить SAT за полиномиальное время до вашей проблемы, вы можете преобразовать все проблемы с помощью SAT. Подробности можно посмотреть, но для следующих проблем можно построить сокращение от SAT:
- Решение проблемы коммивояжера; а также
- Решение задачи о ранце
С научной точки зрения, P и NP содержат только варианты решения проблем. Чтобы обойти эту проблему, они ввели FP и FNP. Здесь мы будем предполагать, что FP "немного равен" P (из контекста ясно, является ли это вариантом решения), а FNP более или менее эквивалентен, но, очевидно, недостаточно, чтобы люди, читающие предыдущие комментарии, могли понять с равенством мы имеем в виду "эквивалентность" NP. Большинство разработчиков алгоритмов (даже академических) тоже не делают различий и говорят, что их "алгоритм находится в P" (тогда как они фактически означают, что их алгоритм находится в FP). Можно сказать, что это "экономический взгляд" (в отличие от "академического взгляда").
Итак, подведем итог: таблица гласит:
Problem | P | NP | NP-hard | NP-complete
------------------------------------+---+----+---------+------------
a) Decision Version of TSP | * | Y | Y | Y
b) Array is Sorted? | Y | Y | ? | ?
c) Finding the maximum flow network | Y | Y | ? | ?
d) Decision version of 0/1 knapsack | * | Y | Y | Y
------------------------------------+---+----+---------+-------------
В случае, когда P! = NP (что еще не доказано и, вероятно, не будет доказано в ближайшем будущем), существуют алгоритмы, для которых существует детерминированный полиномиальный алгоритм, который решает проблему (не проверяя решение), а затем определяет, является ли массив сортируется или генерирует максимальный поток не NP-жесткий.
Так что в случае P=NP, вопросительные знаки (?
) должно быть Y
иначе они должны быть N
, *
наоборот: в случае P=NP ответ Y
в случае P! = NP (очень вероятно), *
является N
,