Articulo de referencia

El algoritmo de Cipolla

En la teoría computacional de números , el algoritmo de Cipolla es una técnica para resolver una congruencia de la forma incógnita 2 ≡ norte ( mod pag ) , {\displaystyle x^{2}\e...

En la teoría computacional de números , el algoritmo de Cipolla es una técnica para resolver una congruencia de la forma

incógnita2norte(modpag),{\displaystyle x^{2}\equiv n{\pmod {p}},}

dóndeincógnita,norteFpag{\displaystyle x,n\in \mathbf {F} _{p}}, entonces n es el cuadrado de x , y dondepag{\displaystyle p}es un primo impar . AquíFpag{\displaystyle \mathbf {F} _{p}}denota el campo finito conpag{\displaystyle p}elementos ;{0,1,,pag1}{\displaystyle \{0,1,\dots ,p-1\}}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:

  • pag{\displaystyle p}, un número primo impar,
  • norteFpag{\displaystyle n\in \mathbf {F} _{p}}, que es un cuadrado.

Salidas:

  • incógnitaFpag{\displaystyle x\in \mathbf {F} _{p}}, satisfactorioincógnita2=norte.{\displaystyle x^{2}=n.}

El paso 1 es encontrar unaFpag{\displaystyle a\in \mathbf {F} _{p}}de tal manera quea2norte{\displaystyle a^{2}-n}no es un cuadrado. No se conoce ningún algoritmo determinista para encontrar tal cosa.a{\displaystyle a}, pero se puede utilizar el siguiente método de prueba y error . Simplemente elija una{\displaystyle a}y calculando el símbolo de Legendre(a2nortepag){\displaystyle \left({\frac {a^{2}-n}{p}}\right)}uno puede ver sia{\displaystyle a}satisface la condición. La probabilidad de que un aleatorioa{\displaystyle a}satisfará es(pag1)/2pag{\displaystyle (p-1)/2p}. Conpag{\displaystyle p}lo suficientemente grande esto es sobre1/2{\displaystyle 1/2}. [ 2 ] Por lo tanto, el número esperado de ensayos antes de encontrar uno adecuadoa{\displaystyle a}es aproximadamente 2.

El paso 2 consiste en calcular x mediante el cálculoincógnita=(a+a2norte)(pag+1)/2{\displaystyle x=\left(a+{\sqrt {a^{2}-n}}\right)^{(p+1)/2}}dentro de la extensión de campoFpag2=Fpag(a2norte){\displaystyle \mathbf {F} _{p^{2}}=\mathbf {F} _{p}({\sqrt {a^{2}-n}})}. Esta x será la que satisfagaincógnita2=norte.{\displaystyle x^{2}=n.}

Siincógnita2=norte{\displaystyle x^{2}=n}, entonces(incógnita)2=norte{\displaystyle (-x)^{2}=n}También se cumple. Y dado que p es impar,incógnitaincógnita{\displaystyle x\neq -x}. 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 deF13{\displaystyle \mathbf {F} _{13}}y todos los elementos del paso dos se consideran elementos deF132{\displaystyle \mathbf {F} _{13^{2}}}.)

Encuentra todos los x tales queincógnita2=10.{\displaystyle x^{2}=10.}

