En la teoría computacional de números , el algoritmo de Cipolla es una técnica para resolver una congruencia de la forma
dónde, entonces n es el cuadrado de x , y dondees un primo impar . Aquídenota el campo finito conelementos ;El algoritmo recibe su nombre de Michele Cipolla , un matemático italiano que lo descubrió en 1907.
Además de los módulos primos, el algoritmo de Cipolla también puede calcular raíces cuadradas módulo potencias primas. [ 1 ]
Algoritmo
Entradas:
- , un número primo impar,
- , que es un cuadrado.
Salidas:
- , satisfactorio
El paso 1 es encontrar unde tal manera queno es un cuadrado. No se conoce ningún algoritmo determinista para encontrar tal cosa., pero se puede utilizar el siguiente método de prueba y error . Simplemente elija uny calculando el símbolo de Legendreuno puede ver sisatisface la condición. La probabilidad de que un aleatoriosatisfará es. Conlo suficientemente grande esto es sobre. [ 2 ] Por lo tanto, el número esperado de ensayos antes de encontrar uno adecuadoes aproximadamente 2.
El paso 2 consiste en calcular x mediante el cálculodentro de la extensión de campo. Esta x será la que satisfaga
Si, entoncesTambién se cumple. Y dado que p es impar,. Por lo tanto, siempre que se encuentra una solución x , siempre hay una segunda solución, -x .
Ejemplo
(Nota: Todos los elementos anteriores al paso dos se consideran como un elemento dey todos los elementos del paso dos se consideran elementos de.)
Encuentra todos los x tales que
Antes de aplicar el algoritmo, debe comprobarse quees de hecho un cuadrado enPor lo tanto, el símbolo de Legendredebe ser igual a 1. Esto se puede calcular utilizando el criterio de Euler :Esto confirma que 10 es un cuadrado perfecto y, por lo tanto, se puede aplicar el algoritmo.
- Paso 1: Encuentra un a tal queno es un cuadrado. Como se indicó, esto debe hacerse por ensayo y error. Elija. Entoncesse convierte en 7. El símbolo de Legendretiene que ser −1. Nuevamente, esto se puede calcular utilizando el criterio de Euler:Entonceses una opción adecuada para un .
- Paso 2: Calcularen:
Entonceses una solución, así como. En efecto,
Prueba
La primera parte de la prueba consiste en verificar quees de hecho un campo. En aras de la simplicidad de la notación,se define como. Por supuesto,es un no residuo cuadrático, por lo que no hay raíz cuadrada en. Estepuede considerarse aproximadamente análogo al número complejo i . La aritmética de cuerpos es bastante obvia. La suma se define como
- .
La multiplicación también se define como de costumbre. Teniendo en cuenta quese convierte en
- .
Ahora hay que comprobar las propiedades del campo. Las propiedades de cierre bajo la suma y la multiplicación, asociatividad , conmutatividad y distributividad se ven fácilmente. Esto se debe a que en este caso el campose asemeja un poco al campo de los números complejos (consiendo el análogo de i ). La identidad aditiva es, o más formalmente: Dejar, entonces
- .
La identidad multiplicativa es, o más formalmente:
- .
Lo único que queda porser un campo es la existencia de inversos aditivos y multiplicativos . Es fácil ver que el inverso aditivo dees, que es un elemento de, porque. De hecho, esos son los elementos inversos aditivos de x e y . Para demostrar que cada elemento distinto de cerotiene un inverso multiplicativo, escríbeloy. En otras palabras,
- .
Entonces las dos igualdadesydebe sostenerse. El cálculo de los detalles proporciona expresiones paray, es decir
- ,
- .
Los elementos inversos que se muestran en las expresiones deyexisten, porque todos estos son elementos de. Esto completa la primera parte de la demostración, mostrando quees un campo.
La segunda parte, la central, de la demostración consiste en mostrar que para cada elemento. Por definición,no es un cuadrado enEl criterio de Euler entonces dice que
- .
De este modo. Esto, junto con el pequeño teorema de Fermat (que dice quea pesar de) y el conocimiento de que en campos de característica p la ecuaciónSe mantiene, una relación a veces llamada el sueño del estudiante de primer año , muestra el resultado deseado
- .
La tercera y última parte de la demostración consiste en mostrar que si, entoncesCalcular
- .
Tenga en cuenta que este cálculo tuvo lugar en, así que estoPero con el teorema de Lagrange , que establece que un polinomio no nulo de grado n tiene como máximo n raíces en cualquier cuerpo K , y el conocimiento de quetiene 2 raíces en, estas raíces deben ser todas las raíces en. Se acaba de demostrar queyson raíces deen, así que debe ser que. [ 3 ]
Velocidad
Después de encontrar un valor adecuado de a , el número de operaciones requeridas para el algoritmo esmultiplicaciones,sumas, donde m es el número de dígitos en la representación binaria de p y k es el número de unos en esta representación. Para encontrar a por ensayo y error, el número esperado de cálculos del símbolo de Legendre es 2. Pero uno puede tener suerte en el primer intento y puede necesitar más de 2 intentos. En el campoSe cumplen las dos igualdades siguientes.
dóndeSe conoce de antemano. Este cálculo requiere 4 multiplicaciones y 4 sumas.
dóndeyEsta operación requiere 6 multiplicaciones y 4 sumas.
Suponiendo que(en el caso, el cálculo directoes mucho más rápido) la expresión binaria detienedígitos, de los cuales k son unos. Entonces, para calcular unpoder de, la primera fórmula debe ser utilizadaveces y la segundaveces.
Por ello, el algoritmo de Cipolla es mejor que el algoritmo de Tonelli-Shanks si y solo si, consiendo la máxima potencia de 2 que divide a. [ 4 ]
Módulos de potencia primaria
Según la "Historia de los números" de Dickson, la siguiente fórmula de Cipolla hallará raíces cuadradas módulo potencias de números primos: [ 5 ] [ 6 ]
- dóndey
- dónde,como en el ejemplo de este artículo
Tomando como ejemplo el artículo de la wiki podemos ver que esta fórmula anterior efectivamente toma raíces cuadradas módulo potencias primas.
Como
Ahora resuelve paraa través de:
Ahora crea ely (Véase aquí el código de Mathematica que muestra el cálculo anterior, teniendo en cuenta que se trata de algo parecido a una aritmética modular compleja).
Tal como:
- y
y la ecuación final es:
- ¿Cuál es la respuesta?
Referencias
- ↑ Dickson, Leonard Eugene (1919). Historia de la teoría de los números . Vol. 1. Washington, Carnegie Institution of Washington. pág. 218.
- ↑ R. Crandall, C. Pomerance Números primos: una perspectiva computacional Springer-Verlag, (2001) pág. 157
- ↑ " Algoritmo de M. Baker Cipolla para encontrar raíces cuadradas módulo p " (PDF) . Archivado del original (PDF) el 25 de marzo de 2017. Consultado el 24 de agosto de 2011 .
- ↑ Tornaría, Gonzalo (2002). "Raíces cuadradas módulo P" . LATIN 2002: Informática teórica . Lecture Notes in Computer Science. Vol. 2286. pp. 430–434 . doi : 10.1007/3-540-45995-2_38 . ISBN 978-3-540-43400-9.
- ↑ "Historia de la teoría de los números", volumen 1, por Leonard Eugene Dickson, pág. 218, Chelsea Publishing, 1952 (leer en línea)
- ^ Michelle Cipolla, Rediconto dell'Accademia delle Scienze Fisiche e Matematiche. Nápoles, (3),10,1904, 144-150
Fuentes
- E. Bach , JO Shallit, Teoría algorítmica de números: algoritmos eficientes, MIT Press, (1996)
- aritmética modular
- Algoritmos de teoría de números