Кажется, горячие индийские парни придумали полиномиальный алгоритм проверки числа на простоту. (ссылка на дискуссию в Слешдоте).
До сих пор был известен только полиномиально-вероятностный алгоритм проверки числа на простоту -- если он говорил, что число простое, то ошибался с некоторой вероятностью. Но его можно было повторять неограниченное кол-во раз, снижая эту вероятность ошибки до сколь угодно малого значения. Таким образом, с практической точки зрения уже существовал полиноминальный алгоритм проверки, и им сплошь и рядом пользуются. Но с теоретической точки зрения, это довольно интересное достижение. Многие думали, что это просто неверно, что существует такой алгоритм.
Забавно то, что, кажется, этот новый алгоритм использует очень простую арифметику, ничего продвинутого.
french_man, если тебе это интересно, посмотри и расскажи свои впечатления. У меня сейчас совсем нет возможности заниматься внимательным вчитыванием и проверкой, увы.
Примечание: "полиномиальный" алгоритм здесь означает "полиномиальный от размера данных". Т.е. полиномиальная проверка того, является ли простым число N, должна занимать время, ограниченное полиномиалом от log(N) -- размера двоичного представления N. Предлагаемый в этой статье алгоритм работает за время O(log(N)12).
Не стоит путать этот алгоритм с алгоритмом разложения числа на множители - такого полиномиального алгоритма пока ещё никто не придумал, и скорее всего его не существует, хотя и этого не могут доказать. Открытие такого алгоритма было бы катастрофическим для немалой части современной криптографии.
До сих пор был известен только полиномиально-вероятностный алгоритм проверки числа на простоту -- если он говорил, что число простое, то ошибался с некоторой вероятностью. Но его можно было повторять неограниченное кол-во раз, снижая эту вероятность ошибки до сколь угодно малого значения. Таким образом, с практической точки зрения уже существовал полиноминальный алгоритм проверки, и им сплошь и рядом пользуются. Но с теоретической точки зрения, это довольно интересное достижение. Многие думали, что это просто неверно, что существует такой алгоритм.
Забавно то, что, кажется, этот новый алгоритм использует очень простую арифметику, ничего продвинутого.
Примечание: "полиномиальный" алгоритм здесь означает "полиномиальный от размера данных". Т.е. полиномиальная проверка того, является ли простым число N, должна занимать время, ограниченное полиномиалом от log(N) -- размера двоичного представления N. Предлагаемый в этой статье алгоритм работает за время O(log(N)12).
Не стоит путать этот алгоритм с алгоритмом разложения числа на множители - такого полиномиального алгоритма пока ещё никто не придумал, и скорее всего его не существует, хотя и этого не могут доказать. Открытие такого алгоритма было бы катастрофическим для немалой части современной криптографии.
no subject
Date: 2002-08-07 06:50 am (UTC)no subject
Date: 2002-08-07 06:54 am (UTC)Я послал ссылку Амиту Сахаю в Принстон, но думаю, что он об этом уже слышал.
no subject
Date: 2002-08-07 06:57 am (UTC)В любом случае не удивлюсь, если все будут продолжать использовать тест Рабина-Миллера, как и раньше. Нечто похожее случилось с линейным программированием и симплексным алгоритмом (к-м все пользуются, хотя он не полиномиальный в worst-case и хотя уже довольно давно нашли полиномиальный алгоритм с большой степенью).
no subject
Date: 2002-08-07 07:02 am (UTC)какой именно?
no subject
Date: 2002-08-07 07:24 am (UTC)no subject
Date: 2002-08-07 07:37 am (UTC)http://www-fp.mcs.anl.gov/otc/Guide/OptWeb/continuous/constrained/linearprog/section2_1_2.html
no subject
Date: 2002-08-07 08:50 am (UTC)Re:
Date: 2002-08-07 09:11 am (UTC)Re:
Date: 2002-08-07 09:27 am (UTC)Re:
Date: 2002-08-07 09:39 am (UTC)Ой, простите!
:-)
Re: Ой, простите!
Date: 2002-08-08 01:00 am (UTC)