Antes de aplicar el algoritmo, debe comprobarse que10{\displaystyle 10}es de hecho un cuadrado enF13{\displaystyle \mathbf {F} _{13}}Por lo tanto, el símbolo de Legendre(10|13){\displaystyle (10|13)}debe ser igual a 1. Esto se puede calcular utilizando el criterio de Euler :(10|13)1061(mod13).{\textstyle (10|13)\equiv 10^{6}\equiv 1{\pmod {13}}.}Esto confirma que 10 es un cuadrado perfecto y, por lo tanto, se puede aplicar el algoritmo.

  • Paso 1: Encuentra un a tal quea2norte{\displaystyle a^{2}-n}no es un cuadrado. Como se indicó, esto debe hacerse por ensayo y error. Elijaa=2{\displaystyle a=2}. Entoncesa2norte{\displaystyle a^{2}-n}se convierte en 7. El símbolo de Legendre(7|13){\displaystyle (7|13)}tiene que ser −1. Nuevamente, esto se puede calcular utilizando el criterio de Euler:76=343252251(mod13).{\textstyle 7^{6}=343^{2}\equiv 5^{2}\equiv 25\equiv -1{\pmod {13}}.}Entoncesa=2{\displaystyle a=2}es una opción adecuada para un .
  • Paso 2: Calcularincógnita=(a+a2norte)(pag+1)/2=(2+6)7{\displaystyle x=\left(a+{\sqrt {a^{2}-n}}\right)^{(p+1)/2}=\left(2+{\sqrt {-6}}\right)^{7}}enF13(6){\displaystyle \mathbf {F} _{13}({\sqrt {-6}})}:
(2+6)2=4+466=2+46{\displaystyle \left(2+{\sqrt {-6}}\right)^{2}=4+4{\sqrt {-6}}-6=-2+4{\sqrt {-6}}}
(2+6)4=(2+46)2=136{\displaystyle \left(2+{\sqrt {-6}}\right)^{4}=\left(-2+4{\sqrt {-6}}\right)^{2}=-1-3{\sqrt {-6}}}
(2+6)6=(2+46)(136)=9+26{\displaystyle \left(2+{\sqrt {-6}}\right)^{6}=\left(-2+4{\sqrt {-6}}\right)\left(-1-3{\sqrt {-6}}\right)=9+2{\sqrt {-6}}}
(2+6)7=(9+26)(2+6)=6{\displaystyle \left(2+{\sqrt {-6}}\right)^{7}=\left(9+2{\sqrt {-6}}\right)\left(2+{\sqrt {-6}}\right)=6}

Entoncesincógnita=6{\displaystyle x=6}es una solución, así comoincógnita=6{\displaystyle x=-6}. En efecto,6210(mod13).{\textstyle 6^{2}\equiv 10{\pmod {13}}.}

Prueba

La primera parte de la prueba consiste en verificar queFpag2=Fpag(a2norte)={incógnita+ya2norte:incógnita,yFpag}{\displaystyle \mathbf {F} _{p^{2}}=\mathbf {F} _{p}({\sqrt {a^{2}-n}})=\{x+y{\sqrt {a^{2}-n}}:x,y\in \mathbf {F} _{p}\}}es de hecho un campo. En aras de la simplicidad de la notación,ω{\displaystyle \omega }se define comoa2norte{\displaystyle {\sqrt {a^{2}-n}}}. Por supuesto,a2norte{\displaystyle a^{2}-n}es un no residuo cuadrático, por lo que no hay raíz cuadrada enFpag{\displaystyle \mathbf {F} _{p}}. Esteω{\displaystyle \omega }puede considerarse aproximadamente análogo al número complejo i . La aritmética de cuerpos es bastante obvia. La suma se define como

(incógnita1+y1ω)+(incógnita2+y2ω)=(incógnita1+incógnita2)+(y1+y2)ω{\displaystyle \left(x_{1}+y_{1}\omega \right)+\left(x_{2}+y_{2}\omega \right)=\left(x_{1}+x_{2}\right)+\left(y_{1}+y_{2}\right)\omega }.

La multiplicación también se define como de costumbre. Teniendo en cuenta queω2=a2norte{\displaystyle \omega ^{2}=a^{2}-n}se convierte en

(incógnita1+y1ω)(incógnita2+y2ω)=incógnita1incógnita2+incógnita1y2ω+y1incógnita2ω+y1y2ω2=(incógnita1incógnita2+y1y2(a2norte))+(incógnita1y2+y1incógnita2)ω{\displaystyle \left(x_{1}+y_{1}\omega \right)\left(x_{2}+y_{2}\omega \right)=x_{1}x_{2}+x_{1}y_{2}\omega +y_{1}x_{2}\omega +y_{1}y_{2}\omega ^{2}=\left(x_{1}x_{2}+y_{1}y_{2}\left(a^{2}-n\right)\right)+\left(x_{1}y_{2}+y_{1}x_{2}\right)\omega }.

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 campoFpag2{\displaystyle \mathbf {F} _{p^{2}}}se asemeja un poco al campo de los números complejos (conω{\displaystyle \omega }siendo el análogo de i ). La identidad aditiva es0{\displaystyle 0}, o más formalmente0+0ω{\displaystyle 0+0\omega }: DejarαFpag2{\displaystyle \alpha \in \mathbf {F} _{p^{2}}}, entonces

