Каковы различия между NP, NP-Complete и NP-Hard?

в чем разница между NP, NP-Complete и NP-Hard?

Я знаю о многих ресурсах по всему интернету. Я хотел бы прочитать ваши объяснения, и причина в том, что они могут отличаться от того, что там, или это там, и я не знаю.

10 ответов


я предполагаю, что вы ищете интуитивные определения, так как технические определения требуют довольно много времени, чтобы понять. Прежде всего, давайте вспомним предварительную концепцию, необходимую для понимания этих определений.

  • решение проблемы: проблема с да или нет ответ.

теперь, давайте определим те сложности классы.

P

P-класс сложности, представляющий множество всех задач решения, которые могут быть решены в полиномиальное время.

то есть, учитывая экземпляр задачи, ответ да или нет может быть решен в полиномиальное время.

пример

дан связный граф G, могут ли его вершины быть окрашены двумя цветами, чтобы не было ребра монохроматический?

алгоритм: начните с произвольной вершины, покрасьте ее красным цветом, а все ее соседи синим и продолжайте. Остановитесь, когда у вас закончились вершины или вы вынуждены сделать ребро, чтобы обе его конечные точки были одного цвета.


NP

NP-класс сложности, представляющий множество всех задач решения, для которых экземпляры, где ответ "да", имеют доказательства, которые могут быть проверены в полиноме время.

это означает, что если кто-то дает нам экземпляр проблемы и сертификат (иногда называемый свидетелем) на ответ "Да", мы можем проверить, что это правильно в полиномиальное время.

пример

целочисленной факторизации находится в NP. Это проблема, которая дает целые числа n и m, есть целое число f С 1 < f < m, таких, что f делит n (f небольшой фактор n)?

это решение проблемы, потому что ответы да или нет. Если кто-то передает нам экземпляр проблемы (поэтому они передают нам целые числа n и m) и целое число f С 1 < f < m, и утверждают, что f фактор n (сертификат), мы можем проверить ответ в полиномиальное время выполнить раздел n / f.


NP-Complete

NP-Complete является класс сложности, представляющий множество всех задач X в NP, для которого можно уменьшить любую другую проблему NP Y to X за полиномиальное время.

интуитивно это означает, что мы можем решить Y быстро, если мы знаем, как решить X быстро. Именно,Y сводится к X, если существует алгоритм полиномиального времени f для преобразования экземпляров y of Y экземпляров x = f(y) of X в полиномиальной время, с тем свойством, что ответ y это да, если и только если ответ f(y) это да.

пример

3-SAT. Это проблема, в которой нам дается конъюнкция (ANDs) из 3-х предложений дизъюнкций (ORs), утверждений вида

(x_v11 OR x_v21 OR x_v31) AND 
(x_v12 OR x_v22 OR x_v32) AND 
...                       AND 
(x_v1n OR x_v2n OR x_v3n)

каждая x_vij является булевой переменной или отрицанием переменной из конечного предопределенного списка (x_1, x_2, ... x_n).

можно показать, что каждая проблема NP может быть уменьшена до 3-SAT. Доказательство этого является техническим и требует использования технического определения NP (на основе недетерминированных машин Тьюринга). Это известно как теорема Кука.

что делает NP-полные задачи важными, так это то, что если можно найти детерминированный алгоритм полиномиального времени для решения одной из них, каждая задача NP разрешима в полиномиальное время (одна задача для их решения все.)


NP-hard

интуитивно, это проблемы, которые по крайней мере, так же трудно, как NP-полные проблемы. Обратите внимание, что NP-трудной проблемы не обязательно быть в NP и они не должны быть проблемы, решение.

точное определение здесь заключается в том, что проблема X является NP-жестким, если есть NP-полная проблема Y, таких, что Y сводится к X in полиномиальное время.

но поскольку любая NP-полная задача может быть сведена к любой другой NP-полной задаче за полиномиальное время, все NP-полные задачи могут быть сведены к любой NP-сложной задаче за полиномиальное время. Тогда, если есть решение одной NP-трудной задачи в полиномиальное время, есть решение всех NP-задач в полиномиальное время.

