Что такое NP-полный в информатике?

Что такое NP-полная проблема? Почему это такая важная тема в информатике?

Ответ 1

NP означает Недетерминированное многокомпонентное время.

Это означает, что проблема может быть решена в полиномиальном времени с использованием недетерминированной машины Тьюринга (как обычная машина Тьюринга, но также включающая недетерминированную функцию выбора). В принципе, решение должно быть testable в полином времени. Если этот случай и известная проблема NP могут быть решены с использованием заданной задачи с модифицированным вводом (задача NP может быть приведена к заданной задаче), то проблема NP полная.

Главное, чтобы отвлечься от NP-полной проблемы, состоит в том, что она не может быть решена в полиномиальное время любым известным способом. NP-Hard/NP-Complete - это способ показать, что определенные классы проблем не решаются в реалистичное время.

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

Ответ 2

Что такое NP?

NP - это набор всех проблем решения (вопросы с ответом "да-или-нет" ), для которых "да" -ответы могут проверено в полиномиальное время (O (n k), где n - размер задачи, а k - константа) с помощью детерминированная машина Тьюринга. Полиномиальное время иногда используется как определение быстрого или быстрого.

Что такое P?

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

Что такое NP-Complete?

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

Другими словами:

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

См. также сообщение Что такое "P = NP?" , и почему это такой известный вопрос?

Что такое NP-Hard?

NP-Hard - это проблемы, которые по крайней мере столь же сложны, как и самые сложные проблемы в NP. Обратите внимание, что NP-Complete проблемы также NP-hard. Однако не все NP-жесткие проблемы - это NP (или даже проблема решения), несмотря на наличие NP в качестве префикса. То есть NP в NP-hard не означает недетерминированное полиномиальное время. Да, это запутывает, но его использование укоренилось и вряд ли изменится.

Ответ 3

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

  • Существует доказательство полиномиального времени для каждого экземпляра проблемы с ответом "да" , что ответ "да" или (эквивалентно)
  • Существует алгоритм с полиномиальным временем (возможно, с использованием случайных величин), который имеет ненулевую вероятность ответа "да" , если ответ на экземпляр проблемы "да" и будет "нет" 100% время, если ответ "нет". Другими словами, алгоритм должен иметь ложно-отрицательную скорость менее 100% и никаких ложных срабатываний.

Задача X является NP-полной, если

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

Если X является NP-полным и существует детерминированный алгоритм полиномиального времени, который может правильно решить все экземпляры X (0% ложных срабатываний, 0% ложных отрицаний), тогда любая проблема NP может быть решена в детерминированном -полиномиальное время (редукцией к X).

До сих пор никто не придумал такой детерминированный алгоритм с полиномиальным временем, но никто не доказал, что его не существует (миллион долларов для любого, кто может это сделать: это проблема P = NP). Это не означает, что вы не можете решить какой-либо конкретный случай NP-Complete (или NP-Hard). Это просто означает, что вы не можете иметь что-то, что будет надежно работать во всех случаях проблемы так же, как вы могли бы надежно сортировать список целых чисел. Возможно, вы вполне можете придумать алгоритм, который будет очень хорошо работать на всех практических примерах проблемы NP-Hard.

Ответ 4

В основном эти проблемы мира можно отнести к категории

1) Неразрешимая проблема 2) Неразрешимая проблема 3) Проблема NP 4) P-проблема


1) Первый из них не является решением проблемы. 2) Второй - это экспоненциальное время потребности (то есть O (2 ^ n) выше). 3) Третий называется NP. 4) Четвертый - простая проблема.


P: относится к решению проблемы полиномиального времени.

NP: относится к полиномиальному времени еще, чтобы найти решение. Мы не уверены, что не существует решения Polynomial Time, но как только вы предоставите решение, это решение можно проверить в Полиномиальное время.

NP Complete: ссылается на Полиномиальное время, которое мы еще не нашли, но оно может быть проверено в Полиномиальном времени. Проблема NPC в NP является более сложной задачей, поэтому, если мы сможем доказать, что у нас есть решение P для проблемы NPC, то проблемы NP, которые можно найти в P-решении.

NP Hard: указывает, что Полиномиальное время еще не найдено, но оно не может быть проверено в Полиномиальное время. NP Hard проблема превосходит сложность NPC.

Ответ 5

NP-Complete - это класс проблем.

Класс P состоит из тех проблем, которые разрешимы в полиномиальном времени. Например, они могут быть решены в O (n k) для некоторой константы k, где n - размер ввода. Проще говоря, вы можете написать программу, которая будет работать в разумные сроки.

Класс NP состоит из тех проблем, которые проверяются в полиномиальное время. То есть, если нам дано потенциальное решение, то мы могли бы проверить, правильно ли данное решение в полиномиальное время.

Некоторые примеры - это проблема булева усвоения (или SAT) или проблема гамильтонова цикла. Есть много проблем, которые, как известно, находятся в классе NP.

NP-Complete означает, что проблема не менее настолько сложна, как любая проблема в NP.

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

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

Ответ 6

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

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

Ответ 7

Если вы ищете пример NP-полной проблемы, я предлагаю вам взглянуть на 3-SAT.

Основная предпосылка заключается в выражении в конъюнктивной нормальной форме, что является способом сказать, что у вас есть ряд выражений, соединенных ORs что все должно быть правдой:

(a or b) and (b or !c) and (d or !e or f) ...