α+0=(incógnita+yω)+(0+0ω)=(incógnita+0)+(y+0)ω=incógnita+yω=α{\displaystyle \alpha +0=(x+y\omega )+(0+0\omega )=(x+0)+(y+0)\omega =x+y\omega =\alpha }.

La identidad multiplicativa es1{\displaystyle 1}, o más formalmente1+0ω{\displaystyle 1+0\omega }:

α1=(incógnita+yω)(1+0ω)=(incógnita1+0y(a2norte))+(incógnita0+1y)ω=incógnita+yω=α{\displaystyle \alpha \cdot 1=(x+y\omega )(1+0\omega )=\left(x\cdot 1+0\cdot y\left(a^{2}-n\right)\right)+(x\cdot 0+1\cdot y)\omega =x+y\omega =\alpha }.

Lo único que queda porFpag2{\displaystyle \mathbf {F} _{p^{2}}}ser un campo es la existencia de inversos aditivos y multiplicativos . Es fácil ver que el inverso aditivo deincógnita+yω{\displaystyle x+y\omega }esincógnitayω{\displaystyle -x-y\omega }, que es un elemento deFpag2{\displaystyle \mathbf {F} _{p^{2}}}, porqueincógnita,yFpag{\displaystyle -x,-y\in \mathbf {F} _{p}}. De hecho, esos son los elementos inversos aditivos de x e y . Para demostrar que cada elemento distinto de ceroα{\displaystyle \alpha }tiene un inverso multiplicativo, escríbeloα=incógnita1+y1ω{\displaystyle \alpha =x_{1}+y_{1}\omega }yα1=incógnita2+y2ω{\displaystyle \alpha ^{-1}=x_{2}+y_{2}\omega }. En otras palabras,

(incógnita1+y1ω)(incógnita2+y2ω)=(incógnita1incógnita2+y1y2(a2norte))+(incógnita1y2+y1incógnita2)ω=1{\displaystyle (x_{1}+y_{1}\omega )(x_{2}+y_{2}\omega )=\left(x_{1}x_{2}+y_{1}y_{2}\left(a^{2}-n\right)\right)+\left(x_{1}y_{2}+y_{1}x_{2}\right)\omega =1}.

Entonces las dos igualdadesincógnita1incógnita2+y1y2(a2norte)=1{\displaystyle x_{1}x_{2}+y_{1}y_{2}(a^{2}-n)=1}yincógnita1y2+y1incógnita2=0{\displaystyle x_{1}y_{2}+y_{1}x_{2}=0}debe sostenerse. El cálculo de los detalles proporciona expresiones paraincógnita2{\displaystyle x_{2}}yy2{\displaystyle y_{2}}, es decir

incógnita2=y11incógnita1(y1(a2norte)incógnita12y11)1{\displaystyle x_{2}=-y_{1}^{-1}x_{1}\left(y_{1}\left(a^{2}-n\right)-x_{1}^{2}y_{1}^{-1}\right)^{-1}},
y2=(y1(a2norte)incógnita12y11)1{\displaystyle y_{2}=\left(y_{1}\left(a^{2}-n\right)-x_{1}^{2}y_{1}^{-1}\right)^{-1}}.

Los elementos inversos que se muestran en las expresiones deincógnita2{\displaystyle x_{2}}yy2{\displaystyle y_{2}}existen, porque todos estos son elementos deFpag{\displaystyle \mathbf {F} _{p}}. Esto completa la primera parte de la demostración, mostrando queFpag2{\displaystyle \mathbf {F} _{p^{2}}}es un campo.

