Сертификат простоты

(перенаправлено с «Сертификат Пратта»)

В математике и информатике сертификат простоты — это строгое доказательство того, что число является простым. Наличие сертификата простоты позволяет проверить, что число простое, не прибегая к тестам простоты.

В теории сложности вычислений, как правило, подразумевается, что размер сертификата, как и время, необходимое для его проверки, полиномиально зависит от длины записи числа, то есть, от количества цифр в нём.

Существование полиномиальных сертификатов простоты показывает, что такие задачи как проверка простоты и факторизация целых чисел принадлежат классу NP, так как по одному из эквивалентных определений данного класса это такие задачи, решение которых может быть проверено за полиномиальное время если будет дополнительно предоставлен сертификат. Кроме того, эти задачи лежат в классе co-NP, что следует из его определения как класса дополнений к задачам из NP — действительно, полиномиальным сертификатом того, что число является составным может быть любой его нетривиальный делитель.

Таким образом, сертификаты простоты были одним из первых свидетельств того, что проверка простоты не является NP-полной задачей, так как если бы она была таковой, из этого бы следовало, что класс NP вложен в co-NP, что в свою очередь обычно[уточнить] считается[кем?] неверным. Кроме того, открытие полиномиальных сертификатов сделало проверку простоты первой задачей, про которую было известно, что она принадлежит как NP, так и co-NP, но про которую неизвестно, лежит ли она в классе P. С появлением теста Агравала — Каяла — Саксены в 2002 г., первого (и единственного на текущий момент[когда?]) детерминированного полиномиального теста простоты, было установлено, что задача всё же лежит в P.

Сертификат Пратта править

Исторически концепция сертификатов простоты была введена с появлением сертификата Пратта, который был получен в 1975 г. Воганом Праттом[1], который описал его структуру и доказал, что размер сертификата полиномиально зависит от длины записи числа, а также что он может быть верифицирован за полиномиальное время. Сертификат основывается на тесте Люка, который в свою очередь следует из малой теоремы Ферма:

(Теорема Люка) Число   является простым тогда и только тогда когда в кольце остатков по модулю   существует элемент   такой что:

  1.  ,
  2.   для всех простых чисел  , которые делят  .

Имея такое число   (называемое свидетелем простоты) и разбиение   на простые сомножители, можно быстро проверить приведённые условия — нужно выполнить   возведений в степень по модулю, что может быть сделано за   умножений с помощью двоичного возведения в степень. Сами же умножения в наивной реализации («в столбик») выполняются за  , что даёт общую оценку времени работы в  .

При этом стоит иметь в виду, что помимо приведённых условий нужно также проверить, что числа, представленные в сертификате как простые, действительно таковыми являются — таким образом, помимо свидетеля простоты и разбиения   на простые сомножители сертификат простоты числа   должен также включать в себя сертификаты простоты всех указанных в нём сомножителей. Таким образом, сертификат удобно представлять в виде дерева, в узлах которого находятся простые числа и соответствующие им свидетели простоты, а потомками узла, в котором хранится число   являются простые делители числа  . Соответственно, листьям дерева соответствует число  .

Можно показать по индукции, что в таком дереве не больше   внутренних узлов, то есть, таких, которые содержат нечётное простое число. Учитывая, что каждый узел дерева хранит   бит для записи чисел в нём, можно заключить, что общий размер дерева не превосходит  . Общее время проверки в свою очередь может быть оценено как  , так как нужно сделать   действий в каждом из   узлов.

В то время как сертификаты Пратта полезны в теории и легко проверяются, нахождение сертификата для числа   требует факторизации   и прочих потенциально больших чисел. Это просто сделать в некоторых частных случаях, например, для простых чисел Ферма, но в общем случае эта задача сейчас гораздо сложнее обычной проверки числа на простоту.

Влияние на «PRIMES is in P» править

Статья «PRIMES is in P»[2] стала прорывом в теоретической информатике. В этой статье, опубликованной Маниндрой Агравалом и его двумя студентами Нираджем Каялом и Нитином Саксеной в августе 2002 г., доказывается, что знаменитая задача проверки числа на простоту может быть детерминированно решена за полиномиальное время. Авторы стали лауреатами премии Гёделя, которая составляет $5000[3] и премии Фалкерсона 2006 года за свою работу.

В силу того, что проверка простоты теперь может проведена за полиномиальное время с помощью теста AKS, простое число может рассматриваться как сертификат своей собственной простоты. Данный тест выполняется за время  , что делает такую проверку более затратной, чем с помощью сертификата Пратта, однако не требует нахождения самого сертификата.

Примечания править

  1. Vaughan Pratt. «Every prime has a succinct certificate». SIAM Journal on Computing, vol. 4, pp. 214—220. 1975. Citations Архивная копия от 6 июня 2008 на Wayback Machine, Full-text Архивная копия от 26 мая 2011 на Wayback Machine.
  2. Agrawal, Manindra; Kayal, Neeraj  (англ.); Saxena, Nitin  (англ.). PRIMES is in P (англ.) // Annals of Mathematics : journal. — 2004. — September (vol. 160, no. 2). — P. 781—793. — doi:10.4007/annals.2004.160.781. — JSTOR 3597229. Архивировано 7 декабря 2017 года.
  3. 2017 Gödel Prize. European Association for Theoretical Computer Science. EATCS. Дата обращения: 29 марта 2017. Архивировано 16 апреля 2019 года.

Ссылки править