El algoritmo Tonelli-Shanks (al que Shanks denomina 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 método 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, pero ligeramente más redundante, de este algoritmo. La versión que aquí se analiza fue desarrollada independientemente por Daniel Shanks en 1973, quien explicó:
Mi tardanza en conocer estas referencias históricas se debió a que le había prestado 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 primos.
Ideas centrales
Dado un número distinto de cero y un número primo (que siempre será impar), el criterio de Euler nos dice que tiene raíz cuadrada (es decir, es un residuo cuadrático ) si y solo si:
- .
Por el contrario, si un número no tiene raíz cuadrada (no es residuo), el criterio de Euler nos dice que:
- .
No es difícil encontrar tal , porque la mitad de los números enteros entre 1 y tienen esta propiedad. Por lo tanto, suponemos que tenemos acceso a dicho residuo no válido.
Al dividir (normalmente) por 2 repetidamente, podemos escribir como , donde es impar. Tenga en cuenta que si intentamos
- ,
entonces . Si , entonces es una raíz cuadrada de . De lo contrario, para , tenemos y que satisface:
- ; y
- es una raíz -ésima de 1 (porque ).
Si, dada una elección de y para un particular que satisface lo anterior (donde no es una raíz cuadrada de ), podemos calcular fácilmente otro y para tal que se cumplan las relaciones anteriores, entonces podemos repetir esto hasta que se convierta en una raíz -ésima de 1, es decir, . En ese punto es una raíz cuadrada de .
Podemos comprobar si es una raíz cuadrada de 1 elevándola al cuadrado varias veces y comprobar si es 1. Si lo es, no necesitamos hacer nada, ya que funciona la misma elección de y . Pero si no lo es, debe ser -1 (porque elevándola al cuadrado da 1, y solo puede haber dos raíces cuadradas 1 y -1 de 1 módulo ).
Para encontrar un nuevo par de y , podemos multiplicar por un factor , que se determinará. Luego, se debe multiplicar por un factor para mantener . Por lo tanto, cuando es -1, debemos encontrar un factor que sea una raíz -ésima de 1, o equivalentemente, sea una raíz -ésima de -1.
El truco aquí es hacer uso de , el residuo no conocido. El criterio de Euler aplicado a lo que se muestra arriba dice que es una raíz -ésima de -1. Por lo tanto, al elevar al cuadrado repetidamente, tenemos acceso a una secuencia de raíz -ésima de -1. Podemos seleccionar la correcta para que sirva como . Con un poco de mantenimiento de variables y compresión de casos triviales, el algoritmo siguiente surge de manera natural.
El algoritmo
Las operaciones y comparaciones sobre elementos del grupo multiplicativo de números enteros módulo p son implícitamente mod p .
Entradas :
- p , un primo
- n , un elemento de tal que existen soluciones para la congruencia r 2 = n ; cuando esto es así decimos que n es un residuo cuadrático mod p .
Salidas :
- r en tal que r 2 = n
Algoritmo :
- Al factorizar potencias de 2, encuentre Q y S tales que con Q impar
- Búsqueda de una z en la que haya un residuo cuadrático no válido
- Dejar
- Bucle:
- Si t = 0, devuelve r = 0
- Si t = 1, devuelve r = R
- De lo contrario, utilice el cuadrado repetido para encontrar el menor i , 0 < i < M , tal que
- Sea , y establezca
Una vez que hayas resuelto la congruencia con r, la segunda solución es . Si el menor i tal que es M , entonces no existe solución para la congruencia, es decir, n no es un residuo cuadrático.
Esto es más útil cuando p ≡ 1 (mod 4).
Para primos tales que p ≡ 3 (mod 4), este problema tiene posibles soluciones . Si satisfacen , son las únicas soluciones. Si no, , n es un residuo cuadrático no residual y no hay soluciones.
Prueba
Podemos demostrar que al comienzo de cada iteración del bucle se cumplen las siguientes invariantes del bucle :
Inicialmente:
- (ya que z es un residuo cuadrático no residual, 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 reemplazan a M , c , t , R :
- ya que tenemos eso pero ( i es el menor valor tal que )
A partir de 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, se garantiza que el algoritmo se detendrá. Cuando alcanzamos la condición t = 1 y nos detenemos, el último invariante del bucle implica que R 2 = n .
Orden dea
Podemos expresar alternativamente 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 por el criterio de Euler: (como antes, las operaciones en son implícitamente mod 41).
- entonces ,
- Encuentra un valor para z:
- , por lo que 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; volvamos
De hecho, 28 2 ≡ 5 (mod 41) y (−28) 2 ≡ 13 2 ≡ 5 (mod 41). Por lo tanto, el algoritmo arroja las dos soluciones de 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, donde es el número de dígitos en la representación binaria de y es el número de unos en la representación binaria de . Si el residuo cuadrático no requerido se debe encontrar comprobando si un número tomado al azar es un residuo cuadrático no, 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 menor que pero , por lo que en promedio necesitaremos comprobar si a es un residuo cuadrático dos veces.
Esto demuestra esencialmente que el algoritmo de Tonelli-Shanks funciona muy bien si el módulo es aleatorio, es decir, si no es particularmente grande con respecto al número de dígitos en la representación binaria de . Como se escribió anteriormente, el algoritmo de Cipolla funciona mejor que Tonelli-Shanks si (y solo si) . Sin embargo, si en cambio se utiliza el algoritmo de Sutherland para realizar el cálculo del logaritmo discreto en el subgrupo 2-Sylow de , se puede reemplazar con una expresión que esté asintóticamente limitada por . [6] Explícitamente, se calcula de modo que y luego satisface (nótese que es un múltiplo de 2 porque es un residuo cuadrático).
El algoritmo requiere que encontremos un residuo no cuadrático . No se conoce ningún algoritmo determinista que se ejecute en tiempo polinomial para encontrar dicho residuo . Sin embargo, si la hipótesis generalizada de Riemann es verdadera, existe un residuo no cuadrático , [7] lo que hace posible verificar cada hasta ese límite y encontrar un adecuado dentro del tiempo polinomial . Sin embargo, tenga en cuenta que este es el peor escenario posible; en general, se encuentra en un promedio de 2 ensayos como se indicó anteriormente.
Usos
El algoritmo de Tonelli-Shanks puede utilizarse (naturalmente) para cualquier proceso en el que sean necesarias raíces cuadradas módulo primo. Por ejemplo, puede utilizarse para encontrar puntos en curvas elípticas . También es útil para los cálculos en el criptosistema de Rabin y en el paso de cribado del tamiz cuadrático .
Generalizaciones
El método de Tonelli-Shanks se puede generalizar a cualquier grupo cíclico (en lugar de ) y a las raíces k para cualquier entero k , en particular para tomar la raíz k de un elemento de un cuerpo finito . [8]
Si se deben realizar muchas raíces cuadradas en el mismo grupo cíclico y S no es demasiado grande, se puede preparar de antemano una tabla de raíces cuadradas de los elementos de orden 2-potencia y simplificar y acelerar el algoritmo de la siguiente manera.
- Factorizar potencias de 2 de p − 1, definiendo Q y S como: con Q impar.
- Dejar
- Encuentra de la tabla tal que y establece
- devolver R .
El algoritmo de Tonelli funcionará en mod p^k
Según la "Teoría de los números" de Dickson [3]
A. Tonelli [9] dio una fórmula explícita para las raíces de [3]
La referencia de Dickson muestra la siguiente fórmula para la raíz cuadrada de .
- cuando , o (s debe ser 2 para esta ecuación) y tal que
- Para entonces
- dónde
Tomando nota de eso y tomando nota de eso entonces
Para tomar otro ejemplo: y
Dickson también atribuye la siguiente ecuación a Tonelli:
- donde y ;
Usando y empleando el módulo de la matemática se sigue:
Primero, encuentre la raíz cuadrada modular mod , lo que se puede hacer mediante el algoritmo de Tonelli regular:
- y por lo tanto
Y aplicando la ecuación de Tonelli (ver arriba):
La referencia de Dickson [3] muestra claramente que el algoritmo de Tonelli funciona con módulos de .
Notas
- ^ Oded Goldreich, Complejidad computacional: una perspectiva conceptual , Cambridge University Press, 2008, pág. 588.
- ^ Volker Diekert; Manfred Kufleitner; Gerhard Rosenberger; Ulrich Hertrampf (24 de mayo de 2016). Métodos algebraicos discretos: aritmética, criptografía, autómatas y grupos. De Gruyter. págs. 163-165. ISBN 978-3-11-041632-9.
- ^ abcde Leonard Eugene Dickson (1919). Historia de la teoría de los números. Vol. 1. Washington, Carnegie Institution of Washington. págs. 215–216.
- ^ 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.
- ^ Gonzalo Tornaria - Raíces cuadradas módulo p, página 2 https://doi.org/10.1007%2F3-540-45995-2_38
- ^ Sutherland, Andrew V. (2011), "Cálculo de estructuras y logaritmos discretos en p-grupos abelianos finitos", Matemáticas de la computación , 80 (273): 477–500, arXiv : 0809.3413 , doi :10.1090/s0025-5718-10-02356-2, S2CID 13940949
- ^ Bach, Eric (1990), "Límites explícitos para pruebas de primalidad y problemas relacionados", Mathematics of Computation , 55 (191): 355–380, doi : 10.2307/2008811 , JSTOR 2008811
- ^ Adleman, LM, K. Manders y G. Miller: 1977, «Sobre la toma de raíces en campos finitos». En: 18.º Simposio IEEE sobre Fundamentos de la Ciencia de la Computación, págs. 175-177
- ^ "Accademia nazionale dei Lincei, Roma. Rediconti, (5), 1, 1892, 116-120".
Referencias
- Ivan Niven; Herbert S. Zuckerman; Hugh L. Montgomery (1991). Introducción a la teoría de números (quinta edición). Wiley. Págs. 110-115. ISBN 0-471-62546-9.
- Daniel Shanks. Cinco algoritmos teóricos 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. [1]
- Gagan Tara Nanda - Matemáticas 115: El algoritmo RESSOL [2]
- Gonzalo Tornaria [3]