Алгоритм «кенгуру» Полларда

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

В вычислительной теории чисел[en] и вычислительной алгебре алгоритм «кенгуру» Полларда (а также лямбда-алгоритм Полларда, см. раздел «Название» ниже) — это алгоритм решения задачи дискретного логарифмирования. Алгоритм был предложен в 1978 специалистом в области теории чисел Дж. М. Поллардом[en] в той же статье[1], что и его более известный ρ-алгоритм для решения той же задачи. Хотя Поллард описывает применение этого алгоритма для задачи дискретного логарифмирования в мультипликативной группе по модулю простого p, он является, фактически, общим алгоритмом дискретного логарифмирования — он будет работать на любой циклической конечной группе.

Алгоритм[править | править код]

Пусть  — конечная циклическая группа порядка , генерируемая элементом , и мы ищем дискретный логарифм элемента по основанию . Другими словами, мы ищем , такое, что . Лямбда-алгоритм позволяет нам искать в некотором подмножестве . Мы можем искать полный набор возможных логарифмов, приняв и , хотя в этом случае ρ-алгоритм будет эффективнее. Поступаем следующим образом:

1. Выбираем множество целых чисел и определяем псевдослучайное отображение[en] .

2. Выберем целое число и вычислим последовательность элементов группы согласно формулам:

  • для

3. Вычислим

.

Заметим, что

4. Начинаем вычислять вторую последовательность элементов группы по формулам

  • для

и соответствующую последовательность целых чисел согласно формуле

.

Заметим, что

для

5. Прекращаем вычисления и , когда выполняется одно из условий

A) для некоторого . Если последовательности и «сталкиваются» таким способом, мы имеем:
так что мы нашли требуемое.
B) . Если это случилось, алгоритм потерпел неудачу в поиске . Может быть сделана другая попытка путём изменения множества или/и отображения .

Сложность[править | править код]

Поллард указал для алгоритма временную сложность , основываясь на вероятностной аргументации, что вытекает из предположения, что f действует псевдослучайно. Заметим, что в случае, когда размер множества {a, …, b} измеряется а битах, что обычно в теории сложности, множество имеет размер log(b − a), так что алгоритмическая сложность равна , что является экспонентой от размера задачи. По этой причине лямбда-алгоритм Полларда считается алгоритмом экспоненциальной сложности. За примером подэкспоненциального по времени алгоритма см. Алгоритм исчисления порядка.

Название[править | править код]

Алгоритм известен под двумя названиями.

Первое название — алгоритм «кенгуру» Полларда. Имя относится к аналогии, используемой в статье, где алгоритм был предложен. В статье алгоритм объясняется в терминах использования ручного кенгуру для поимки дикого. Как объяснял Поллард[2], эта аналогия была навеяна «обворожительной» статьёй, опубликованной в том же выпуске журнала Scientific American, что и публикация RSA криптосистемы с открытым ключом. Статья[3] описывает эксперимент, в котором «энергетическая цена движения кенгуру, измеренная в терминах потребления кислорода на различных скоростях, была определена путём помещения кенгуру на беговую дорожку».

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

Поллард предпочитает использование названия «алгоритм кенгуру»[4], чтобы избежать путнаницы с некоторыми параллельными версиями ρ-алгоритма, которые тоже носят название «лямбда-алгоритмы».

См. также[править | править код]

Примечания[править | править код]

  1. Pollard, 1978.
  2. Pollard, 2000, с. 437—447.
  3. Dawson, 1977, с. 78—89.
  4. jmptidcott2. Дата обращения: 5 ноября 2016. Архивировано 17 августа 2016 года.

Литература[править | править код]

  • J. Pollard. Monte Carlo methods for index computation mod p // Mathematics of Computation. — 1978. — Т. 32.
  • J. Pollard. Kangaroos, Monopoly and Discrete Logarithms // Journal of Cryptology. — 2000. — Т. 13. — С. 437—447.
  • T. J. Dawson. Kangaroos // Scientific American. — 1977. — С. 78—89.