Проблема 3-SAT заключается в том, чтобы найти решение, которое удовлетворит выражению, в котором каждое из OR-выражений имеет ровно 3 логических элемента, которые будут соответствовать:

(a or !b or !c) and (!a or b or !d) and (b or !c or d) ...

Решение этой задачи может быть (a = T, b = T, c = F, d = F). Однако алгоритм не был обнаружен, что позволит решить эту проблему в общем случае в полиномиальное время. Это означает, что лучший способ решить эту проблему - сделать по сути проверку и проверку грубой силы и попробовать разные комбинации, пока не найдете тот, который работает.

Что особенно важно в проблеме 3-SAT, так это то, что любая проблема NP-complete может быть сведена к проблеме 3-SAT. Это означает, что если вы сможете найти алгоритм полиномиального времени для решения этой проблемы, вы получите $1,000,000, не говоря уже о уважении и восхищении компьютерных ученых и математиков по всему миру.

Ответ 8

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

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

Ответ 9

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

Полезно знать о проблемах, которые мы пытаемся решить, а не о алгоритмах, которые мы используем для их решения. Поэтому мы скажем, что все проблемы, которые имеют алгоритм масштабирования, "находятся в P". И те, которые имеют алгоритм с низким коэффициентом масштабирования, находятся в "NP".

Это означает, что в NP слишком много простых проблем, потому что мы можем писать плохие алгоритмы для решения простых проблем. Было бы хорошо знать, какие проблемы в NP являются действительно сложными, но мы не просто хотим сказать "это те, для которых мы не нашли хорошего алгоритма". В конце концов, я мог бы решить проблему (назовите ее X), что, мне кажется, нуждается в супер-удивительном алгоритме. Я говорю миру, что лучший алгоритм, который я мог бы решить для решения X, сильно страдает, и поэтому я считаю, что X - очень сложная проблема. Но завтра, может быть, кто-то умнее меня изобретает алгоритм, который решает X и находится в П. Таким образом, это не очень хорошее определение трудных проблем.

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

Ответ 10

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

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

Но не все потеряно, если проблема, с которой вы столкнетесь, - NP Complete. Существует обширная и очень техническая область, где люди изучают алгоритмы аппроксимации, что даст вам гарантии близости к решению NP полной проблемы. Некоторые из них - невероятно сильные гарантии - например, для 3sat, вы можете получить гарантию 7/8 через действительно очевидный алгоритм. Еще лучше, на самом деле, есть очень сильные эвристики, которые преуспевают в предоставлении больших ответов (но никаких гарантий!) Для этих проблем.

Заметим, что две очень известные проблемы - изоморфизм графов и факторинг - не известны как P или NP.

Ответ 11

Существует очень хорошая лекция arsdigita по дискретной математике, которая объясняет, что NP-полная проблема.

Первые 50 минут в основном связаны с булевой алгеброй. Итак, прыгайте прямо к началу минуты 53, если вас интересуют только понятия P, NP, NP-полноты, проблемы логической выполнимости и сокращения.

Ответ 12

Я слышал объяснение, то есть: "NP-полнота, вероятно, является одной из наиболее загадочных идей в изучении алгоритмов." NP "означает" недетерминированное полиномиальное время" и является названием того, что называется классом сложности, к которому могут принадлежать проблемы. Важная вещь в классе сложности NP заключается в том, что проблемы внутри этого класса могут быть проверены полиномиальным алгоритмом времени. В качестве примера рассмотрим проблему подсчета материала. Предположим, на столе есть куча яблок. Проблема в том, "Сколько там яблок?" У вас есть возможный ответ, 8. Вы можете проверить этот ответ в полиномиальное время, используя алгоритм, считая яблоки. Подсчет яблок происходит в O (n) (это Big-oh notation), потому что для каждого яблока требуется один шаг. Для n яблок вам нужно n шагов. Эта проблема находится в классе сложности NP.

Задача классифицируется как NP-complete, если можно показать, что она является как NP-Hard, так и проверяемой в полиномиальное время. Не заходя слишком глубоко в обсуждение NP-Hard, достаточно сказать, что есть определенные проблемы, к которым не найдены полиномиальные временные решения. То есть, это требует чего-то вроде n! (n факториалов) для их решения. Однако, если вам дано решение проблемы NP-Complete, вы можете проверить ее в течение полиномиального времени.

Классическим примером проблемы NP-Complete является проблема "Путешественник продавца".

Автор: ApoxyButt От: http://www.everything2.com/title/NP-complete

Ответ 13

NP Проблема: -

  • Проблема NP - такая проблема, которая может быть решена в недетерминированном полиномиальном времени.
  • Не детерминированный алгоритм работает в два этапа.
  • Недетерминированный этап угадывания && Недетерминированный этап проверки.

Тип проблемы Np

  • NP завершен
  • NP Hard

NP Полная проблема: -

1 Решение Задача A называется NP полной, если она имеет следующие два свойства: -

  • Он принадлежит классу NP.
  • Каждая другая задача в NP может быть преобразована в P в полиномиальное время.

Пример: -

  • Проблема с рюкзаком
  • проблема с заданной суммой
  • Проблема с покрытием вершины

Ответ 14

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

Ответ 15

Насколько я понимаю,

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

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

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

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

Пожалуйста, дайте мне знать, если я сделал какую-либо ошибку.

Ответ 16

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

NP-полная проблема NP, но также, если вы можете решить ее в полиномиальное время (называемое P), то все проблемы NP - P.

Так что взломайте.