Articulo de referencia

El algoritmo p + 1 de Williams

En teoría computacional de números , el algoritmo p + 1 de Williams es un algoritmo de factorización de enteros , perteneciente a la familia de algoritmos de factorización d...

En teoría computacional de números , el algoritmo p + 1 de Williams   es un algoritmo de factorización de enteros , perteneciente a la familia de algoritmos de factorización de grupos algebraicos . Fue inventado por Hugh C. Williams en 1982.

Funciona bien si el número N que se va a factorizar contiene uno o más factores primos p tales que p + 1 sea suave , es decir, p + 1 contiene solo factores pequeños. Utiliza secuencias de Lucas para realizar la exponenciación en un campo cuadrático .

Es análogo al algoritmo p 1 de Pollard   . De hecho, también puede encontrar p si p 1 es suave, en cuyo caso degenera en una versión lenta del algoritmo de Pollard.  

Algoritmo

Elija un número entero A mayor que 2 que caracterice la secuencia de Lucas :

V0=2,V1=A,Vj=AVj1Vj2{\displaystyle V_{0}=2,V_{1}=A,V_{j}=AV_{j-1}-V_{j-2}}

donde todas las operaciones se realizan módulo N.

Entonces cualquier primo impar p dividemcd(norte,VMETRO2){\displaystyle \gcd(N,V_{M}-2)}siempre que M sea un múltiplo depag(D/pag){\displaystyle p-(D/p)}, dónde D=A24{\displaystyle D=A^{2}-4}y(D/pag){\displaystyle (D/p)}es el símbolo jacobino .

Para diferentes valores de M calculamosmcd(norte,VMETRO2){\displaystyle \gcd(N,V_{M}-2)}y cuando el resultado no es igual a 1 o a N , hemos encontrado un factor no trivial de N.

Para encontrar un p con un p + 1 suave, requerimos que(D/pag)=1{\displaystyle (D/p)=-1}, es decir, D debería ser un no residuo cuadrático módulo p . Pero como no conocemos p de antemano, puede ser necesario probar más de un valor de A antes de encontrar una solución. Si(D/pag)=+1{\displaystyle (D/p)=+1}Este algoritmo degenera en una versión lenta del algoritmo p 1 de Pollard   . Esto ocurre el 50% de las veces.

Cálculo de términos de Lucas

Los valores de M utilizados son factoriales sucesivos, yVMETRO{\displaystyle V_{M}}es el valor M de la secuencia caracterizada porVMETRO1{\displaystyle V_{M-1}}Para hallar el elemento M -ésimo V de la secuencia caracterizada por B , procedemos de manera similar a la exponenciación de izquierda a derecha:

x := B y := (B ^ 2 − 2) mod N para cada bit de M a la derecha del bit más significativo hacer si el bit es 1 entonces x := (x × y − B) mod N y := (y ^ 2 − 2) mod N demás y := (x × y − B) mod N x := (x ^ 2 − 2) mod N V := x

Continuación

Existe una extensión de "segunda etapa" al algoritmo p+1 de William, muy similar a la que existe para p-1 y Lenstra ECM. Después de los pasos anteriores (que ahora se denominan "etapa 1"), una continuación permite encontrar p+1 con una condición más relajada: en lugar de requerir que p  +  1 tenga todos sus factores menores que B , requerimos que tenga todos sus factores menos uno menores que algún B1 ( igual que el B regular ), y el factor restante menor que algún B2B1 . [ 1 ] [ 2 ]

Ejemplo

Con N =112729 y A =5, valores sucesivos deVMETRO{\displaystyle V_{M}}son:

V 1 de seq(5) = V 1! de seq(5) = 5
V 2 de seq(5) = V 2! de seq(5) = 23
V 3 de seq(23) = V 3! de seq(5) = 12098
V 4 de seq(12098) = V 4! de seq(5) = 87680
V 5 de seq(87680) = V 5! de seq(5) = 53242
V 6 de seq(53242) = V 6! de seq(5) = 27666
V 7 de seq(27666) = V 7! de seq(5) = 110229.

En este punto, mcd(110229-2,112729) = 139, por lo que 139 es un factor no trivial de 112729. Nótese que p+1 = 140 = 2 2 × 5 × 7. El número 7! es el factorial más pequeño que es múltiplo de 140, por lo que el factor adecuado 139 se encuentra en este paso.

Utilizando otro valor inicial, por ejemplo A = 9, obtenemos:

V 1 de seq(9) = V 1! de seq(9) = 9
V 2 de seq(9) = V 2! de seq(9) = 79
V 3 de seq(79) = V 3! de seq(9) = 41886
V 4 de seq(41886) = V 4! de seq(9) = 79378
V 5 de seq(79378) = V 5! de seq(9) = 1934
V 6 de seq(1934) = V 6! de seq(9) = 10582
V 7 de seq(10582) = V 7! de seq(9) = 84241
V 8 de seq(84241) = V 8! de seq(9) = 93973
V 9 de seq(93973) = V 9! de seq(9) = 91645.

En este punto, mcd(91645-2,112729) = 811, por lo que 811 es un factor no trivial de 112729. Nótese que p−1 = 810 = 2 × 5 × 3 4. El número 9! es el factorial más pequeño que es múltiplo de 810, por lo que el factor adecuado 811 se encuentra en este paso. El factor 139 no se encuentra esta vez porque p−1 = 138 = 2 × 3 × 23, que no es divisor de 9!.

Como se puede ver en estos ejemplos, no sabemos de antemano si el primo que se encontrará tiene un p+1 o p−1 suave.

Generalización

Basándose en los algoritmos de factorización p − 1 de Pollard y p +1 de Williams , Eric Bach y Jeffrey Shallit desarrollaron técnicas para factorizar n de manera eficiente siempre que tenga un factor primo p tal que cualquier polinomio ciclotómico k Φ k ( p ) sea suave . [ 3 ] Los primeros polinomios ciclotómicos están dados por la secuencia Φ 1 ( p ) = p −1, Φ 2 ( p ) = p +1, Φ 3 ( p ) = p 2 + p +1 y Φ 4 ( p ) = p 2 +1.

Referencias

  1. Montgomery, PL Aceleración de los métodos de factorización de Pollard y de curvas elípticas. Mathematics of Computation 48, 177 (1987), 243–264.
  2. Montgomery, Peter L.; Kruppa, Alexander (2008). "Algoritmos de factorización mejorados de la etapa 2 a P ± 1" (PDF) . Algorithmic Number Theory . 5011 : 180–195 . doi : 10.1007/978-3-540-79456-1_12 .
  3. Bach, Eric; Shallit, Jeffrey (1989). "Factoring with Cyclotomic Polynomials" (PDF) . Mathematics of Computation . 52 (185). American Mathematical Society : 201–219 . doi : 10.1090/S0025-5718-1989-0947467-1 . JSTOR 2008664 . 
  • Williams, HC (1982), "Un método p+1 de factorización", Mathematics of Computation , 39 (159): 225–234 , doi : 10.2307/2007633 , JSTOR 2007633 , MR 0658227  
  • Método de factorización P + 1 en Prime Wiki