Algoritmul Tonelli-Shanks

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 7 martie 2020; verificarea necesită 1 editare .

Algoritmul Tonelli-Shanks (numit algoritmul RESSOL de către Shanks) aparține aritmeticii modulare și este folosit pentru a rezolva comparații

unde  este restul patratic modulo și este un număr prim  impar .

Algoritmul Tonelli-Shanks nu poate fi utilizat pentru module compuse; căutarea rădăcinilor pătrate modulo compozit este echivalentă din punct de vedere computațional cu factorizarea [1] .

O versiune echivalentă, dar puțin mai complicată a acestui algoritm a fost dezvoltată de Alberto Tonelli în 1891. Versiunea algoritmului discutată aici a fost dezvoltată independent de Daniel Shanks în 1973.

Algoritm

Date de intrare :  — un număr prim impar,  — un număr întreg care este un rest patratic modulo , cu alte cuvinte, , unde  este simbolul Legendre .

Rezultatul algoritmului : un reziduu care satisface comparația .

  1. Selectăm puteri a doi din , adică fie , unde impar, . Rețineți că dacă , adică , atunci soluția este determinată de formula . În continuare, presupunem .
  2. Alegem un nerezidu pătratic arbitrar , adică simbolul Legendre , și setăm .
  3. Lasa si
  4. Executăm ciclul:
    1. Dacă , atunci algoritmul revine .
    2. În caz contrar, în buclă găsim cel mai mic , , astfel încât prin iterare la pătrat.
    3. Să , și să , să revină la începutul ciclului.

După găsirea soluției de comparație, a doua soluție de comparație se găsește ca .

Exemplu

Să facem o comparație .  este impar și, deoarece , 10 este un reziduu pătratic după criteriul lui Euler .

Deoarece , evident , de aici obținem 2 soluții de comparație.

Dovada

Lasă . Acum și , rețineți că . Ultima comparație rămâne adevărată după fiecare iterație a buclei principale a algoritmului. Dacă la un moment dat , atunci algoritmul se termină cu .

Dacă , atunci luați în considerare modul pătratic nereziduu . Fie , apoi și , ceea ce arată că ordinea este .

În mod similar, obținem că , deci ordinea se împarte , deci ordinea este . Deoarece  este un pătrat modulo , atunci este și un pătrat, ceea ce înseamnă că .

Să presupunem că și , și . Ca și înainte, se păstrează; cu toate acestea, în această construcție , ambele și au ordine . Rezultă că are ordinea , unde .

Dacă , atunci , iar algoritmul se oprește, revenind . În caz contrar, repornim bucla cu definiții similare până când obținem , care este egal cu 0. Deoarece secvența de naturale este strict descrescătoare, algoritmul se termină.

Viteza algoritmului

Algoritmul Tonelli-Shanks funcționează în medie (peste toate intrările posibile (reziduuri pătratice și nereziduuri))

înmulțiri modulo, unde  este numărul de cifre din reprezentarea binară și  este numărul de cifre din reprezentarea binară . Dacă nereziduul patratic necesar este calculat prin verificarea unuia ales aleatoriu pentru a stabili dacă este un non-reziduu pătratic, atunci în medie acest lucru necesită calcularea a două simboluri Legendre [2] . Doi ca număr mediu de simboluri Legendre calculate este explicat după cum urmează: probabilitatea ca acesta să fie un reziduu pătratic este  - probabilitatea este mai mare de jumătate, deci, în medie, vor fi necesare aproximativ două verificări dacă este un reziduu pătratic.

Acest lucru arată că, în practică, algoritmul Tonelli-Shanks va funcționa foarte bine dacă modulul este aleatoriu, adică atunci când nu este deosebit de mare în raport cu numărul de cifre din reprezentarea binară . Algoritmul Cipolla are performanțe mai bune decât algoritmul Tonelli-Shanks dacă și numai dacă . Totuși, dacă în schimb algoritmul lui Sutherland este folosit pentru a efectua logaritmul discret pe subgrupul 2- Sylow al lui , acest lucru permite ca numărul de înmulțiri din expresie să fie înlocuit cu o valoare mărginită asimptotic [3] . Într-adevăr, este suficient să găsiți unul care să satisfacă chiar și atunci (rețineți că este un multiplu de 2, deoarece  este un reziduu patratic).

Algoritmul necesită găsirea unui non-reziduu pătratic . În momentul de față, nu există un algoritm determinist , care să găsească astfel de , în timp polinomial de lungime . Totuși, dacă ipoteza Riemann generalizată este adevărată, atunci există un non-rezidu pătratic , [4] , care este ușor de găsit verificând în limitele specificate în timp polinomial . Aceasta este, desigur, o estimare în cel mai rău caz, deoarece, așa cum se arată mai sus, este suficient să verificați în medie 2 dintre ele aleatorii pentru a găsi un non-rezidu pătratic.

Aplicație

Algoritmul Tonelli-Shanks poate fi folosit pentru a găsi puncte pe o curbă eliptică peste un câmp de reziduuri . Poate fi folosit și pentru calcule în criptosistemul Rabin .

Generalizare

Algoritmul Tonelli-Shanks poate fi generalizat la orice grup ciclic (în loc de ) și la găsirea rădăcinilor de gradul al treilea pentru un natural arbitrar , în special, la calcularea rădăcinilor gradului al treilea într-un câmp finit [5] .

Dacă sunt multe rădăcini pătrate de calculat în același grup ciclic și nu foarte mari, pentru a îmbunătăți și simplifica algoritmul și a crește viteza acestuia, se poate pregăti un tabel cu rădăcini pătrate ale pătratelor elementelor astfel:

  1. Punem în evidență puterile a doi în : astfel încât să fie ciudat.
  2. Lasă .
  3. Să găsim rădăcina din tabelul de rapoarte și să punem
  4. Întoarce-te .

Note

  1. Oded Goldreich, Computational complexity: a conceptual perspective , Cambridge University Press, 2008, p. 588.
  2. Gonzalo Tornaria , Rădăcini pătrate modulo p  (link indisponibil) , pagina 2.
  3. Sutherland, Andrew V. (2011), Structure calcul and discrete logarithms in finite abelian p -groups , Mathematics of Computation vol. 80: 477–500 , DOI 10.1090/s0025-5718-10-02356-2 
  4. Bach, Eric (1990), Limite explicite pentru testarea primarității și problemele conexe , Mathematics of Computation vol. 55 (191): 355–380 , DOI 10.2307/2008811 
  5. LM Adleman, K. Manders, G. Miller: 1977, „On taking roots in finite fields”. În: 18th IEEE Symposium on Foundations of Computer Science. p. 175–177.

Literatură

Link -uri