Tonelli-Shanks algoritme

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 7. marts 2020; verifikation kræver 1 redigering .

Tonelli-Shanks-algoritmen (kaldet RESSOL-algoritmen af ​​Shanks) hører til modulær aritmetik og bruges til at løse sammenligninger

hvor  er den kvadratiske rest modulo , og  er et ulige primtal .

Tonelli-Shanks-algoritmen kan ikke bruges til sammensatte moduler; søgning efter kvadratrødder modulo composite er beregningsmæssigt ækvivalent med faktorisering [1] .

En tilsvarende, men lidt mere kompliceret version af denne algoritme blev udviklet af Alberto Tonelli i 1891. Den version af algoritmen, der diskuteres her, blev udviklet uafhængigt af Daniel Shanks i 1973.

Algoritme

Inputdata :  — et ulige primtal  — et heltal , der er en kvadratisk rest modulo , med andre ord, , hvor  er Legendre-symbolet .

Resultatet af algoritmen : en rest , der opfylder sammenligningen .

  1. Vi vælger potenser af to fra , det vil sige lad , hvor ulige, . Bemærk, at hvis , det vil sige , så er løsningen bestemt af formlen . Dernæst antager vi .
  2. Vi vælger en vilkårlig kvadratisk nonresidue , det vil sige Legendre-symbolet , og sæt .
  3. Lad også
  4. Vi udfører cyklussen:
    1. Hvis , så returnerer algoritmen .
    2. Ellers finder vi i løkken den mindste , , sådan at ved iteration af kvadrat.
    3. Lad , og lad , vende tilbage til begyndelsen af ​​cyklussen.

Efter at have fundet sammenligningsløsningen findes den anden sammenligningsløsning som .

Eksempel

Lad os lave en sammenligning .  er ulige, og da 10 er en kvadratisk rest efter Eulers kriterium .

Da vi naturligvis herfra får 2 sammenligningsløsninger.

Bevis

Lad . Lad nu og , bemærk det . Den sidste sammenligning forbliver sand efter hver iteration af algoritmens hovedsløjfe. Hvis på et tidspunkt , så afsluttes algoritmen med .

Hvis , så overvej den kvadratiske non-residue modulo . Lad , derefter og , som viser at rækkefølgen er .

På samme måde får vi det , så rækkefølgen deler sig , så rækkefølgen er . Da  er en kvadratisk modulo , så er det også en firkant, hvilket betyder at .

Lad os antage, at og , og . Som før er den bevaret; dog i denne konstruktion både og har orden . Det følger, at har den rækkefølge , hvor .

Hvis , så , og algoritmen stopper, returnerer . Ellers genstarter vi løkken med lignende definitioner , indtil vi får , som er lig med 0. Da sekvensen af ​​naturals er strengt faldende, afsluttes algoritmen.

Algoritmehastighed

Tonelli-Shanks-algoritmen fungerer i gennemsnit (over alle mulige input (kvadratiske rester og ikke-rester))

modulo multiplikationer, hvor  er antallet af cifre i den binære repræsentation , og  er antallet af ener i den binære repræsentation . Hvis den nødvendige kvadratiske ikke-rest beregnes ved at kontrollere en tilfældigt valgt en for, om det er en kvadratisk ikke-rest, så kræver dette i gennemsnit beregning af to Legendre-symboler [2] . To som det gennemsnitlige antal beregnede Legendre-symboler forklares som følger: sandsynligheden for, at det er en kvadratisk rest er  - sandsynligheden er større end halvdelen, så i gennemsnit vil det tage omkring to kontroller, om det er en kvadratisk rest.

Dette viser, at Tonelli-Shanks-algoritmen i praksis vil fungere meget godt, hvis modulet er tilfældigt, det vil sige, når det ikke er specielt stort i forhold til antallet af cifre i den binære repræsentation . Cipolla-algoritmen yder bedre end Tonelli-Shanks-algoritmen, hvis og kun hvis . Men hvis Sutherlands algoritme i stedet bruges til at udføre den diskrete logaritme på 2 - Sylow-undergruppen af ​​, tillader dette, at antallet af multiplikationer i udtrykket erstattes af en asymptotisk afgrænset værdi [3] . Det er faktisk tilstrækkeligt at finde en sådan, der opfylder selv da (bemærk, at det er et multiplum af 2, da  det er en kvadratisk rest).

Algoritmen kræver at finde en kvadratisk ikke-rest . I øjeblikket er der ingen deterministisk algoritme , som ville finde en sådan , i polynomiel længde . Men hvis den generaliserede Riemann-hypotese er sand, så er der en kvadratisk ikke-rest , [4] , som er let at finde ved at tjekke inden for de angivne grænser i polynomiel tid . Dette er naturligvis et worst-case estimat, da det, som vist ovenfor, er tilstrækkeligt at tjekke i gennemsnit 2 tilfældige for at finde en kvadratisk ikke-rest.

Ansøgning

Tonelli-Shanks-algoritmen kan bruges til at finde punkter på en elliptisk kurve over et restfelt . Det kan også bruges til beregninger i Rabins kryptosystem .

Generalisering

Tonelli-Shanks-algoritmen kan generaliseres til enhver cyklisk gruppe (i stedet for ) og til at finde rødder af th grad for en vilkårlig naturlig , især til at beregne rødderne af th grad i et endeligt felt [5] .

Hvis der er mange kvadratrødder, der skal beregnes i den samme cykliske gruppe og ikke er særlig store, for at forbedre og forenkle algoritmen og øge dens hastighed, kan en tabel med kvadratrødder af elementernes kvadrater udarbejdes som følger:

  1. Vi fremhæver to potenser i : lad sådan at , være ulige.
  2. Lad .
  3. Lad os finde roden fra tabellen over forhold og sætte
  4. Retur .

Noter

  1. Oded Goldreich, Computational complexity: a conceptual perspective , Cambridge University Press, 2008, s. 588.
  2. Gonzalo Tornaria , Kvadratrødder modulo p  (utilgængeligt link) , side 2.
  3. Sutherland, Andrew V. (2011), Structure computation and discrete logarithms in finite abelian p -groups , Mathematics of Computation bind 80: 477–500 , DOI 10.1090/s0025-5718-160-2235 
  4. Bach, Eric (1990), Eksplicitte grænser for primalitetstestning og relaterede problemer , Mathematics of Computation bind 55 (191): 355–380 , DOI 10.2307/2008811 
  5. LM Adleman, K. Manders, G. Miller: 1977, "Om at slå rødder i endelige felter". I: 18th IEEE Symposium on Foundations of Computer Science. s. 175-177.

Litteratur

Links