El algoritmo de Tonelli-Shanks (conocido por Shanks como el algoritmo RESSOL) se utiliza en aritmética modular para resolver r en una congruencia de la forma r 2 ≡ n (mod p ), donde p es un primo : es decir, para encontrar una raíz cuadrada de n módulo p .
El algoritmo de Tonelli-Shanks no se puede utilizar para módulos compuestos: encontrar raíces cuadradas módulo números compuestos es un problema computacional equivalente a la factorización de enteros . [ 1 ]
Alberto Tonelli [ 2 ] [ 3 ] desarrolló en 1891 una versión equivalente, aunque ligeramente más redundante, de este algoritmo. La versión que se analiza aquí fue desarrollada independientemente por Daniel Shanks en 1973, quien explicó:
Mi tardanza en conocer estas referencias históricas se debió a que le presté el Volumen 1 de la Historia de Dickson a un amigo y nunca me lo devolvió. [ 4 ]
Según Dickson, [ 3 ] el algoritmo de Tonelli puede tomar raíces cuadradas de x módulo potencias primas p λ aparte de los números primos.
Ideas principales
Dado un valor distinto de ceroy un primo(que siempre será impar), el criterio de Euler nos dice quetiene raíz cuadrada (es decir,es un residuo cuadrático ) si y solo si :
- .
Por el contrario, si un númeroSi no tiene raíz cuadrada (es un no residuo), el criterio de Euler nos dice que:
- .
No es difícil encontrar tal cosa, porque la mitad de los enteros entre 1 yposeen esta propiedad. Por lo tanto, asumimos que tenemos acceso a dicho no residuo.
Al dividir (normalmente) repetidamente por 2, podemos escribircomo, dóndees extraño. Tenga en cuenta que si lo intentamos
- ,
entonces. Si, entonceses una raíz cuadrada de. De lo contrario, para, tenemosysatisfactorio:
- ; y
- es unraíz -ésima de 1 (porque).
Si, dada la elección deypara un caso particularsatisfaciendo lo anterior (dondeno es una raíz cuadrada de), podemos calcular fácilmente otroyparaDe modo que se cumplan las relaciones anteriores, podemos repetir esto hastase convierte en unraíz -ésima de 1, es decir,En ese momentoes una raíz cuadrada de.
Podemos comprobar sies unraíz -ésima de 1 elevándolo al cuadradoveces y comprobar si es 1. Si lo es, entonces no necesitamos hacer nada, ya que la misma elección deyfunciona. Pero si no funciona,debe ser -1 (porque al elevarlo al cuadrado da 1, y solo puede haber dos raíces cuadradas 1 y -1 de 1 módulo).
Para encontrar un nuevo par deypodemos multiplicarpor un factor, por determinar. Entoncesdebe multiplicarse por un factorpara mantenerEntonces, cuandoes -1, necesitamos encontrar un factorde modo quees unraíz -ésima de 1, o equivalentementees un-ésima raíz de -1.
El truco aquí es hacer uso de, el no residuo conocido. El criterio de Euler aplicado aLo que se muestra arriba dice quees un-ésima raíz de -1. Entonces, al elevar al cuadradorepetidamente, tenemos acceso a una secuencia deraíces -ésimas de -1. Podemos seleccionar la correcta para que sirva comoCon un poco de mantenimiento de variables y una compresión de casos trivial, el siguiente algoritmo surge de forma natural.
El algoritmo
Operaciones y comparaciones sobre elementos del grupo multiplicativo de enteros módulo pson implícitamente módulo p .
Entradas :
- p , un primo
- n , un elemento dede tal manera que existan soluciones a la congruencia r 2 = n ; cuando esto es así, decimos que n es un residuo cuadrático módulo p .
Resultados :
- r ental que r 2 = n
Algoritmo :
- Al factorizar potencias de 2, encuentre Q y S tales quecon Q impar
- Buscar una z enque es un no residuo cuadrático
- La mitad de los elementos del conjunto serán no residuos cuadráticos.
- Los candidatos pueden ser evaluados con el criterio de Euler o mediante la búsqueda del símbolo de Jacobi.
- Dejar
- Bucle:
- Si t = 0, devuelve r = 0.
- Si t = 1, devuelve r = R
- De lo contrario, utilice la elevación al cuadrado repetida para encontrar el menor i , 0 < i < M , tal que
- Dejary establecer
Una vez que hayas resuelto la congruencia con r, la segunda solución es. Si el menor i tal queSi M es , entonces no existe solución a la congruencia, es decir, n no es un residuo cuadrático.
Esto es más útil cuando p ≡ 1 (mod 4).
Para números primos tales que p ≡ 3 (mod 4), este problema tiene posibles soluciones.. Si estos se cumplen, son las únicas soluciones. Si no,, n es un no residuo cuadrático y no hay soluciones.
Prueba
Podemos demostrar que al inicio de cada iteración del bucle se cumplen las siguientes invariantes :
Inicialmente:
- (ya que z es un no residuo cuadrático, según el criterio de Euler)
- (ya que n es un residuo cuadrático)
En cada iteración, con M' , c' , t' , R' los nuevos valores reemplazando a M , c , t , R :
- ya que tenemos esopero( i es el valor más pequeño tal que)
Dey la prueba contra t = 1 al comienzo del bucle, vemos que siempre encontraremos un i en 0 < i < M tal que. M es estrictamente menor en cada iteración, y por lo tanto el algoritmo tiene garantizado detenerse. Cuando alcanzamos la condición t = 1 y nos detenemos, el último invariante del bucle implica que R 2 = n .
Orden de t
Alternativamente, podemos expresar los invariantes del bucle utilizando el orden de los elementos:
- como antes
Cada paso del algoritmo mueve t a un subgrupo más pequeño midiendo el orden exacto de t y multiplicándolo por un elemento del mismo orden.
Ejemplo
Resolviendo la congruencia r 2 ≡ 5 (mod 41). 41 es primo como se requiere y 41 ≡ 1 (mod 4). 5 es un residuo cuadrático según el criterio de Euler:(como antes, operaciones enson implícitamente módulo 41).
- entonces,
- Encuentra un valor para z:
- , por lo tanto, 2 es un residuo cuadrático según el criterio de Euler.
- , por lo tanto, 3 es un no residuo cuadrático: conjunto
- Colocar
- Bucle:
- Primera iteración:
- , así que no hemos terminado
- ,entonces
- Segunda iteración:
- , así que todavía no hemos terminado
- entonces
- Tercera iteración:
- y hemos terminado; regresar
- Primera iteración:
En efecto, 28² ≡ 5 (mod 41) y (−28) ² ≡ 13² ≡ 5 (mod 41). Por lo tanto, el algoritmo produce las dos soluciones a nuestra congruencia.
Velocidad del algoritmo
El algoritmo de Tonelli-Shanks requiere (en promedio sobre todas las entradas posibles (residuos cuadráticos y no residuos cuadráticos))
multiplicaciones modulares, dondees el número de dígitos en la representación binaria deyes el número de unos en la representación binaria de. Si el no residuo cuadrático requeridose puede encontrar comprobando si un número tomado al azares un no residuo cuadrático, requiere (en promedio)cálculos del símbolo de Legendre . [ 5 ] El promedio de dos cálculos del símbolo de Legendre se explica de la siguiente manera:es un residuo cuadrático con probabilidad, que es más pequeño quepero, por lo que en promedio necesitaremos comprobar si unes un residuo cuadrático dos veces.
Esto demuestra esencialmente que el algoritmo de Tonelli-Shanks funciona muy bien si el móduloes aleatorio, es decir, si is not particularly large with respect to the number of digits in the binary representation of . As written above, Cipolla's algorithm works better than Tonelli–Shanks if (and only if) . However, if one instead uses Sutherland's algorithm to perform the discrete logarithm computation in the 2-Sylow subgroup of , one may replace with an expression that is asymptotically bounded by .[6] Explicitly, one computes such that and then satisfies (note that is a multiple of 2 because is a quadratic residue).
The algorithm requires us to find a quadratic nonresidue . There is no known deterministic algorithm that runs in polynomial time for finding such a . However, if the generalized Riemann hypothesis is true, there exists a quadratic nonresidue ,[7] making it possible to check every up to that limit and find a suitable within polynomial time. Keep in mind, however, that this is a worst-case scenario; in general, is found in on average 2 trials as stated above.
Uses
The Tonelli–Shanks algorithm can (naturally) be used for any process in which square roots modulo a prime are necessary. For example, it can be used for finding points on elliptic curves. It is also useful for the computations in the Rabin signature algorithm and in the sieving step of the quadratic sieve.
Generalizations
Tonelli–Shanks can be generalized to any cyclic group (instead of ) and to kth roots for arbitrary integer k, in particular to taking the kth root of an element of a finite field.[8]
If many square-roots must be done in the same cyclic group and S is not too large, a table of square-roots of the elements of 2-power order can be prepared in advance and the algorithm simplified and sped up as follows.
- Factor out powers of 2 from p − 1, defining Q and S as: with Q odd.
- Let
- Find from the table such that and set
- return R.
Tonelli's algorithm will work on mod pλ
According to Dickson's "Theory of Numbers"[3]
The Dickson reference shows the following formula for the square root of .
- when , or (s must be 2 for this equation) and such that
- for then
- where
- for then
Noting that and noting that then
To take another example: and
Dickson also attributes the following equation to Tonelli:
- where and ;
Using and using the modulus of the math follows:
First, find the modular square root mod which can be done by the regular Tonelli algorithm for one or the other roots:
- and thus
And applying Tonelli's equation (see above):
Dickson's reference[3] clearly shows that Tonelli's algorithm works on moduli of .
Notes
- ↑Oded Goldreich, Computational complexity: a conceptual perspective, Cambridge University Press, 2008, p. 588.
- ↑Volker Diekert; Manfred Kufleitner; Gerhard Rosenberger; Ulrich Hertrampf (24 May 2016). Discrete Algebraic Methods: Arithmetic, Cryptography, Automata and Groups. De Gruyter. pp. 163–165. ISBN 978-3-11-041632-9.
- 12345Leonard Eugene Dickson (1919). History of the Theory of Numbers. Vol. 1. Washington, Carnegie Institution of Washington. pp. 215–216.
- ↑Daniel Shanks. Five Number-theoretic Algorithms. Proceedings of the Second Manitoba Conference on Numerical Mathematics. Pp. 51–70. 1973.
- ↑Tornaría, Gonzalo (2002). "Square Roots Modulo P". LATIN 2002: Theoretical Informatics. Lecture Notes in Computer Science. Vol. 2286. pp. 430–434. doi:10.1007/3-540-45995-2_38. ISBN 978-3-540-43400-9.
- ↑Sutherland, Andrew V. (2011), "Structure computation and discrete logarithms in finite abelian p-groups", Mathematics of Computation, 80 (273): 477–500, arXiv:0809.3413, doi:10.1090/s0025-5718-10-02356-2, S2CID 13940949
- ↑Bach, Eric (1990), "Explicit bounds for primality testing and related problems", Mathematics of Computation, 55 (191): 355–380, doi:10.2307/2008811, JSTOR 2008811
- ↑Adleman, L. M., K. Manders, and G. Miller: 1977, `On taking roots in finite fields'. In: 18th IEEE Symposium on Foundations of Computer Science. pp. 175-177
- ↑"Accademia nazionale dei Lincei, Rome. Rendiconti, (5), 1, 1892, 116-120."
References
- Ivan Niven ; Herbert S. Zuckerman; Hugh L. Montgomery (1991). Introducción a la teoría de los números (5.ª ed.). Wiley. págs. 110-115 . ISBN 0-471-62546-9.
- Daniel Shanks. Cinco algoritmos de teoría de números. Actas de la Segunda Conferencia de Manitoba sobre Matemáticas Numéricas. Págs. 51–70. 1973.
- Alberto Tonelli, Bemerkung über die Auflösung quadratischer Congruenzen. Nachrichten von der Königlichen Gesellschaft der Wissenschaften und der Georg-Augusts-Universität zu Göttingen . Páginas. 344–346. 1891.
- Gagan Tara Nanda - Matemáticas 115: El algoritmo RESSOL
- Gonzalo Tornaria
- aritmética modular
- Algoritmos de teoría de números