Алгоритм Поліґа — Геллмана

Матеріал з testwiki
Версія від 08:58, 29 липня 2023, створена imported>Olvin (Olvin перейменував сторінку з Алгоритм Поліґа-Геллмана на Алгоритм Поліґа — Геллмана)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Алгоритм Поліґа — Геллмана (Шаблон:Lang-en) — спеціалізований алгоритм дискретного логарифмування, який отримує перевагу від факторизації порядку n мультиплікативної групи G, де n — гладке число.
Нехай n=p1e1p2e2prer буде розкладом n на прості множники. Якщо x=logαβ, тоді підхід полягає в визначенні xi=xmodpiei для 1ir, і тоді отримання x. Кожен з xi визначається обчисленням цифр l0,l1,,lei1 для його pi-арного представлення: xi=l0+l1pi++lei1pei1, де 0ljpi1.

Алгоритм

ВХІД: твірний елемент α циклічної групи G порядку n, і елемент βG.

ВИХІД: дискретний логарифм x=logαβ.

  1. Знайти розкладення на прості множники для n: n=p1e1p2e2prer, де ei1.
  2. Для i від 1 до r робимо наступне:
    (Обчислити xi=l0+l1pi++lei1piei1, де xi=xmodpiei)
    1. Покласти γ1 і l10.
    2. Обчислити ααn/pi.
    3. (Обчислити lj) Для j від 0 для ei1 робимо наступне:
      Обчислити γγαlj1pij1 i β¯(βγ1)n/pij+1.
      Обчислити ljlogαβ.
    4. Встановити xil0+l1pi++lei1piei1.
  3. Використати, наприклад, алгоритм Гаусса для обчислення цілого x,0xn1, такий що xxi(modpiei) для 1ir.
  4. Повернути(x).

Складність

У найгіршому випадку складність алгоритму становить O(n) для групи порядку n, але алгоритм ефективніший, коли порядок є гладким числом. А саме, якщо ipiei є розкладенням на прості множники n, тоді складність можна виразити як O(iei(logn+pi))[1].

Приклад групи, де алгоритм ефективний, такий. Розглянемо групу Zp*, де p є простим завдовжки 107 цифр:

p=22708823198678103974314518195029102158525052496759285596453269189798311427475159776411276642277139650833937.

Порядок p* такий n=p1=24×1047298×2247378×3503774. Із того, що найбільший простий дільник для p1 лише 350377, застосовуючи алгоритм Поліґа—Геллмана порівняно просто обчислити логарифми в цій групі.

Примітки

Шаблон:Reflist

Джерела

Шаблон:Алгоритми теорії чисел