Algoritmul Cangurului lui Pollard

În teoria numerelor computaționale și algebra computațională , algoritmul cangur al lui Pollard (și, de asemenea , algoritmul lambda al lui Pollard , vezi secțiunea Titlu de mai jos) este un algoritm pentru rezolvarea problemei logaritmului discret . Algoritmul a fost propus în 1978 de către teoreticianul numerelor J. M. Pollard în aceeași lucrare [1] ca și mai cunoscutul său algoritm ρ pentru rezolvarea aceleiași probleme. Deși Pollard descrie aplicarea acestui algoritm la problema logaritmului discret într-un grup multiplicativ modulo un prim p, este, de fapt, un algoritm general pentru logaritmul discret - va funcționa pe orice grup finit ciclic.

Algoritm

Fie un grup ciclic  finit de ordin generat de un element și căutăm logaritmul discret al elementului față de bază . Cu alte cuvinte, căutăm , astfel încât . Algoritmul lambda ne permite să căutăm într-un subset de . Putem căuta întregul set de logaritmi posibili presupunând și , deși algoritmul ρ va fi mai eficient în acest caz. Procedăm astfel:

1. Alegeți un set de numere întregi și definiți o mapare pseudo-aleatorie .

2. Alegeți un număr întreg și calculați succesiunea elementelor grupului conform formulelor:

3. Calculați

.

observa asta

4. Începem să calculăm a doua secvență de elemente de grup folosind formulele

și succesiunea corespunzătoare de numere întregi conform formulei

.

observa asta

pentru

5. Opriți calculul și când una dintre condiții este îndeplinită

A) pentru unii . Dacă secvențele și „se ciocnesc” în acest fel, avem: asa ca am gasit ce ne-am dorit. B) . Dacă se întâmplă acest lucru, algoritmul nu a reușit să găsească . O altă încercare poate fi făcută prin schimbarea setului sau/și a maparii .

Dificultate

Pollard a specificat o complexitate temporală pentru algoritmul , bazată pe raționament probabilistic, care decurge din ipoteza că f acționează pseudo-aleatoriu. Rețineți că în cazul în care dimensiunea mulțimii { a , …, b } este măsurată în biți , ceea ce este uzual în teoria complexității , mulțimea are dimensiunea log( b  −  a ), deci complexitatea algoritmică este egală cu , care este un exponent al dimensiunii problemei. Din acest motiv, algoritmul lambda al lui Pollard este considerat a fi un algoritm de complexitate exponențială . Pentru un exemplu de algoritm subexponențial în timp, consultați Comandă algoritmul de calcul .

Titlu

Algoritmul este cunoscut sub două nume.

Prenumele este algoritmul „cangur” al lui Pollard . Numele se referă la o analogie folosită în articolul în care a fost propus algoritmul. Articolul explică algoritmul în ceea ce privește utilizarea unui cangur îmblânzit pentru a captura unul sălbatic . După cum a explicat Pollard [2] , această analogie a fost inspirată de o lucrare „încântătoare” publicată în același număr al Scientific American ca și publicația RSA Public Key Cryptosystem . Articolul [3] descrie un experiment în care „costul energetic al mișcării unui cangur, măsurat în termeni de consum de oxigen la diferite viteze, a fost determinat prin plasarea unui cangur pe o bandă de alergare ”.

Al doilea nume este algoritmul lambda al lui Pollard . Foarte asemănător cu numele celuilalt algoritm al lui Pollard pentru logaritmul discret, algoritmul ρ , iar acest nume se datorează asemănării de vizualizare a algoritmului cu litera greacă lambda ( ). Linia scurtă a literei lambda corespunde secvenței . În consecință, linia lungă corespunde secvenței care „se ciocnește” cu prima secvență (similar cu întâlnirea liniilor scurte și lungi ale unei litere).

Pollard preferă să folosească denumirea de „algoritm cangur” [4] pentru a evita confuzia cu unele versiuni paralele ale algoritmului ρ, care sunt denumite și „algoritmi lambda”.

Vezi și

Note

  1. Pollard, 1978 .
  2. Pollard, 2000 , p. 437-447.
  3. Dawson, 1977 , p. 78-89.
  4. jmptidcott2 . Consultat la 5 noiembrie 2016. Arhivat din original la 17 august 2016.

Literatură