La segunda parte, la central, de la demostración consiste en mostrar que para cada elementoincógnita+yωFpag2:(incógnita+yω)pag=incógnitayω{\displaystyle x+y\omega \in \mathbf {F} _{p^{2}}:(x+y\omega )^{p}=x-y\omega }. Por definición,ω2=a2norte{\displaystyle \omega ^{2}=a^{2}-n}no es un cuadrado enFpag{\displaystyle \mathbf {F} _{p}}El criterio de Euler entonces dice que

ωpag1=(ω2)pag12=1{\displaystyle \omega ^{p-1}=\left(\omega ^{2}\right)^{\frac {p-1}{2}}=-1}.

De este modoωpag=ω{\displaystyle \omega ^{p}=-\omega }. Esto, junto con el pequeño teorema de Fermat (que dice queincógnitapag=incógnita{\displaystyle x^{p}=x}a pesar deincógnitaFpag{\displaystyle x\in \mathbf {F} _{p}}) y el conocimiento de que en campos de característica p la ecuación(a+b)pag=apag+bpag{\displaystyle \left(a+b\right)^{p}=a^{p}+b^{p}}Se mantiene, una relación a veces llamada el sueño del estudiante de primer año , muestra el resultado deseado

(incógnita+yω)pag=incógnitapag+ypagωpag=incógnitayω{\displaystyle (x+y\omega )^{p}=x^{p}+y^{p}\omega ^{p}=x-y\omega }.

La tercera y última parte de la demostración consiste en mostrar que siincógnita0=(a+ω)pag+12Fpag2{\displaystyle x_{0}=\left(a+\omega \right)^{\frac {p+1}{2}}\in \mathbf {F} _{p^{2}}}, entoncesincógnita02=norteFpag{\displaystyle x_{0}^{2}=n\in \mathbf {F} _{p}}Calcular ​

incógnita02=(a+ω)pag+1=(a+ω)(a+ω)pag=(a+ω)(aω)=a2ω2=a2(a2norte)=norte{\displaystyle x_{0}^{2}=\left(a+\omega \right)^{p+1}=(a+\omega )(a+\omega )^{p}=(a+\omega )(a-\omega )=a^{2}-\omega ^{2}=a^{2}-\left(a^{2}-n\right)=n}.

Tenga en cuenta que este cálculo tuvo lugar enFpag2{\displaystyle \mathbf {F} _{p^{2}}}, así que estoincógnita0Fpag2{\displaystyle x_{0}\in \mathbf {F} _{p^{2}}}Pero 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 queincógnita2norte{\displaystyle x^{2}-n}tiene 2 raíces enFpag{\displaystyle \mathbf {F} _{p}}, estas raíces deben ser todas las raíces enFpag2{\displaystyle \mathbf {F} _{p^{2}}}. Se acaba de demostrar queincógnita0{\displaystyle x_{0}}yincógnita0{\displaystyle -x_{0}}son raíces deincógnita2norte{\displaystyle x^{2}-n}enFpag2{\displaystyle \mathbf {F} _{p^{2}}}, así que debe ser queincógnita0,incógnita0Fpag{\displaystyle x_{0},-x_{0}\in \mathbf {F} _{p}}. [ 3 ]

Velocidad

Después de encontrar un valor adecuado de a , el número de operaciones requeridas para el algoritmo es4metro+2k4{\displaystyle 4m+2k-4}multiplicaciones,4metro2{\displaystyle 4m-2}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 campoFpag2{\displaystyle \mathbf {F} _{p^{2}}}Se cumplen las dos igualdades siguientes.

(incógnita+yω)2=(incógnita2+y2ω2)+((incógnita+y)2incógnita2y2)ω,{\displaystyle (x+y\omega )^{2}=\left(x^{2}+y^{2}\omega ^{2}\right)+\left(\left(x+y\right)^{2}-x^{2}-y^{2}\right)\omega ,}

