Класс NP: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Addbot (обсуждение | вклад) м Интервики (всего 25) перенесены на Викиданные, d:q628036 |
Valmin (обсуждение | вклад) м откат правок AnoshkoAlexey (обс.) к версии InternetArchiveBot Метка: откат |
||
(не показано 25 промежуточных версий 16 участников) | |||
Строка 1: | Строка 1: | ||
В [[теория алгоритмов|теории алгоритмов]] '''классом NP''' (от |
В [[теория алгоритмов|теории алгоритмов]] '''классом NP''' (от {{lang-en|non-deterministic polynomial}}) называют множество [[Задача разрешимости|задач разрешимости]], решение которых возможно проверить на [[Детерминированная машина Тьюринга|машине Тьюринга]] за время, не превосходящее значения некоторого [[многочлен]]а от размера входных данных, при наличии некоторых дополнительных сведений (так называемого ''сертификата решения''). |
||
Эквивалентно класс NP |
Эквивалентно класс NP включает задачи, которые можно за [[Временная сложность алгоритма#Полиномиальное время|полиномиальное время]] решить на [[Недетерминированная машина Тьюринга|недетерминированной машине Тьюринга]]. |
||
Задачи, имеющие полиномиальные по времени алгоритмы решения, можно решать с помощью компьютера значительно быстрее, чем путём прямого перебора, время которого [[Экспонента|экспоненциально]]. Это обуславливает практическое значение проблемы о [[Равенство классов P и NP|равенстве классов P и NP]]. |
|||
== Определения == |
== Определения == |
||
Строка 8: | Строка 10: | ||
Эквивалентное определение можно получить, используя понятие [[недетерминированная машина Тьюринга|недетерминированной машины Тьюринга]] (то есть такой [[машина Тьюринга|машины Тьюринга]], у программы которой могут существовать разные строки с одинаковой левой частью). Если машина встретила «развилку», то есть неоднозначность в программе, то дальше возможны разные варианты вычисления. Предикат <math>R(x)</math>, который представляет данная недетерминированная машина Тьюринга, считается равным единице, если существует хоть один вариант вычисления, возвращающий 1, и нулю, если все варианты возвращают 0. Если длина вычисления, дающего 1, не превосходит некоторого многочлена от длины ''x'', то предикат называется принадлежащим классу NP. Если у языка существует распознающий его предикат из класса NP, то язык называется принадлежащим классу NP. Это определение эквивалентно приведённому выше: в качестве свидетеля можно взять номера нужных веток при развилках в вычислении. Так как для ''x'' принадлежащему языку длина всего пути вычисления не превосходит многочлена от длины ''x'', то и длина свидетеля также будет ограничена многочленом от длины ''x''. |
Эквивалентное определение можно получить, используя понятие [[недетерминированная машина Тьюринга|недетерминированной машины Тьюринга]] (то есть такой [[машина Тьюринга|машины Тьюринга]], у программы которой могут существовать разные строки с одинаковой левой частью). Если машина встретила «развилку», то есть неоднозначность в программе, то дальше возможны разные варианты вычисления. Предикат <math>R(x)</math>, который представляет данная недетерминированная машина Тьюринга, считается равным единице, если существует хоть один вариант вычисления, возвращающий 1, и нулю, если все варианты возвращают 0. Если длина вычисления, дающего 1, не превосходит некоторого многочлена от длины ''x'', то предикат называется принадлежащим классу NP. Если у языка существует распознающий его предикат из класса NP, то язык называется принадлежащим классу NP. Это определение эквивалентно приведённому выше: в качестве свидетеля можно взять номера нужных веток при развилках в вычислении. Так как для ''x'' принадлежащему языку длина всего пути вычисления не превосходит многочлена от длины ''x'', то и длина свидетеля также будет ограничена многочленом от длины ''x''. |
||
Всякую задачу о принадлежности слова ''x'' языку ''L'', лежащую в классе NP, можно решить за [[экспоненциальное время]] [[полный перебор|перебором]] всех возможных сертификатов длины меньше <math>|x|^c</math>. Для её решения на [[квантовый компьютер|квантовом компьютере]] можно использовать [[GSA (Алгоритм)|GSA]]. В этом случае общее количество всех возможных сертификатов, которые нужно перебрать, можно определить по формуле [[Геометрическая_прогрессия#Свойства|суммы <math>|x|^c</math> членов геометрической прогрессии]] со [[ |
Всякую задачу о принадлежности слова ''x'' языку ''L'', лежащую в классе NP, можно решить за [[экспоненциальное время]] [[полный перебор|перебором]] всех возможных сертификатов длины меньше <math>|x|^c</math>. Для её решения на [[квантовый компьютер|квантовом компьютере]] можно использовать [[GSA (Алгоритм)|GSA]]. В этом случае общее количество всех возможных сертификатов, которые нужно перебрать, можно определить по формуле [[Геометрическая_прогрессия#Свойства|суммы <math>|x|^c</math> членов геометрической прогрессии]] со [[Дробь (математика)|знаменателем]], равным [[мощность множества|числу символов <math>|\Sigma|</math>]] в алфавите <math>\Sigma</math>, и 1-м членом, равным [[1]]: |
||
<math>N=\frac{1-|\Sigma|^{|x|^c}}{1-|\Sigma|}</math> |
<math>N=\frac{1-|\Sigma|^{|x|^c}}{1-|\Sigma|}</math> |
||
Поэтому для поиска нужного сертификата методом GSA требуется <math>\lceil |
Поэтому для поиска нужного сертификата методом GSA требуется <math>\left\lceil\log_2 {\frac{1-|\Sigma|^{|x|^c}}{1-|\Sigma|}}\right\rceil</math> [[Q-бит]]ов. Сертификат будет найден за время, не превышающее <math>O\left(\sqrt{\frac{1-|\Sigma|^{|x|^c}}{1-|\Sigma|}}\right)</math>. |
||
== Соотношение с другими классами == |
== Соотношение с другими классами == |
||
[[Файл:P_np_np-complete_np-hard.svg|thumb|400px|right|Варианты положения класса NP в иерархии классов сложности, в зависимости решения вопроса о [[Равенство классов P и NP|равенстве классов P и NP]].]] |
|||
Класс языков, дополнения которых принадлежат NP, называется классом '''co-NP''', хотя и не доказано, что этот класс отличен от класса NP. Пересечение классов NP и co-NP содержит [[класс P]]. В частности, класс NP включает в себя класс P. Однако ничего не известно о строгости этого включения. |
Класс языков, дополнения которых принадлежат NP, называется классом '''co-NP''', хотя и не доказано, что этот класс отличен от класса NP. Пересечение классов NP и co-NP содержит [[класс P]]. В частности, класс NP включает в себя класс P. Однако ничего не известно о строгости этого включения. |
||
Задача о [[равенство классов P и NP|равенстве классов P и NP]] является одной из центральных открытых проблем теории алгоритмов. Если они равны, то любую задачу из класса NP можно будет решить быстро (за полиномиальное время). Однако научное сообщество склоняется в сторону отрицательного ответа на этот вопрос.<ref>{{ |
Задача о [[равенство классов P и NP|равенстве классов P и NP]] является одной из центральных открытых проблем теории алгоритмов. Если они равны, то любую задачу из класса NP можно будет решить быстро (за полиномиальное время). Однако научное сообщество склоняется в сторону отрицательного ответа на этот вопрос.<ref>{{статья |заглавие=The P=?NP poll. |издание=SIGACT News |том=33 |номер=2 |страницы=34—47 |ссылка=http://www.cs.umd.edu/~gasarch/papers/poll.pdf |doi=10.1145/1052796.1052804 |язык=und |автор=William I. Gasarch |год=2002 |archivedate=2019-10-27 |archiveurl=https://web.archive.org/web/20191027015501/http://www.cs.umd.edu/%7Egasarch/papers/poll.pdf }}</ref> |
||
Класс NP включается в другие, более широкие классы, например, в [[класс PH]]. Существуют также открытые вопросы о строгости его включения в другие классы. |
Класс NP включается в другие, более широкие классы, например, в [[класс PH]]. Существуют также открытые вопросы о строгости его включения в другие классы. |
||
Строка 28: | Строка 30: | ||
* [[Задача о клике]]: по данному [[граф (математика)|графу]] узнать, есть ли в нём ''клики'' (полные подграфы) заданного размера. Сертификат — номера вершин, образующих клику. |
* [[Задача о клике]]: по данному [[граф (математика)|графу]] узнать, есть ли в нём ''клики'' (полные подграфы) заданного размера. Сертификат — номера вершин, образующих клику. |
||
* Определение наличия в графе [[гамильтонов цикл|гамильтонова цикла]]. Сертификат — последовательность вершин, образующих гамильтонов цикл. |
* Определение наличия в графе [[гамильтонов цикл|гамильтонова цикла]]. Сертификат — последовательность вершин, образующих гамильтонов цикл. |
||
* [[Задача о коммивояжёре]] — расширенный и более приближенный к реальности вариант предыдущей задачи. |
* Неоптимизационный вариант [[Задача о коммивояжёре|задачи о коммивояжёре]] (существует ли маршрут не длиннее, чем заданное значение k) — расширенный и более приближенный к реальности вариант предыдущей задачи. Сертификат - такой маршрут. |
||
* Существование целочисленного решения у заданной системы линейных неравенств. Сертификат — решение. |
* Существование целочисленного решения у заданной системы линейных неравенств. Сертификат — решение. |
||
*''Отсутствие'' у заданного числа <math>m</math> делителей <math>d</math> таких что <math>1 < d \leq k</math>. Сертификат — разбиение числа <math>m</math> на простые сомножители вместе с их [[Сертификат простоты|сертификатами простоты]]. |
|||
Среди всех задач класса NP можно выделить «самые сложные» — [[NP-полная задача|NP-полные задачи]]. Если удастся решить любую из них за полиномиальное время, то все задачи класса NP также можно будет решить за полиномиальное время. |
Среди всех задач класса NP можно выделить «самые сложные» — [[NP-полная задача|NP-полные задачи]]. Если удастся решить любую из них за полиномиальное время, то все задачи класса NP также можно будет решить за полиномиальное время. |
||
Строка 41: | Строка 44: | ||
== Литература == |
== Литература == |
||
* {{книга |
|||
⚫ | |||
|автор = Томас Х. Кормен и др. |
|||
⚫ | |||
|заглавие = Алгоритмы: построение и анализ |
|||
|оригинал = Introduction to Algorithms |
|||
|ссылка = |
|||
|издание = 2-е изд |
|||
|место = М. |
|||
|издательство = [[Вильямс (издательство)|«Вильямс»]] |
|||
|год = 2006 |
|||
|страниц = 1296 |
|||
|isbn = 0-07-013151-1 |
|||
}} |
|||
* {{книга |
|||
|заглавие = Введение в теорию автоматов, языков и вычислений |
|||
|оригинал = Introduction to Automata Theory, Languages, and Computation |
|||
|автор = [[Джон Хопкрофт]], Раджив Мотвани, Джеффри Ульман |
|||
|ссылка = |
|||
|isbn = 0-201-44124-1 |
|||
|страниц = 528 |
|||
|год = 2002 |
|||
|издание = |
|||
|место = М. |
|||
|издательство = [[Вильямс (издательство)|«Вильямс»]] |
|||
}} |
|||
⚫ | |||
⚫ | |||
{{rq|refless|isbn}} |
{{rq|refless|isbn}} |
Текущая версия от 15:45, 22 июля 2023
В теории алгоритмов классом NP (от англ. non-deterministic polynomial) называют множество задач разрешимости, решение которых возможно проверить на машине Тьюринга за время, не превосходящее значения некоторого многочлена от размера входных данных, при наличии некоторых дополнительных сведений (так называемого сертификата решения).
Эквивалентно класс NP включает задачи, которые можно за полиномиальное время решить на недетерминированной машине Тьюринга.
Задачи, имеющие полиномиальные по времени алгоритмы решения, можно решать с помощью компьютера значительно быстрее, чем путём прямого перебора, время которого экспоненциально. Это обуславливает практическое значение проблемы о равенстве классов P и NP.
Определения
[править | править код]Класс сложности NP определяется для множества языков, то есть множеств слов над конечным алфавитом . Язык L называется принадлежащим классу NP, если существуют двуместный предикат из класса P (то есть вычислимый за полиномиальное время) и константа такие, что для всякого слова x условие «x принадлежит L» равносильно условию «найдётся y длины меньше такой, что верно » (где |x| — длина слова x). Слово y называется сертификатом принадлежности x языку L. Таким образом, если у нас есть слово, принадлежащее языку, и ещё одно слово-свидетель ограниченной длины (которое бывает трудно найти), то мы быстро сможем удостовериться в том, что x действительно принадлежит L.
Эквивалентное определение можно получить, используя понятие недетерминированной машины Тьюринга (то есть такой машины Тьюринга, у программы которой могут существовать разные строки с одинаковой левой частью). Если машина встретила «развилку», то есть неоднозначность в программе, то дальше возможны разные варианты вычисления. Предикат , который представляет данная недетерминированная машина Тьюринга, считается равным единице, если существует хоть один вариант вычисления, возвращающий 1, и нулю, если все варианты возвращают 0. Если длина вычисления, дающего 1, не превосходит некоторого многочлена от длины x, то предикат называется принадлежащим классу NP. Если у языка существует распознающий его предикат из класса NP, то язык называется принадлежащим классу NP. Это определение эквивалентно приведённому выше: в качестве свидетеля можно взять номера нужных веток при развилках в вычислении. Так как для x принадлежащему языку длина всего пути вычисления не превосходит многочлена от длины x, то и длина свидетеля также будет ограничена многочленом от длины x.
Всякую задачу о принадлежности слова x языку L, лежащую в классе NP, можно решить за экспоненциальное время перебором всех возможных сертификатов длины меньше . Для её решения на квантовом компьютере можно использовать GSA. В этом случае общее количество всех возможных сертификатов, которые нужно перебрать, можно определить по формуле суммы членов геометрической прогрессии со знаменателем, равным числу символов в алфавите , и 1-м членом, равным 1:
Поэтому для поиска нужного сертификата методом GSA требуется Q-битов. Сертификат будет найден за время, не превышающее .
Соотношение с другими классами
[править | править код]Класс языков, дополнения которых принадлежат NP, называется классом co-NP, хотя и не доказано, что этот класс отличен от класса NP. Пересечение классов NP и co-NP содержит класс P. В частности, класс NP включает в себя класс P. Однако ничего не известно о строгости этого включения.
Задача о равенстве классов P и NP является одной из центральных открытых проблем теории алгоритмов. Если они равны, то любую задачу из класса NP можно будет решить быстро (за полиномиальное время). Однако научное сообщество склоняется в сторону отрицательного ответа на этот вопрос.[1]
Класс NP включается в другие, более широкие классы, например, в класс PH. Существуют также открытые вопросы о строгости его включения в другие классы.
Примеры задач класса NP
[править | править код]Можно привести много задач, про которые на сегодняшний день неизвестно, принадлежат ли они P, но известно, что они принадлежат NP. Среди них:
- Задача выполнимости булевых формул: узнать по данной булевой формуле, существует ли набор входящих в неё переменных, обращающий её в 1. Сертификат — такой набор.
- Задача о клике: по данному графу узнать, есть ли в нём клики (полные подграфы) заданного размера. Сертификат — номера вершин, образующих клику.
- Определение наличия в графе гамильтонова цикла. Сертификат — последовательность вершин, образующих гамильтонов цикл.
- Неоптимизационный вариант задачи о коммивояжёре (существует ли маршрут не длиннее, чем заданное значение k) — расширенный и более приближенный к реальности вариант предыдущей задачи. Сертификат - такой маршрут.
- Существование целочисленного решения у заданной системы линейных неравенств. Сертификат — решение.
- Отсутствие у заданного числа делителей таких что . Сертификат — разбиение числа на простые сомножители вместе с их сертификатами простоты.
Среди всех задач класса NP можно выделить «самые сложные» — NP-полные задачи. Если удастся решить любую из них за полиномиальное время, то все задачи класса NP также можно будет решить за полиномиальное время.
См. также
[править | править код]Примечания
[править | править код]- ↑ William I. Gasarch. The P=?NP poll. (неопр.) // SIGACT News. — 2002. — Т. 33, № 2. — С. 34—47. — doi:10.1145/1052796.1052804. Архивировано 27 октября 2019 года.
Литература
[править | править код]- Томас Х. Кормен и др. Алгоритмы: построение и анализ = 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.
- Задачи поиска. Классы P и NP. Сведения. NP-полные задачи Архивная копия от 13 июня 2011 на Wayback Machine
- «Введение в структурную теорию сложности». Курс лекций.
Для улучшения этой статьи желательно: |