Jump to content

Ро-алгоритм Полларда

(Перенаправлено с Полларда Ро )

Ро-алгоритм Полларда — это алгоритм факторизации целых чисел . Его изобрел Джон Поллард в 1975 году. [1] Он использует лишь небольшой объем пространства, а ожидаемое время его работы пропорционально квадратному корню из наименьшего простого множителя составного числа факторизуемого .

Основные идеи

[ редактировать ]

Алгоритм используется для факторизации числа. , где является нетривиальным фактором. Полином по модулю , называется (например, ), используется для генерации псевдослучайной последовательности . Важно отметить, что должен быть полиномом. Выбирается начальное значение, скажем 2, и последовательность продолжается как , , и т. д. Последовательность связана с другой последовательностью . С заранее не известна, эта последовательность не может быть явно вычислена в алгоритме. Однако именно в этом заключается основная идея алгоритма.

Поскольку число возможных значений для этих последовательностей конечно, оба последовательность, которая является модом , и последовательность в конечном итоге повторится, даже если эти значения неизвестны. Если бы последовательности вели себя как случайные числа, парадокс дня рождения подразумевал бы, что число до того, как произойдет повторение, как ожидается, будет , где это количество возможных значений. Итак, последовательность скорее всего, повторится намного раньше, чем последовательность . Когда человек нашел такой, что но , число кратно , так был найден.

Как только последовательность имеет повторяющееся значение, последовательность будет циклически повторяться, поскольку каждое значение зависит только от предыдущего. Эта структура возможного циклирования дала начало названию «алгоритм ро» из-за сходства с формой греческой буквы ρ, когда значения , и т. д. представлены как узлы ориентированного графа .

Диаграмма цикла, напоминающая греческую букву ρ.

