Tonelli-Shanksův algoritmus

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. března 2020; ověření vyžaduje 1 úpravu .

Algoritmus Tonelli-Shanks (Shanksem nazývaný algoritmus RESSOL) patří k modulární aritmetice a používá se k řešení porovnávání .

kde  je kvadratický zbytek modulo a  je liché prvočíslo .

Algoritmus Tonelli-Shanks nelze použít pro složené moduly; hledání odmocnin modulo kompozit je výpočetně ekvivalentní faktorizaci [1] .

Ekvivalentní, ale o něco složitější verzi tohoto algoritmu vyvinul Alberto Tonelli v roce 1891. Zde popsaná verze algoritmu byla vyvinuta nezávisle Danielem Shanksem v roce 1973.

Algoritmus

Vstupní data :  — liché prvočíslo,  — celé číslo , které je kvadratickým zbytkem modulo , jinými slovy , kde  je Legendreův symbol .

Výsledek algoritmu : zbytek , který vyhovuje srovnání .

  1. Vybíráme mocniny dvou z , tedy nechť , kde liché, . Všimněte si, že pokud , to je , pak je řešení určeno vzorcem . Dále předpokládáme .
  2. Zvolíme libovolný kvadratický nonresidue , tedy Legendreův symbol , a nastavíme .
  3. Nechte také
  4. Provedeme cyklus:
    1. Pokud , pak se algoritmus vrátí .
    2. Jinak ve smyčce najdeme nejmenší , , takové, že iterací kvadratury.
    3. Nechte , a nechte , vrátit se na začátek cyklu.

Po nalezení srovnávacího řešení je druhé srovnávací řešení nalezeno jako .

Příklad

Udělejme srovnání .  je liché, a protože , 10 je kvadratický zbytek podle Eulerova kritéria .

Vzhledem k tomu , samozřejmě , odtud dostáváme 2 řešení porovnání.

Důkaz

Nechte _ Nechte nyní a , všimněte si toho . Poslední srovnání zůstává pravdivé po každé iteraci hlavní smyčky algoritmu. Pokud v určitém okamžiku , pak algoritmus skončí s .

Jestliže , pak zvažte kvadratický nezbytkový modulo . Nechť , pak a , což ukazuje, že pořadí je .

Podobně dostaneme, že , takže pořadí se dělí , takže pořadí je . Protože  je čtverec modulo , pak je to také čtverec, což znamená, že .

Předpokládejme, že a , a . Stejně jako dříve je zachována; však v této konstrukci , oba a mají pořádek . Z toho vyplývá, že má pořadí , kde .

Pokud , potom , a algoritmus se zastaví, vrátí se . V opačném případě restartujeme smyčku s podobnými definicemi , dokud nedostaneme , která se rovná 0. Protože posloupnost přirozených je přísně klesající, algoritmus skončí.

Rychlost algoritmu

Algoritmus Tonelli-Shanks funguje v průměru (přes všechny možné vstupy (kvadratické zbytky a nezbytky))

modulo násobení, kde  je počet číslic v binární reprezentaci a  je počet jedniček v binární reprezentaci . Pokud se požadované kvadratické nezbytky vypočítávají kontrolou náhodně vybraného , ​​zda se jedná o kvadratické nezbytky, pak to v průměru vyžaduje výpočet dvou Legendreových symbolů [2] . Dva jako průměrný počet vypočítaných Legendreových symbolů se vysvětluje následovně: pravděpodobnost, že se jedná o kvadratický zbytek je  - pravděpodobnost je větší než poloviční, takže v průměru zabere asi dvě kontroly, zda se jedná o kvadratický zbytek.

To ukazuje, že v praxi bude Tonelli-Shanksův algoritmus fungovat velmi dobře, pokud je modul náhodný, to znamená, když není příliš velký vzhledem k počtu číslic v binární reprezentaci . Algoritmus Cipolla funguje lépe než algoritmus Tonelli-Shanks tehdy a jen tehdy, když . Pokud se však místo toho použije Sutherlandův algoritmus k provedení diskrétního logaritmu na 2- Sylow podskupině , umožňuje to nahradit počet násobení ve výrazu asymptoticky omezenou hodnotou [3] . Ve skutečnosti stačí najít takový, který vyhovuje i tehdy (všimněte si, že je to násobek 2, protože  je kvadratický zbytek).

Algoritmus vyžaduje nalezení kvadratického non-rezidua . V tuto chvíli neexistuje žádný deterministický algoritmus , který by takové našel v polynomiálním čase délky . Je-li však zobecněná Riemannova hypotéza pravdivá, pak existuje kvadratický nezbytek , [4] , který lze snadno najít kontrolou ve specifikovaných mezích v polynomiálním čase . Toto je samozřejmě odhad nejhoršího případu, protože, jak je uvedeno výše, stačí zkontrolovat průměrně 2 náhodné, aby se našel kvadratický zbytek.

Aplikace

Algoritmus Tonelli-Shanks lze použít k nalezení bodů na eliptické křivce nad polem zbytků . Může být také použit pro výpočty v Rabinově kryptosystému .

Generalizace

Tonelli-Shanksův algoritmus lze zobecnit na libovolnou cyklickou grupu (místo ) a na hledání kořenů tého stupně pro libovolný přirozený , zejména na výpočet kořenů tého stupně v konečném poli [5] .

Pokud je ve stejné cyklické skupině mnoho odmocnin, které je třeba vypočítat a nejsou příliš velké, lze pro zlepšení a zjednodušení algoritmu a zvýšení jeho rychlosti připravit tabulku druhých odmocnin druhých mocnin prvků takto:

  1. Vyčleňujeme mocniny dvou v : nechť takové, že , je liché.
  2. Nechte _
  3. Najdeme kořen z tabulky poměrů a dáme
  4. Návrat .

Poznámky

  1. Oded Goldreich, Computational complexity: a conceptual perspective , Cambridge University Press, 2008, str. 588.
  2. Gonzalo Tornaria , Odmocniny modulo p  (nedostupný odkaz) , strana 2.
  3. Sutherland, Andrew V. (2011), Výpočet struktury a diskrétní logaritmy v konečných abelovských p -grupách , Mathematics of Computation sv. 80: 477–500 , DOI 10.1090/s0025-5718-10-202 
  4. Bach, Eric (1990), Explicitní hranice pro testování primálnosti a související problémy , Mathematics of Computation sv. 55 (191): 355–380 , DOI 10.2307/2008811 
  5. LM Adleman, K. Manders, G. Miller: 1977, „O zakořenění v konečných polích“. In: 18. IEEE Symposium on Foundations of Computer Science. p. 175–177.

Literatura

Odkazy