В теории алгоритмов NP-полная задача — задача из класса NP, к которой можно свести любую другую задачу из класса NP за полиномиальное время. Таким образом, NP-полные задачи образуют в некотором смысле подмножество «самых сложных» задач в классе NP; и если для какой-то из них будет найден «быстрый» алгоритм решения, то и любая другая задача из класса NP может быть решена так же «быстро».
Формальное определение[]
Алфавитом называется всякое конечное множество символов (например, или ). Множество всех возможных слов (конечных строк, составленных из символов этого алфавита) над некоторым алфавитом обозначается . Языком над алфавитом называется всякое подмножество множества , то есть .
Задачей распознавания слова для языка называется определение того, принадлежит ли данное слово языку .
Язык называется сводимым (по Карпу) к языку , если существует функция, , вычислимая за полиномиальное время, и обладающая следующим свойством:
- тогда и только тогда, когда .
Сводимость по Карпу обозначается как или .
Язык называется NP-трудным, если любой язык из класса NP сводится к нему. Язык называют NP-полным, если он NP-труден, и при этом сам лежит в классе NP.
Таким образом, если будет найден алгоритм, решающий некоторую (любую) NP-полную задачу за полиномиальное время, то все NP-задачи окажутся в классе P, то есть будут решаться за полиномиальное время.
Гипотеза P ≠ NP[]
Совпадают ли классы P и NP уже более 30 лет является открытым вопросом. Научное сообщество склоняется к отрицательному ответу на этот вопрос — в этом случае за полиномиальное время решать NP-полные задачи не удастся.
Примеры NP-полных задач[]
- Задача о выполнимости булевых формул
- Кратчайшее решение «пятнашек» размера
- Задача коммивояжёра
- Проблема Штейнера
- Проблема раскраски графа
- Задача о вершинном покрытии
- Задача о покрытии множества
- Задача о клике
- Задача о независимом множестве
- Сапер (игра)
- Тетрис[1]
Примечания[]
- ↑ 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
Ссылки[]
NP-полные задачи |
|
|---|---|
| Математика | |
| Исследование операций:Оптимизация:Комбинаторная оптимизация | |
| Максимизационная задача укладки (упаковки) |
Упаковка в контейнеры (двумерная упаковка • линейная упаковка • упаковка по весу • упаковка по стоимости) • Задача о ранце (рюкзаке) |
| Теория графов теория множеств |
Задача о вершинном покрытии • Задача о клике • Задача о независимом множестве (наборе) • Задача о покрытии множества • Задача Штейнера • Задача коммивояжёра • Обобщённая задача коммивояжёра |
| Алгоритмические задачи | Задача выполнимости булевых формул (в конъюнктивной нормальной форме) |
| Логические игры и головоломки |
Обобщённые пятнашки с костяшками >15) (задача поиска кратчайшего решения) • Задачи, решения которых применяются в Тетрис • Задача обобщённого судоку • Задача о заполнении латинского квадрата • Задача какуро |
| См. также | Прикладная математика • Теория алгоритмов • Динамическое программирование • 21 NP-полная задача Карпа |
| Классы сложности | |
Эта страница использует содержимое раздела Википедии на русском языке. Оригинальная статья находится по адресу: NP-полная задача. Список первоначальных авторов статьи можно посмотреть в истории правок. Эта статья так же, как и статья, размещённая в Википедии, доступна на условиях CC-BY-SA .