dóndeω2=a2norte{\displaystyle \omega ^{2}=a^{2}-n}Se conoce de antemano. Este cálculo requiere 4 multiplicaciones y 4 sumas.

(incógnita+yω)2(a+ω)=(ad2b(incógnita+d))+(d2by)ω,{\displaystyle \left(x+y\omega \right)^{2}\left(a+\omega \right)=\left(ad^{2}-b\left(x+d\right)\right)+\left(d^{2}-by\right)\omega ,}

dónded=(incógnita+ya){\displaystyle d=(x+ya)}yb=nortey{\displaystyle b=ny}Esta operación requiere 6 multiplicaciones y 4 sumas.

Suponiendo quepag1(mod4),{\displaystyle p\equiv 1{\pmod {4}},}(en el casopag3(mod4){\displaystyle p\equiv 3{\pmod {4}}}, el cálculo directoincógnita±nortepag+14{\displaystyle x\equiv \pm n^{\frac {p+1}{4}}}es mucho más rápido) la expresión binaria de(pag+1)/2{\displaystyle (p+1)/2}tienemetro1{\displaystyle m-1}dígitos, de los cuales k son unos. Entonces, para calcular un(pag+1)/2{\displaystyle (p+1)/2}poder de(a+ω){\displaystyle \left(a+\omega \right)}, la primera fórmula debe ser utilizadanortek1{\displaystyle n-k-1}veces y la segundak1{\displaystyle k-1}veces.

Por ello, el algoritmo de Cipolla es mejor que el algoritmo de Tonelli-Shanks si y solo siS(S1)>8metro+20{\displaystyle S(S-1)>8m+20}, con2S{\displaystyle 2^{S}}siendo la máxima potencia de 2 que divide apag1{\displaystyle p-1}. [ 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 ]

21qt((k+k2q)s+(kk2q)s)modpagλ{\displaystyle 2^{-1}q^{t}((k+{\sqrt {k^{2}-q}})^{s}+(k-{\sqrt {k^{2}-q}})^{s}){\bmod {p^{\lambda }}}}
dóndet=(pagλ2pagλ1+1)/2{\displaystyle t=(p^{\lambda }-2p^{\lambda -1}+1)/2}ys=pagλ1(pag+1)/2{\displaystyle s=p^{\lambda -1}(p+1)/2}
dóndeq=10{\displaystyle q=10},k=2{\displaystyle k=2}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

10mod1331046{\displaystyle {\sqrt {10}}{\bmod {13^{3}}}\equiv 1046}

Ahora resuelve para21qt{\displaystyle 2^{-1}q^{t}}a través de:

2110(1332132+1)/2mod1331086{\displaystyle 2^{-1}10^{(13^{3}-2\cdot 13^{2}+1)/2}{\bmod {13^{3}}}\equiv 1086}

Ahora crea el(2+2210)1327mod133{\displaystyle (2+{\sqrt {2^{2}-10}})^{13^{2}\cdot 7}{\bmod {13^{3}}}}y(22210)1327mod133{\displaystyle (2-{\sqrt {2^{2}-10}})^{13^{2}\cdot 7}{\bmod {13^{3}}}} (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:

(2+2210)1327mod1331540{\displaystyle (2+{\sqrt {2^{2}-10}})^{13^{2}\cdot 7}{\bmod {13^{3}}}\equiv 1540} y(22210)1327mod1331540{\displaystyle (2-{\sqrt {2^{2}-10}})^{13^{2}\cdot 7}{\bmod {13^{3}}}\equiv 1540}

y la ecuación final es:

1086(1540+1540)mod1331046{\displaystyle 1086(1540+1540){\bmod {13^{3}}}\equiv 1046} ¿Cuál es la respuesta?

Referencias

  1. Dickson, Leonard Eugene (1919). Historia de la teoría de los números . Vol.  1. Washington, Carnegie Institution of Washington. pág.  218.
  2. R. Crandall, C. Pomerance Números primos: una perspectiva computacional Springer-Verlag, (2001) pág. 157
  3. ↑ " 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 .
  4. 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.
  5. "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)
  6. ^ 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)