NP-полная задача: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Формальное определение: неформальное пояснение к определению по запросу на СО
Строка 9: Строка 9:
* <math>x\in L_1 </math> тогда и только тогда, когда <math>f(x)\in L_2</math>. Сводимость по Карпу обозначается как <math>L_1 {\le}_p L_2</math> или <math>L_1 \varpropto L_2</math>.
* <math>x\in L_1 </math> тогда и только тогда, когда <math>f(x)\in L_2</math>. Сводимость по Карпу обозначается как <math>L_1 {\le}_p L_2</math> или <math>L_1 \varpropto L_2</math>.


Язык <math>L_2</math> называется '''NP-трудным''', если любой язык из класса NP сводится к нему. Язык называют '''NP-полным''', если он NP-труден, и при этом сам лежит в классе NP.
Язык <math>L_2</math> называется '''{{якорь2|NP-hard|NP-трудным}}''', если любой язык из класса NP сводится к нему. Язык называют '''NP-полным''', если он NP-труден, и при этом сам лежит в классе NP.


Неформально говоря, то что задача <math>A</math> сводится к задаче <math>B</math>, означает, что задача <math>A</math> «не сложнее» задачи <math>B</math> (так как, если мы можем решить <math>B</math>, то можем решить и <math>A</math>).
Неформально говоря, то что задача <math>A</math> сводится к задаче <math>B</math>, означает, что задача <math>A</math> «не сложнее» задачи <math>B</math> (так как, если мы можем решить <math>B</math>, то можем решить и <math>A</math>).

Версия от 05:34, 12 июля 2017

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

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

Алфавитом называется всякое конечное множество символов (например, {} или {}). Множество всех возможных слов (конечных строк, составленных из символов этого алфавита) над некоторым алфавитом обозначается . Языком над алфавитом называется всякое подмножество множества , то есть .

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

Пусть и  — два языка над алфавитом . Язык называется сводимым (по Карпу) к языку , если существует функция, , вычислимая за полиномиальное время, обладающая следующим свойством:

  • тогда и только тогда, когда . Сводимость по Карпу обозначается как или .

Язык называется NP-hard, если любой язык из класса NP сводится к нему. Язык называют NP-полным, если он NP-труден, и при этом сам лежит в классе NP.

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

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

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

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

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

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

Гипотеза P ≠ NP

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

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

См. также

Примечания

  1. William I. Gasarch (2002). "The P=?NP poll" (PDF). SIGACT News. 33 (2): 34—47. doi:10.1145/1052796.1052804.
  2. Erik D. Demaine, Susan Hohenberger, David Liben-Nowell. Tetris is Hard, Even to Approximate (англ.). preprint.

Литература

  • Томас Х. Кормен и др. Глава 34. NP-полнота // Алгоритмы: построение и анализ = INTRODUCTION TO ALGORITHMS. — 2-е изд. — М.: «Вильямс», 2006. — С. 1296. — ISBN 0-07-013151-1.

Ссылки