El método de criba de campo numérico especial ( en inglés special number field sieve , SNFS) es un método para factorizar enteros de un tipo especial. De él se derivó el método general de tamiz de campos numéricos , que es el algoritmo de factorización más eficiente para números enteros grandes . El método es eficaz para números enteros de la forma r e ± s , donde r N s Z, r y s son pequeños (por ejemplo , números de Mersenne ).
La estimación heurística de la complejidad de factorización del número n se expresa mediante la fórmula [1] :
Utilizando SNFS, se factorizó el número de Fermat que contiene 155 dígitos decimales [2] .
La idea básica del método fue propuesta por primera vez John Pollard su artículo [3] que envió a sus colegas en 1988. En él, ilustraba su método sobre el séptimo número de Fermat . La idea era realizar el tamizado no en un anillo de números enteros, como en el método del tamiz cuadrático , sino en un campo numérico algebraico. En 1990, el noveno número de Fermat se descompuso utilizando este método . Inicialmente, el método era aplicable solo para números de una forma especial 2 n ± c , por lo que se denominó "método de tamiz de campo de número especial". El método se modificó más tarde para números arbitrarios y se denominó método de tamiz numérico general .
SNFS se basa en el método de tamiz racional más simple . Se anima al lector a familiarizarse con este método antes de aprender acerca de SNFS.
SNFS funciona así. Sea n el número a factorizar. Similar al método de tamiz racional, el algoritmo SNFS se puede dividir en dos pasos:
El segundo paso es idéntico al paso del método del tamiz racional y es un problema de álgebra lineal . A diferencia del primer paso, que en este método es más eficiente.
Sea n un número factorizable. Tome un polinomio irreducible f y un entero m tal que f ( m ) ≡ 0 ( mod n ) (los principios para elegirlos se explicarán en la siguiente sección). Sea α la raíz de f ; entonces hay un anillo Z [α]. Entonces hay un único anillo de homomorfismo φ entre Z [ α ] y Z /n Z que asigna α a m . Por simplicidad, asumimos que Z [ α ] es un anillo factorial ; el método puede modificarse para el caso en que no se cumpla esta condición, lo que dará lugar a cálculos adicionales.
Luego creamos dos bases factoriales , una para Z [ α ] y otra para Z. La base factorial Z [ α ] contiene todos los números primos Z [ α ] cuyo tamaño está limitado por . La base factorial Z , como en el método de tamiz racional, consta de números primos hasta algún número límite.
Luego buscamos números coprimos ( a , b ) tales que:
Estos pares de números se encuentran por un método de tamizado similar al tamiz de Eratóstenes ; esto explica el nombre del método de tamiz de campo numérico.
Para cada par de números ( a , b ) podemos aplicar el anillo de homomorfismo φ para factorizar a + bα y el anillo de homomorfismo canónico de Z a Z /n Z para factorizar a + bm . Igualándolos, obtenemos relaciones multiplicativas para los elementos de la base factorial Z /n Z . Habiendo encontrado un número suficiente de tales proporciones, las multiplicamos entre sí como se describe anteriormente.
No todos los números son adecuados para la factorización por el método SNFS: es necesario encontrar de antemano un polinomio f de un grado adecuado (se supone que el grado óptimo es ; para números factorizables en el momento dado, N es 4,5 o 6) con coeficientes pequeños yx tal que , donde N es el número para la factorización . También x debe ser tal que se cumpla para a y b no grandes .
Uno de los tipos de números para los que existen tales polinomios son los números de la forma ; por ejemplo, cuando NFSNET descompuso el número 3^479+1, usaron el polinomio x^6+3 para x=3^80, porque (3^80)^6+3 = 3^480+3 y .
Los números definidos por relaciones de recurrencia lineal, como los números de Fibonacci y los números de Lucas , también tienen polinomios SNFS, pero son un poco más difíciles de obtener. Por ejemplo, tiene un polinomio y un valor de x que satisface . [cuatro]
Si conoce algunos divisores de un número SNFS grande, puede hacer cálculos SNFS para el resto; para el ejemplo anterior de NFSNET, 3^479+1 = (4 158071 7167757 7759574882776161031) multiplicado por un número compuesto de 197 dígitos (los pequeños divisores se eliminaron mediante el método ECM ), y se aplicó SNFS para un número de 197 dígitos. El número de operaciones para NFS depende del tamaño del número original, pero algunos cálculos son más rápidos que un número más pequeño.
Este método, como se señaló anteriormente, es muy eficiente para números de la forma r e ± s , donde r y s son relativamente pequeños. También es efectivo para números que se pueden representar como un polinomio con coeficientes pequeños. El hecho es que el método especial de tamiz de campos numéricos tamiza dos campos numéricos. La efectividad del método depende en gran medida del tamaño de ciertos elementos en estos campos. Si un número se puede representar como un polinomio con coeficientes pequeños, los números que se calculan son mucho más pequeños que los números con los que uno tiene que lidiar si dicho polinomio no existe.