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

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

ρ-aлгоритм Дж. Полларда, предложенный им в 1975 году, служит для факторизации целых чисел. Он основан на том, что вычисляется некий многочлен степени не выше второй от начального числа Х — f(X).

[править] Описание алгоритма

Пусть надо разложить на множители число P

  • Шаг 1. Выбирается многочлен f(x) с целочисленными коэффициентами, степени не выше 2. Обычно берется многочлен вида y = x2 + c(mod P).
  • Шаг 2. Случайно выбирается x0 = y0 меньше P.
  • Шаг 2. Вычисляются значения xi = f(xi − 1)(modP),yi = f(f(yi − 1))(modP).
  • Шаг 3. Находится d = ( | xiyi | ,P).
  • Шаг 4. Если d = 1, происходит переход на шаг 2, если d = P, происходит остановка - факторизацию провести не удалось. Если 1 < d < P, то найдено разложение числа P.


[править] Альтернативное описание

  • Шаг 1. Выбирается многочлен f(x) с целочисленными коэффициентами, степени не выше 2 и целое число m.
  • Шаг 2. Случайно выбирается x0 меньше P.
  • Шаг 3. Вычисляются значения xi = f(xi − 1)(modP).
  • Шаг 4. Для h = 0,1,...,[logm] полагаем j = 2h − 1 и для каждого 2h < = k < 2h + 1 вычисляем d = ( | xjxk | ,P). Если 1 < d < P, то нетривиальный делитель числа n найден. Если d=1 или d=P, то переходим к следующему значению h.

[править] Сложность алгоритма

Пусть n — составное число. Тогда существует такая константа C, что для любого положительного числа λ вероятность события, состоящего в том, что ρ-метод Полларда не найдет нетривиального делителя n за время C\sqrt{\lambda n}(\log n)^3, не превосходит величины e − λ. Метод Монте-Карло