NP-полная задача

Взаимоотношение между классами P, NP, NP-complete (NP-полными задачами), NP-hard (NP-трудными задачами) в случае, если P≠NP и если P=NP

NP-полная задача — в теории алгоритмов задача с ответом «да» или «нет» из класса NP, к которой можно свести любую другую задачу из этого класса за полиномиальное время (то есть при помощи операций, число которых не превышает некоторого полинома в зависимости от размера исходных данных). Таким образом, NP-полные задачи образуют в некотором смысле подмножество «типовых» задач в классе NP: если для какой-то из них будет найден «полиномиально быстрый» алгоритм решения, то и любую другую задачу из класса NP можно будет решить так же «быстро».

Формальное определение

Алфавитом называется всякое конечное множество символов (например, { 0 , 1 {\displaystyle {0,1}} } или { a , b , c {\displaystyle {a,b,c}} }). Множество всех возможных слов (конечных строк, составленных из символов этого алфавита) над некоторым алфавитом Σ {\displaystyle \Sigma } обозначается Σ {\displaystyle \Sigma ^{*}} . Языком L {\displaystyle L} над алфавитом Σ {\displaystyle \Sigma } называется всякое подмножество множества Σ {\displaystyle \Sigma ^{*}} , то есть L Σ {\displaystyle L\subset \Sigma ^{*}} .

Задачей распознавания для языка L {\displaystyle L} называется определение того, принадлежит ли данное слово языку L {\displaystyle L} .

Пусть L 1 {\displaystyle L_{1}} и L 2 {\displaystyle L_{2}}  — два языка над алфавитом Σ {\displaystyle \Sigma } . Язык L 1 {\displaystyle L_{1}} называется сводимым (по Карпу) к языку L 2 {\displaystyle L_{2}} , если существует функция, f : Σ Σ {\displaystyle f\colon \Sigma ^{*}\to \Sigma ^{*}} , вычислимая за полиномиальное время, обладающая следующим свойством:

  • x L 1 {\displaystyle x\in L_{1}} тогда и только тогда, когда f ( x ) L 2 {\displaystyle f(x)\in L_{2}} . Сводимость по Карпу обозначается как L 1 p L 2 {\displaystyle L_{1}{\leq }_{p}L_{2}} или L 1 L 2 {\displaystyle L_{1}\varpropto L_{2}} .

Язык L 2 {\displaystyle L_{2}} называется NP-трудным, если любой язык из класса NP сводится к нему. Язык называют NP-полным, если он NP-труден, и при этом сам лежит в классе NP.

Неформально говоря, то что задача A {\displaystyle A} сводится к задаче B {\displaystyle B} , означает, что задача A {\displaystyle A} «не сложнее» задачи B {\displaystyle B} (так как, если мы можем решить B {\displaystyle B} , то можем решить и A {\displaystyle A} ). Таким образом, класс NP-трудных задач включает NP-полные задачи и задачи, которые «сложнее» их (то есть те задачи, к которым могут быть сведены NP-полные задачи). Класс NP включает NP-полные задачи и задачи, которые «легче» их (то есть те задачи, которые сводятся к NP-полным задачам).

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

NP-полнота в сильном смысле

Основная статья: NP-полнота в сильном смысле[англ.]

Задача называется NP-полной в сильном смысле, если у неё существует подзадача, которая:

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

Класс таких задач называется NPCS. Если гипотеза P ≠ NP верна, то для NPCS-задачи не существует псевдополиномиального алгоритма[источник не указан 2492 дня].

Гипотеза P ≠ NP

Основная статья: Равенство классов P и NP

Вопрос о совпадении классов P и NP уже более тридцати лет является одной из центральных открытых проблем. Научное сообщество склоняется к отрицательному ответу на этот вопрос[1] — в этом случае решать NP-полные задачи за полиномиальное время не удастся.

Примеры NP-полных задач

Основная статья: Список NP-полных задач[англ.]

См. также

Примечания

  1. William I. Gasarch. The P=?NP poll. (неопр.) // SIGACT News. — 2002. — Т. 33, № 2. — С. 34—47. — doi:10.1145/1052796.1052804. Архивировано 15 июня 2007 года.
  2. Erik D. Demaine, Susan Hohenberger, David Liben-Nowell. Tetris is Hard, Even to Approximate (англ.). preprint.
  3. Abel, Z.; Demaine, E.D.; Demaine, M.L.; Eisenstat, S.; Lynch, J.; Schardl, T.B. (2013). "Finding a Hamiltonian Path in a Cube with Specified Turns is Hard". Journal of Information Processing. 21 (3): 368—377. Архивировано 5 декабря 2023. Дата обращения: 5 декабря 2023.

Литература

  • Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи Архивная копия от 4 ноября 2019 на Wayback Machine. М.: Мир, 1982.
  • Томас Х. Кормен и др. Глава 34. NP-полнота // Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-е изд. — М.: «Вильямс», 2006. — 1296 с. — ISBN 0-07-013151-1.
  • Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений = Introduction to Automata Theory, Languages, and Computation. — М.: «Вильямс», 2002. — 528 с. — ISBN 0-201-44124-1.

Ссылки

  • NP-полнота
  • Вычислительная сложность игр и головоломок Архивная копия от 6 декабря 2006 на Wayback Machine (англ.)
  • A compendium of NP optimization problems. Editors — Pierluigi Crescenzi, Viggo Kann Архивная копия от 5 декабря 2006 на Wayback Machine (англ.)


Перейти к шаблону «Классы сложности»
Считаются лёгкими
  • DLOGTIME[англ.]
  • AC0[англ.]
  • ACC0[англ.]
  • TC0[англ.]
  • L
  • SL[англ.]
  • RL[англ.]
  • NL
  • NC
  • SC[англ.]
  • CC[англ.]
  • P
    • P-complete[англ.]
  • ZPP
  • RP
  • BPP
  • BQP
  • EQP
  • APX
Предполагаются сложными
Считаются сложными
  • EXPTIME
  • NEXPTIME[англ.]
  • EXPSPACE[англ.]
  • 2-EXPTIME[англ.]
  • ELEMENTARY[англ.]
  • R
  • PR[англ.]
  • RE[англ.]
    • RE-complete[англ.]
  • Co-RE[англ.]
    • Co-RE-complete[англ.]
  • ALL[англ.]
Перейти к шаблону «NP-полные задачи»
NP-полные задачи
Максимизационная задача
укладки (упаковки)
Теория графов
теория множеств
Алгоритмические задачи
Логические игры
и головоломки