it-swarm.com.ru

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

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

380
Claudiu

NP обозначает Недетерминированный полином время.

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

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

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

191
Sam Hoice

Что такое NP ?

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

Что такое P ?

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

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

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

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

  1. х находится в NP, и
  2. Каждая проблема в NP сводится к x

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

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

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

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

389
grom

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

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

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

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

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

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

31
David Nehme

NP-Complete - это класс задач.

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

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

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

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

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

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

22
Vincent Ramdhanie

В основном проблемы этого мира могут быть классифицированы как

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


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


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

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

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

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

20
Marcus Thornton

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

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

18
Eric Wendelin

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

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

(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-полную проблему можно свести к проблеме 3-SAT. Это означает, что если вы можете найти алгоритм полиномиального времени для решения этой проблемы, то вы получите $ 1,000,0 , не говоря уже об уважении и восхищении компьютерных ученых и математиков по всему миру.

18
Kyle Cronin

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

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

14
jjnguy

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

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

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

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

9
Tom

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

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

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

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

5
Ying Xiao

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

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

Классическим примером проблемы NP-Complete является проблема коммивояжера ".

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

4
leizisdu

NP Проблема: -

  1. NP-задачи - это такие задачи, которые могут быть решены за недетерминированное полиномиальное время.
  2. Недетерминированный алгоритм работает в два этапа.
  3. Стадия недетерминированного угадывания && Стадия недетерминированного подтверждения.

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

  1. НП завершен
  2. НП Хард

NP Завершить задачу: -

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

  1. Он принадлежит к классу NP.
  2. Любая другая проблема в NP может быть преобразована в P за полиномиальное время.

Некоторые Ex: -

  • Рюкзак проблема
  • проблема подмножества сумм
  • Проблема покрытия вершин
2
HeadAndTail

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

1
Jamal Hussain