пример

на остановить является NP-трудной проблемой. Это проблема в том, что задана программа P и ввода I, он остановится? Это проблема решения, но она не в NP. Понятно, что любая NP-полная задача может быть сведена к этому. В качестве другого примера, любая NP-полная задача является NP-трудной.

моя любимая NP-полная проблема-это проблема тральщик.


P = NP

это одна из самых известных проблем в информатике, и одна из самых важных нерешенные вопросы в математических науках. На самом деле,Институт Клэя предлагает миллион долларов за решение проблемы (Stephen Cook's рецензия на сайте глины довольно хорошо).

ясно, что P является подмножеством NP. Открытый вопрос заключается в том, имеют ли NP-задачи детерминированные полиномиальные временные решения. В основном считается, что нет. Вот выдающаяся недавняя статья о последней (и важность) задачи P = NP:состояние задачи P против NP.

лучшая книга на эту тему компьютеры и несговорчивость гари и Джонсон.


Я смотрел вокруг и видел много длинных объяснений. Вот небольшая диаграмма, которая может быть полезна для обобщения:

обратите внимание, как сложность возрастает сверху вниз: любой NP можно уменьшить до NP-Complete и ни NP-Complete можно уменьшить до NP-Hard, все в P (полиномиальное) время.

Если вы можете решить более сложный класс проблемы в P времени, это будет означать, что вы нашли, как решить все более простые проблемы в P времени (например, доказательство P = NP, если вы выясните, как решить любую NP-полную задачу за P времени).

____________________________________________________________
| Problem Type | Verifiable in P time | Solvable in P time | Increasing Difficulty
___________________________________________________________|           |
| P            |        Yes           |        Yes         |           |
| NP           |        Yes           |     Yes or No *    |           |
| NP-Complete  |        Yes           |      Unknown       |           |
| NP-Hard      |     Yes or No **     |      Unknown ***   |           |
____________________________________________________________           V

Примечания Yes или No данные:

  • * задача NP, которая также является P, разрешима за P время.
  • * * NP-трудная проблема, которая также NP-полная, проверяема во времени P.
  • * * * NP-полные проблемы (все из которых образуют подмножество NP-hard) могут быть. Остальная часть NP hard не является.

Я нашел этот схемы весьма полезно увидеть, как все эти типы соответствуют друг другу (обратите больше внимания на левую половину диаграммы).


Это очень неформальный ответ на поставленный вопрос.

может ли 3233 быть записано как произведение двух других чисел больше 1? Есть ли способ пройти путь вокруг всех семь мостов Кенигсберга не взяв мост дважды? Это примеры вопросов, которые имеют общую черту. Возможно, не ясно, как эффективно определить ответ, но если ответ "да", то есть короткое и быстрое подтверждение. В первом случае нетривиальная факторизация 51; во-вторых, маршрут для пешеходных мостов (установка ограничений).

A решение проблемы представляет собой набор вопросов с да или нет ответов, которые различаются только в одном параметре. Скажем, задача COMPOSITE={"Is n composite":n является целым числом} или EULERPATH={"делает граф G есть Эйлеров путь?": G является конечным графом}.

теперь некоторые проблемы решения поддаются эффективному, если не очевидные алгоритмы. Эйлер обнаружил эффективный алгоритм для таких задач, как" Семь мостов Кенигсберга " более 250 лет назад.

класс сложности NP - это класс проблем решения, где ответы " да " имеют короткие формулировки, быстро проверяют доказательства. Как композит. Один важный момент заключается в том, что это определение ничего не говорит о том, насколько сложна проблема. Если у вас есть правильный, эффективный способ решения решение проблемы, просто записывая шаги в решении, является достаточным доказательством.

исследование алгоритмов продолжается, и все время создаются новые умные алгоритмы. Проблема, которую вы не знаете, как эффективно решить сегодня, может оказаться эффективным (если не очевидным) решением завтра. На самом деле, это заняло исследователей до 2002 чтобы найти эффективное решение для COMPOSITE! Со всеми этими достижениями действительно нужно задаться вопросом: Это бит о том, чтобы иметь короткий доказательства просто иллюзия? Может быть!-Каждое -25--> проблема решения, которая поддается эффективным доказательствам, имеет эффективное решение? никто не знает.

возможно, самый большой вклад в эту область пришел с открытием своеобразного класса проблем NP. Играя с моделями схем для вычислений, Стивен Кук нашел проблему решения многообразия NP, которая была доказуемо такой же трудной или более трудной, чем другая проблема NP. - эффективное решение для булева проблема выполнимости может использоваться для создания эффективного решения для другие проблема в NP. Вскоре после этого Ричард Карп показал, что ряд других проблем с решением может служить той же цели. Эти проблемы, в некотором смысле "самые сложные" проблемы в НП, стали известны как NP-complete проблемы.

конечно, NP-это только класс проблем решения. Многие проблемы не естественно заявил в таким образом: "найти коэффициенты N", "найти кратчайший путь в графе G, который посещает каждую вершину", "дать набор назначений переменных, который делает следующее булево выражение истинным". Хотя можно неофициально говорить о некоторых таких проблемах, находящихся "в NP", технически это не имеет большого смысла-они не являются проблемами решения. Некоторые из этих проблем могут даже иметь ту же силу, что и проблема NP-complete: эффективное решение этих (неразрешенных) проблем приведет непосредственно к эффективному решению любой проблемы NP. Такая проблема называется NP-hard.


в дополнение к другим отличным ответам, вот типичные схемы люди используют, чтобы показать разницу между NP, NP-Complete и NP-Hard:

enter image description here


самый простой способ объяснить P v. NP и тому подобное, не вдаваясь в технические подробности, - сравнить "проблемы слов"с" проблемами множественного выбора".

когда вы пытаетесь решить "проблему слова", вы должны найти решение с нуля. Когда вы пытаетесь решить "проблемы с множественным выбором", у вас есть выбор: либо решить его, как "проблему слов", либо попытаться подключить каждый из ответов, данных вам, и выбрать подходящий ответ.

Это часто бывает ,что" проблема множественного выбора "намного проще, чем соответствующая" проблема слова": замена ответов кандидата и проверка их соответствия могут потребовать значительно меньше усилий, чем поиск правильного ответа с нуля.

теперь, если мы согласимся с усилием, которое занимает полиномиальное время "легко", то класс P будет состоять из" простых задач слов", А класс NP будет состоять из"простых задач множественного выбора".

суть р В. Н. п. вопрос:"есть ли какие-либо проблемы с множественным выбором, которые не так легко, как проблемы со словом"? То есть, существуют ли проблемы, для которых легко проверить правильность данного ответа, но найти этот ответ с нуля сложно?

теперь, когда мы интуитивно понимаем, что такое NP, мы должны бросить вызов нашей интуиции. Оказывается, существуют" проблемы множественного выбора", которые в некотором смысле являются самыми трудными из всех: если бы кто-то нашел решение одной из этих " самых трудных из них все " проблемы можно было бы найти решение всех проблем NP! Когда Кук открыл это 40 лет назад это стало полной неожиданностью. Эти "самые сложные из них" проблемы известны как NP-hard. Если вы найдете "решение проблемы word" для одного из них, вы автоматически найдете "решение проблемы word" для каждой "простой проблемы с множественным выбором"!

наконец, NP-полные проблемы-это те, которые одновременно NP и NP-жесткие. Следуя нашей аналогии, они одновременно "легко, как проблемы с множественным выбором" и "самый сложный из них, как проблемы со словом".


P (полиномиальное время): как следует из самого названия, это проблемы, которые могут быть решены в полиномиальное время.

NP (недетерминированное полиномиальное время) : это задачи решения, которые могут быть проверены в полиномиальное время. Это означает, что если я утверждаю, что существует полиномиальное временное решение для конкретной задачи, вы просите меня доказать это. Затем, я дам вам доказательство, которое вы можете легко проверить за полиномиальное время. Такие проблемы называются проблемами NP. Отмечать что, здесь мы не говорим о том, есть ли полинома решение этой проблемы или нет. Но мы говорим о проверке решения данной задачи за полиномиальное время.

NP-Hard: это, по крайней мере, так же сложно, как и самые сложные проблемы в NP. Если мы можем решить эти проблемы за полиномиальное время, мы можем решить любую NP-проблему, которая может существовать. Обратите внимание, что эти проблемы не обязательно являются проблемами NP. Это означает, что мы можем / можем-не проверить решение этих задачи в полиномиальное время.

NP-Complete: это проблемы, которые являются как NP, так и NP-жесткими. Это означает, что если мы можем решить эти задачи, мы можем решить любую другую NP-задачу, и решения этих задач могут быть проверены в полиномиальное время.


Я думаю, мы можем ответить на него гораздо короче. Я ответил:вопрос, и копирование моего ответа оттуда

но во-первых, является NP-трудной проблемой, которую мы не можем доказать, что существует полиномиальное решение. NP-твердость некоторой " задачи-P "обычно доказывается преобразованием уже доказанной NP-трудной задачи в" задачу-P " в полиномиальное время.

чтобы ответить на остальную часть вопроса, вам сначала нужно понять, какой NP-жесткие проблемы также NP-полны. Если NP-трудная задача принадлежит множеству NP, то она NP-полная. Чтобы принадлежать множеству NP, проблема должна быть

(i) проблема решения,
(ii) число решений задачи должно быть конечным, и каждое решение должно иметь полиномиальную длину, и
(iii) учитывая решение полиномиальной длины, мы должны быть в состоянии сказать, является ли ответ на проблему да/нет

Итак, легко увидеть, что там может быть много NP-сложных проблем, которые не принадлежат множеству NP и сложнее решить. В качестве интуитивного примера, оптимизация-версия коммивояжера, где нам нужно найти фактическое расписание, сложнее, чем решение-версия коммивояжера, где нам просто нужно определить, существует ли расписание с длиной


NP-полные проблемы - это те проблемы, которые являются как NP-жесткими, так и в классе сложности NP. Поэтому, чтобы показать, что любая данная проблема NP-полная, вам нужно показать, что проблема находится как в NP, так и в NP-жестком.

задачи, которые находятся в классе сложности NP, могут быть решены недетерминированно в полиномиальное время, и возможное решение (т. е. сертификат) для задачи в NP может быть проверено на корректность в полиномиальное время.

An примером недетерминированного решения проблемы k-клики может быть что-то вроде:

1) случайным образом выберите K узлов из графика

2) Убедитесь, что эти K узлов образуют клику.

вышеуказанная стратегия является полиномиальной по размеру входного графа, и поэтому задача k-клики находится в NP.

обратите внимание, что все задачи, детерминированно разрешимые в полиномиальное время, также находятся в NP.

показывая, что проблема NP-hard обычно включает в себя сокращение от какой-либо другой NP-трудной задачи до вашей проблемы с помощью полиномиального отображения времени:http://en.wikipedia.org/wiki/Reduction_ (сложность)


есть очень хорошие ответы на этот конкретный вопрос, поэтому нет смысла писать свое объяснение. Поэтому я постараюсь внести свой вклад с отличным ресурсом о различных классах вычислительной сложности.

для тех, кто думает, что вычислительная сложность только о P и NP,вот самый исчерпывающий ресурс о различных задачах вычислительной сложности. Помимо проблем, заданных OP, он перечислил примерно 500 различных классы вычислительных задач с хорошими описаниями, а также список фундаментальных научных работ, которые описывают класс.


Как я понимаю, an np-hard проблема не "сложнее", чем np-complete