В вычислительной теории чисел и вычислительной алгебре алгоритм кенгуру Полларда (также лямбда-алгоритм Полларда , см. Именование ниже) — это алгоритм для решения задачи дискретного логарифмирования . Алгоритм был представлен в 1978 году специалистом по теории чисел Джоном М. Поллардом в той же статье, что и его более известный алгоритм ро Полларда для решения той же задачи. [1] [2] Хотя Поллард описал применение своего алгоритма к задаче дискретного логарифмирования в мультипликативной группе единиц по модулю простого числа p , на самом деле это общий алгоритм дискретного логарифмирования — он будет работать в любой конечной циклической группе .
Алгоритм
Предположим, что есть конечная циклическая группа порядка , которая порождается элементом , и мы стремимся найти дискретный логарифм элемента по основанию . Другими словами, мы ищем такое, что . Алгоритм лямбда позволяет искать в некотором интервале . Можно искать во всем диапазоне возможных логарифмов, установив и .
1. Выберите набор положительных целых чисел со средним значением приблизительно и определите псевдослучайную карту .
2. Выберите целое число и вычислите последовательность элементов группы по формуле:
3. Вычислить
Обратите внимание, что:
4. Начните вычислять вторую последовательность элементов группы по формуле:
и соответствующая последовательность целых чисел согласно:
.
Обратите внимание, что:
5. Прекратите вычисление условий и , когда выполняется одно из следующих условий:
A) для некоторых . Если последовательности и «сталкиваются» таким образом, то имеем:
и вот мы закончили.
B) . Если это произошло, то алгоритм не смог найти . Последующие попытки можно предпринять, изменив выбор и/или .
Сложность
Поллард дает временную сложность алгоритма как , используя вероятностный аргумент, основанный на предположении, что действует псевдослучайно. Поскольку может быть представлено с использованием битов, это экспоненциально по размеру проблемы (хотя все еще является значительным улучшением по сравнению с тривиальным алгоритмом грубой силы, который занимает время ). Пример алгоритма дискретного логарифма с субэкспоненциальным временем см. в алгоритме исчисления индексов .
Нейминг
Алгоритм хорошо известен под двумя названиями.
Первый — «алгоритм кенгуру Полларда». Это название отсылает к аналогии, использованной в статье, представляющей алгоритм, где алгоритм объясняется с точки зрения использования ручного кенгуру для поимки дикого кенгуру. Поллард объяснил [3] , что эта аналогия была навеяна «увлекательной» статьей, опубликованной в том же номере Scientific American в качестве описания криптосистемы с открытым ключом RSA . В статье [4] описывается эксперимент, в котором «энергетическая стоимость передвижения кенгуру, измеренная с точки зрения потребления кислорода на разных скоростях, определялась путем помещения кенгуру на беговую дорожку ».
Второе — «алгоритм лямбда Полларда». Подобно названию другого алгоритма дискретного логарифма Полларда, алгоритма ро Полларда , это название указывает на сходство между визуализацией алгоритма и греческой буквой лямбда ( ). Более короткий штрих буквы лямбда соответствует последовательности , поскольку он начинается с позиции b справа от x. Соответственно, более длинный штрих соответствует последовательности , которая «сталкивается» с первой последовательностью (точно так же, как пересекаются штрихи лямбды) и затем следует за ней последовательно.
Поллард отдал предпочтение названию «алгоритм кенгуру» [5], поскольку это позволяет избежать путаницы с некоторыми параллельными версиями его алгоритма rho, которые также называются «лямбда-алгоритмами».
^ Поллард, Джон М. "Jmptidcott2". Архивировано из оригинала 2023-08-18 . Получено 2023-08-19 .
^ Поллард, Джон М. (июль 2000 г.). «Карточный фокус Крускала» (PDF) . The Mathematical Gazette . 84 (500). Tidmarsh Cottage, Manor Farm Lane, Tidmarsh, Reading, UK: The Mathematical Association : 265– 267. doi :10.2307/3621657. ISSN 0025-5572. JSTOR 3621657. 84.29. Архивировано (PDF) из оригинала 2023-08-18 . Получено 2023-08-19 .(1+3 страницы)
Дальнейшее чтение
Montenegro, Ravi [at Wikidata] ; Tetali, Prasad V. (2010-11-07) [2009-05-31]. Сколько времени потребуется, чтобы поймать дикого кенгуру? (PDF) . Труды сорок первого ежегодного симпозиума ACM по теории вычислений (STOC 2009). стр. 553–560 . arXiv : 0812.0789 . doi :10.1145/1536414.1536490. S2CID 12797847. Архивировано (PDF) из оригинала 20.08.2023 . Получено 20.08.2023 .