Это обнаруживается алгоритмом поиска цикла Флойда : два узла и (т.е. и ) сохраняются. На каждом этапе один перемещается к следующему узлу в последовательности, а другой перемещается вперед на два узла. После этого проверяется, есть ли . Если оно не равно 1, то это означает, что в последовательность (т.е. . Это работает, потому что, если то же самое, что , разница между и обязательно кратно . Хотя со временем это всегда происходит, результирующий наибольший общий делитель (НОД) является делителем кроме 1. Это может быть сам по себе, поскольку две последовательности могут повторяться одновременно. В этом (редком) случае алгоритм дает сбой и его можно повторить с другим параметром.

Алгоритм

[ редактировать ]

Алгоритм принимает на вход n — , целое число подлежащее факторингу; и , полином от x, вычисленный по модулю n . В исходном алгоритме , но в настоящее время чаще используют . Результатом является либо нетривиальный коэффициент n , либо сбой.

Он выполняет следующие шаги: [2]

Псевдокод для алгоритма Ро Полларда

    x ← 2 // starting value
    y ← x
    d ← 1

    while d = 1:
        x ← g(x)
        y ← g(g(y))
        d ← gcd(|x - y|, n)

    if d = n: 
        return failure
    else:
        return d

Здесь x и y соответствуют и в предыдущем разделе. Обратите внимание, что этот алгоритм может не найти нетривиальный фактор, даже если n является составным. В этом случае метод можно попробовать еще раз, используя начальное значение x, отличное от 2 ( ) или другой , , с .

Пример факторизации

[ редактировать ]

Позволять и .

Пример факторизации алгоритма Ро Полларда для и , с начальным значением 2. В примере используется алгоритм поиска цикла Флойда .
я х и НОД(| х - у |, 8051)
1 5 26 1
2 26 7474 1
3 677 871 97
4 7474 1481 1

Теперь 97 — это нетривиальный коэффициент 8051. Начальные значения, отличные от x = y = 2, могут дать кофактор (83) вместо 97. Выше показана одна дополнительная итерация, чтобы прояснить, что y движется в два раза быстрее, чем x . Обратите внимание, что даже после повторения НОД может вернуться к 1.

Варианты

[ редактировать ]

В 1980 году Ричард Брент опубликовал более быстрый вариант алгоритма ро. Он использовал те же основные идеи, что и Поллард, но другой метод обнаружения цикла, заменив алгоритм поиска цикла Флойда соответствующим методом поиска цикла Брента . [3]

Дальнейшее улучшение было сделано Поллардом и Брентом. Они заметили, что если , тогда также для любого положительного целого числа . В частности, вместо вычисления на каждом шаге достаточно определить как произведение 100 последовательных условия по модулю , а затем вычислить одно . Значительное ускорение достигается за счет НОД замены 100 шагов на 99 умножений по модулю ⁠ и один НОД . Иногда это может привести к сбою алгоритма из-за введения повторяющегося фактора, например, когда квадрат . Но тогда достаточно вернуться к предыдущему члену НОД , где используйте обычный алгоритм ρ и оттуда .

Приложение

[ редактировать ]

Алгоритм очень быстр для чисел с небольшими факторами, но медленнее в случаях, когда все факторы большие. Самым выдающимся успехом алгоритма ρ стала факторизация числа Ферма в 1980 году F 8 = 1238926361552897 × 934616397153579777769163558199606896584051237541638188580280321. [4] Алгоритм ρ оказался хорошим выбором для F 8, поскольку простой множитель p = 1238926361552897 намного меньше другого множителя. Факторизация заняла 2 часа на UNIVAC 1100/42 . [4]

Пример: факторинг n = 10403 = 101 · 103

[ редактировать ]

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

шаг
2 2 2 2 0
5 2 5 2 1
26 2 26 2 2
677 26 71 26 3
598 26 93 26 4
3903 26 65 26 5
3418 26 85 26 6
156 3418 55 85 7
3531 3418 97 85 8
5168 3418 17 85 9
3724 3418 88 85 10
978 3418 69 85 11
9812 3418 15 85 12
5983 3418 24 85 13
9970 3418 72 85 14
236 9970 34 72 15
3682 9970 46 72 16
2016 9970 97 72 17
7087 9970 17 72 18
10289 9970 88 72 19
2594 9970 69 72 20
8499 9970 15 72 21
4973 9970 24 72 22
2799 9970 72 72 23

Первое повторение по модулю 101 равно 97, что происходит на шаге 17. Повторение не обнаруживается до шага 23, когда . Это вызывает быть , и фактор найден.

Сложность

[ редактировать ]

Если псевдослучайное число происходящие в алгоритме Полларда ρ, были реальным случайным числом, из этого следовало бы, что успех будет достигнут в половине случаев из-за парадокса дня рождения в итерации. Считается, что тот же анализ применим и к реальному алгоритму ро, но это эвристическое утверждение, и строгий анализ алгоритма остается открытым. [5]

См. также

[ редактировать ]
  1. ^ Поллард, Дж. М. (1975). «Метод Монте-Карло для факторизации». БИТ Численная математика . 15 (3): 331–334. дои : 10.1007/bf01933667 . S2CID   122775546 .
  2. ^ Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л. и Стейн, Клиффорд (2009). «Раздел 31.9: Целочисленная факторизация». Введение в алгоритмы (третье изд.). Кембридж, Массачусетс: MIT Press. стр. 975–980. ISBN  978-0-262-03384-8 . (в этом разделе обсуждается только ро-алгоритм Полларда).
  3. ^ Брент, Ричард П. (1980). «Улучшенный алгоритм факторизации Монте-Карло» . КУСОЧЕК . 20 (2): 176–184. дои : 10.1007/BF01933190 . S2CID   17181286 .
  4. Перейти обратно: Перейти обратно: а б Брент, РП; Поллард, Дж. М. (1981). «Факторизация восьмого числа Ферма» . Математика вычислений . 36 (154): 627–630. дои : 10.2307/2007666 . JSTOR   2007666 .
  5. ^ Гэлбрейт, Стивен Д. (2012). «14.2.5 К строгому анализу Ро Полларда». Математика криптографии с открытым ключом . Издательство Кембриджского университета. стр. 272–273. ISBN  9781107013926 . .

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a4b7d28c8ffc779222b0096314ff30c9__1718670360
URL1:https://arc.ask3.ru/arc/aa/a4/c9/a4b7d28c8ffc779222b0096314ff30c9.html
Заголовок, (Title) документа по адресу, URL1:
Pollard's rho algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)