Cipolla algoritm

Cipollas algoritm är en teknik för att lösa en kongruent formekvation

där , så n blir kvadraten av x , och där är ett udda primtal . Här betecknar ett sista fält med element . Algoritmen är uppkallad efter den italienske matematikern Michele Cipolla , som upptäckte metoden 1907.

Algoritm

Ingång:

Utgång:

Steg 1. Hitta ett tal så att det inte är en kvadrat. En algoritm för att hitta sådana siffror är inte känd, förutom genom försök och misstag . Vi väljer bara ett tal och beräknar Legendre-symbolen för att säkerställa att den uppfyller villkoret. Chansen att ett slumptal matchar är . Om det är tillräckligt stort är detta värde ungefär lika med [1] . Det förväntade antalet försök att få ett lämpligt a är alltså 2.

Steg 2. Få x genom att räkna i fältet . Detta tal x kommer att vara en av rötterna till ekvationen

Om , då gäller också. Eftersom p är udda, så för den hittade lösningen x finns det alltid en andra lösning lika med -x .

Exempel

( Obs : Alla element upp till det andra steget tillhör fältet och alla element i det andra steget tillhör fältet ). Vi letar efter ett antal x sådana att

Innan du tillämpar algoritmen måste du kontrollera att talet faktiskt är en kvadrat i fältet , vilket betyder att Legendre-symbolen måste vara lika med 1. Du kan kontrollera detta med Euler-kriteriet : . Detta bekräftar att 10 är en kvadrat och algoritmen kan appliceras på den.

Således är en lösning, liksom Indeed and

Bevis

I den första delen av beviset verifierar vi att det verkligen är ett fält. För att förenkla beräkningarna introducerar vi ett tal lika med . Naturligtvis är inte en kvadratisk rest, så kvadratroten finns inte i . Detta kan, grovt sett, betraktas som en analog till det komplexa talet i . Aritmetiken för fältet är ganska uppenbar. Tillägg definieras som

.

Multiplikation definieras också på vanligt sätt. Kommer vi ihåg det så får vi det

.

Nu måste vi kontrollera fältets egenskaper. Stängning under operationerna addition och multiplikation, associativitet , kommutativitet och distributivitet är lätt att verifiera, eftersom fältet liknar fältet för komplexa tal (där det fungerar som en analog till i ). Det neutrala elementet genom addition är eller, mer formellt, om , då

.

Det neutrala elementet genom multiplikation är , mer exakt :

.

Det återstår bara att kontrollera att det finns inversa element under addition och multiplikation. Det är lätt att se att inversen av tillägget av ett tal är talet , som också finns i fältet , eftersom . För att visa att alla element som inte är noll har ett element inverst i multiplikation, skriver vi ut representationerna och . Med andra ord,

.

Vi får två ekvationer, och . Vi löser detta system med avseende på och , vi får

, .

De omvända elementen i uttrycken för och existerar eftersom de är element i fältet . Detta avslutar den första delen av beviset.

I den andra delen av beviset kommer vi att visa det för alla element . Per definition är inte en kvadrat i . Då ger Eulerkriteriet

.

Alltså ,. Detta, tillsammans med Fermats lilla sats (som anger att för alla ) och kunskapen om att i fält med karakteristisk , visar det önskade resultatet

.

Den tredje och sista delen av bevisningen visar att i målet . Beräkna

.

Observera att dessa beräkningar sker i , så . Lagranges teorem säger att ett polynom som inte är noll av grad n har högst n rötter över ett fält K. Med tanke på att polynomet har 2 rötter i , kan det inte finnas några andra rötter . Det har visat sig att och är rötter till polynomet i , så . [2]

Hastighet

Efter att ha hittat ett lämpligt a är antalet operationer som krävs av algoritmen multiplikationer och additioner, där m är antalet siffror i den binära representationen av talet p och k är antalet ettor i denna representation. För att hitta en genom försök och misstag är det förväntade antalet beräkningar av Legendre-symbolen 2. Du kan dock ha tur första gången, men det kan ta mer än 2 försök. Följande två likheter gäller i fältet

var är känt i förväg. Denna beräkning kräver 4 multiplikationer och 4 additioner.

var och . Denna operation kräver 6 multiplikationer och 4 additioner.

Om vi ​​antar att (i fallet med , är direkt beräkning mycket snabbare) det binära uttrycket har tecken, varav k är lika med ett. För att beräkna potensen av ett tal måste den första formeln användas en gång och den andra en gång.

Cipolla-algoritmen är bättre än Tonelli-Shanks-algoritmen om och bara om , där är den maximala effekten av 2 som är delbar med [3] .

Anteckningar

  1. Crandall, Pomerance, 2001 , sid. 157.
  2. M. Baker Cipollas algoritm för att hitta kvadratrötter mod p . Hämtad 29 juni 2017. Arkiverad från originalet 25 mars 2017.
  3. Gonzalo Tornaria Kvadratrötter modulo p  (otillgänglig länk)

Litteratur

Länkar