Tonelli-Shanks algoritm

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 7 mars 2020; verifiering kräver 1 redigering .

Tonelli-Shanks-algoritmen (kallad RESSOL-algoritmen av Shanks) tillhör modulär aritmetik och används för att lösa jämförelser

där  är den kvadratiska resten modulo och  är ett udda primtal .

Tonelli-Shanks-algoritmen kan inte användas för sammansatta moduler; att söka efter kvadratrötter modulo composite är beräkningsmässigt ekvivalent med faktorisering [1] .

En likvärdig men lite mer komplicerad version av denna algoritm utvecklades av Alberto Tonelli 1891. Den version av algoritmen som diskuteras här utvecklades oberoende av Daniel Shanks 1973.

Algoritm

Indata :  — ett udda primtal,  — ett heltal som är en kvadratisk rest modulo , med andra ord , där  är Legendre-symbolen .

Resultatet av algoritmen : en rest som uppfyller jämförelsen .

  1. Vi väljer potenser av två från , det vill säga låt , där udda, . Observera att om , det vill säga, så bestäms lösningen av formeln . Därefter antar vi .
  2. Vi väljer en godtycklig kvadratisk icke-rest , det vill säga Legendre-symbolen , och set .
  3. Låt också
  4. Vi kör cykeln:
    1. Om , då returnerar algoritmen .
    2. Annars i slingan finner vi den minsta , , sådan att genom iteration av kvadrering.
    3. Låt , och låt , återgå till början av cykeln.

Efter att ha hittat jämförelselösningen hittas den andra jämförelselösningen som .

Exempel

Låt oss göra en jämförelse .  är udda, och eftersom 10 är en kvadratisk rest enligt Eulers kriterium .

Eftersom , uppenbarligen , härifrån får vi 2 jämförelselösningar.

Bevis

Låt . Låt nu och , notera det . Den sista jämförelsen förblir sann efter varje iteration av algoritmens huvudloop. Om någon gång slutar algoritmen med .

Om , då överväga den kvadratiska icke-rester modulo . Låt , sedan och , som visar att ordningen är .

På samma sätt får vi det , så ordningen delar sig , så ordningen är . Eftersom  är en kvadrat modulo , då är det också en kvadrat, vilket betyder att .

Låt oss anta att och , och . Liksom tidigare är den bevarad; dock i denna konstruktion både och har ordning . Det följer som har ordningen , där .

Om , då , och algoritmen slutar, returnerar . Annars startar vi om slingan med liknande definitioner tills vi får , vilket är lika med 0. Eftersom sekvensen av naturliga ämnen är strikt minskande, avslutas algoritmen.

Algoritmhastighet

Tonelli-Shanks-algoritmen presterar i genomsnitt (över alla möjliga indata (kvadratiska rester och icke-rester))

modulo multiplikationer, där  är antalet siffror i den binära representationen , och  är antalet ettor i den binära representationen . Om den erforderliga kvadratiska icke-resten beräknas genom att kontrollera en slumpmässigt vald om det är en kvadratisk icke-rest, så kräver detta i genomsnitt beräkning av två Legendre-symboler [2] . Två som det genomsnittliga antalet beräknade Legendre-symboler förklaras enligt följande: sannolikheten att det är en kvadratisk rest är  - sannolikheten är större än hälften, så i genomsnitt kommer det att ta ungefär två kontroller om det är en kvadratisk rest.

Detta visar att Tonelli-Shanks-algoritmen i praktiken kommer att fungera mycket bra om modulen är slumpmässig, det vill säga när den inte är särskilt stor i förhållande till antalet siffror i den binära representationen . Cipolla-algoritmen presterar bättre än Tonelli-Shanks-algoritmen om och bara om . Men om istället Sutherlands algoritm används för att utföra den diskreta logaritmen på 2- Sylow-undergruppen av , tillåter detta att antalet multiplikationer i uttrycket ersätts av ett asymptotiskt begränsat värde [3] . Det räcker faktiskt att hitta en sådan som uppfyller även då (observera att det är en multipel av 2, eftersom det  är en kvadratisk rest).

Algoritmen kräver att man hittar en kvadratisk icke-rest . För tillfället finns det ingen deterministisk algoritm , som skulle hitta sådana , i polynomisk tid av längd . Men om den generaliserade Riemann-hypotesen är sann, så finns det en kvadratisk icke-rest , [4] , som är lätt att hitta genom att kontrollera inom de angivna gränserna i polynomtid . Detta är naturligtvis en värsta uppskattning, eftersom det, som visas ovan, räcker med att kontrollera i genomsnitt 2 slumpmässiga för att hitta en kvadratisk icke-rest.

Applikation

Tonelli-Shanks-algoritmen kan användas för att hitta punkter på en elliptisk kurva över ett restfält . Den kan också användas för beräkningar i Rabins kryptosystem .

Generalisering

Tonelli-Shanks-algoritmen kan generaliseras till vilken cyklisk grupp som helst (istället för ) och till att hitta rötter av den th graden för en godtycklig naturlig , i synnerhet till att beräkna rötterna av den th graden i ett ändligt fält [5] .

Om det finns många kvadratrötter som ska beräknas i samma cykliska grupp och inte särskilt stora, för att förbättra och förenkla algoritmen och öka dess hastighet, kan en tabell med kvadratrötter från elementens kvadrater förberedas enligt följande:

  1. Vi pekar ut krafter av två i : låt sådan att , vara udda.
  2. Låt .
  3. Låt oss hitta roten från kvottabellen och ställa in
  4. Återgå .

Anteckningar

  1. Oded Goldreich, Computational complexity: a conceptual perspective , Cambridge University Press, 2008, s. 588.
  2. Gonzalo Tornaria , Square roots modulo p  (ej tillgänglig länk) , sida 2.
  3. Sutherland, Andrew V. (2011), Structure computation and discrete logarithms in finite abelian p -groups , Mathematics of Computation vol. 80: 477–500 , DOI 10.1090/s0025-5718-160-223 
  4. Bach, Eric (1990), Explicita gränser för primalitetstestning och relaterade problem , Mathematics of Computation vol. 55 (191): 355–380 , DOI 10.2307/2008811 
  5. LM Adleman, K. Manders, G. Miller: 1977, "Om att slå rötter i finita fält". I: 18:e IEEE Symposium on Foundations of Computer Science. sid. 175–177.

Litteratur

Länkar