Я слышал объяснение, а именно: "
NP-Полнота, вероятно, является одной из самых загадочных идей при изучении алгоритмов. «NP» означает «недетерминированное полиномиальное время» и является названием того, что называется классом сложности, к которому могут относиться проблемы. Важной особенностью класса сложности NP является то, что проблемы в этом классе могут быть проверены с помощью алгоритма полиномиального времени.
В качестве примера рассмотрим проблему подсчета вещей. Предположим, на столе куча яблок. Проблема в том, сколько там яблок? Вам предоставляется возможный ответ 8. Вы можете проверить этот ответ за полиномиальное время, используя алгоритм подсчета яблок. Подсчет яблок происходит за O (n) (это обозначение Big-oh), потому что для подсчета каждого яблока требуется один шаг. Для n яблок нужно n шагов. Эта проблема в классе сложности NP.
Проблема классифицируется как NP-полная , если можно показать, что она является NP-Hard и проверяемой за полиномиальное время. Не вдаваясь слишком глубоко в обсуждение NP-Hard, достаточно сказать, что есть определенные проблемы, решения которых за полиномиальное время не были найдены. То есть требуется что-то вроде n! (n факториал) шаги для их решения. Однако, если вам дано решение проблемы NP-Complete, вы можете проверить это за полиномиальное время.
Классическим примером проблемы NP-Complete является проблема коммивояжера. "
Автор: ApoxyButt
От: http://www.everything2.com/title/NP-complete