Tonelli-Shanks algoritmus

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. március 7-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A Tonelli-Shanks algoritmus (Shanks RESSOL algoritmusnak nevezte) a moduláris aritmetikához tartozik, és összehasonlítások megoldására szolgál.

ahol  a másodfokú maradék modulo , és  egy páratlan prímszám .

A Tonelli-Shanks algoritmus nem használható összetett modulokhoz; négyzetgyökök keresése modulo kompozit számításilag egyenértékű a faktorizációval [1] .

Ennek az algoritmusnak egy egyenértékű, de valamivel bonyolultabb változatát Alberto Tonelli fejlesztette ki 1891-ben. Az itt tárgyalt algoritmus verzióját Daniel Shanks önállóan fejlesztette ki 1973-ban.

Algoritmus

Bemeneti adatok :  — páratlan prímszám,  — egész szám , amely egy négyzetes maradék modulo , más szóval , ahol  a Legendre szimbólum .

Az algoritmus eredménye : olyan maradék , amely kielégíti az összehasonlítást .

  1. Kettő hatványait választjuk ki -ból , azaz legyen , ahol páratlan, . Figyeljük meg, hogy ha , akkor a megoldást a képlet határozza meg . Ezután feltételezzük .
  2. Kiválasztunk egy tetszőleges másodfokú nemmaradékot , azaz a Legendre szimbólumot , és beállítjuk a .
  3. Hadd is
  4. Végrehajtjuk a ciklust:
    1. Ha , akkor az algoritmus visszatér .
    2. Ellenkező esetben a ciklusban megtaláljuk a legkisebb , -t , így a négyzetesítés iterálásával.
    3. Hagyjuk , és térjünk vissza a ciklus elejére.

Az összehasonlító megoldás megtalálása után a második összehasonlító megoldást a következőképpen találjuk meg .

Példa

Tegyünk egy összehasonlítást .  páratlan, és mivel , 10 egy másodfokú maradék az Euler-kritérium szerint .

Mivel nyilvánvalóan innen 2 összehasonlító megoldást kapunk.

Bizonyítás

Hadd . Most pedig jegyezd meg . Az utolsó összehasonlítás igaz marad az algoritmus fő hurkának minden iterációja után. Ha egy ponton , akkor az algoritmus a -val fejeződik be .

Ha , akkor vegyük figyelembe a másodfokú nem-maradék modulo . Legyen , majd és , ami azt mutatja, hogy a sorrend .

Hasonlóképpen azt kapjuk, hogy , tehát a sorrend osztódik , tehát a sorrend . Mivel  egy négyzet modulo , akkor ez is négyzet, ami azt jelenti, hogy .

Tegyük fel, hogy és , és . A korábbiakhoz hasonlóan megőrzik; azonban ebben a konstrukcióban mindkét és rendje van . Ebből következik a sorrend , ahol .

Ha , akkor , és az algoritmus leáll, visszatérve . Ellenkező esetben hasonló definíciókkal indítjuk újra a ciklust, amíg 0-t nem kapunk. Mivel a természetesek sorozata szigorúan csökken, az algoritmus véget ér.

Algoritmus sebessége

A Tonelli-Shanks algoritmus átlagosan teljesít (minden lehetséges bemeneten (négyzetes maradékok és nem maradékok))

modulo szorzások, ahol  a számjegyek száma a bináris reprezentációban , és  az egyesek száma a bináris reprezentációban . Ha a szükséges másodfokú nem-maradékot úgy számítjuk ki, hogy egy véletlenszerűen kiválasztott nem-maradékot másodlagos nem-maradékról van szó, akkor ehhez átlagosan két Legendre szimbólum kiszámítása szükséges [2] . A kiszámított Legendre szimbólumok átlagos számaként kettőt a következőképpen magyarázzuk: annak a valószínűsége, hogy négyzetes maradékról van szó  - a valószínűsége nagyobb, mint a fele, így átlagosan körülbelül két ellenőrzésre lesz szükség, hogy másodfokú maradékról van-e szó.

Ez azt mutatja, hogy a gyakorlatban a Tonelli-Shanks algoritmus nagyon jól fog működni, ha a modulus véletlenszerű, vagyis ha nem különösebben nagy a bináris reprezentáció számjegyeinek számához képest . A Cipolla algoritmus akkor és csak akkor teljesít jobban, mint a Tonelli-Shanks algoritmus . Ha azonban ehelyett Sutherland algoritmusát használjuk a diszkrét logaritmus végrehajtására a 2- Sylow alcsoporton , ez lehetővé teszi, hogy a kifejezésben a szorzások számát egy aszimptotikusan korlátos értékkel helyettesítsük [3] . Valóban, elég találni egy olyat, amely még akkor is kielégít (megjegyzendő, hogy ez 2 többszöröse, mivel  ez egy másodfokú maradék).

Az algoritmus megköveteli egy másodfokú nem maradékot . Jelenleg nincs olyan determinisztikus algoritmus , amely a hosszúságú polinomidőben megtalálná ezt . Ha azonban igaz az általánosított Riemann-hipotézis , akkor van egy négyzetes nem-maradék , [4] , amelyet könnyű megtalálni a polinomidőben megadott határokon belüli ellenőrzéssel . Ez természetesen a legrosszabb eset becslése, mivel, mint fentebb látható, elegendő átlagosan 2 véletlenszerű ellenőrzést ellenőrizni, hogy négyzetes nem-maradékot találjunk.

Alkalmazás

A Tonelli-Shanks algoritmus használható egy maradékmező feletti elliptikus görbén lévő pontok keresésére . Használható számításokhoz a Rabin kriptorendszerben is .

Általánosítás

A Tonelli-Shanks algoritmus általánosítható tetszőleges ciklikus csoportra (a helyett ) és egy tetszőleges természetes th-edik fok gyökeinek megtalálására , különösen a th-edik fok gyökeinek kiszámítására egy véges mezőben [5] .

Ha ugyanabban a ciklikus csoportban sok és nem túl nagy négyzetgyök van, akkor az algoritmus javítása és egyszerűsítése, valamint sebességének növelése érdekében az elemek négyzetgyökeinek táblázata elkészíthető a következőképpen:

  1. Kettő hatványait különítjük el a következőben: legyen olyan, hogy , legyen páratlan.
  2. Hadd .
  3. Keressük meg a gyökeret az aránytáblázatból, és tegyük
  4. Vissza .

Jegyzetek

  1. Oded Goldreich, Számítási komplexitás: fogalmi perspektíva , Cambridge University Press, 2008, p. 588.
  2. Gonzalo Tornaria , Négyzetgyökök modulo p  (nem elérhető link) , 2. oldal.
  3. Sutherland, Andrew V. (2011), Struktúra számítás és diszkrét logaritmusok véges Abel- p - csoportokban , Mathematics of Computation 80. kötet: 477–500 , DOI 10.1090/s0025-57235-10-20 
  4. Bach, Eric (1990), Explicit bounds for primality testing and related problems , Mathematics of Computation 55 (191): 355–380 , DOI 10.2307/2008811 
  5. LM Adleman, K. Manders, G. Miller: 1977, "A véges mezők gyökerezéséről". In: 18. IEEE Symposium on Foundations of Computer Science. p. 175–177.

Irodalom

Linkek