La siguiente respuesta se publicó originalmente como un comentario en el blog de Gil
(1) Sea un campo numérico, donde suponemos que α tiene un polinomio mínimo monico f ∈ Z [ x ] . Entonces se pueden representar elementos del anillo de enteros O K como polinomios en α o en términos de una base integral; los dos son equivalentes.K=Q(α)αF∈ Z [ x ]OKα
Ahora la fijación de como en (1) hay una reducción de tiempo polinómico del problema sobre K al problema en Q . Para verificar que los cálculos (por ejemplo, la intersección de un ideal con Z o la factorización de un mod polinomial p ) se pueden realizar en tiempo polinómico, consulte el libro de Cohen mencionado en la respuesta anterior.KKQZpags
Como precomputación para cada primo racional dividiendo el discriminante de α (que es el discriminante de f ), encuentre todos los primos de O K que se encuentran por encima de p .pagsαFOKpags
(2) Para la prueba de primalidad, dado un ideal dejó p ∈ Z sea tal que un ∩ Z = p Z (esto se puede calcular en tiempo polinómico y el número de bits de p es polinomio en la entrada). Verifique en tiempo polinómico si p es primo. Si no, entonces a no es primo. En caso afirmativo, encuentre los primos de O K que se encuentran por encima de p, ya sea desde la precomputación o factorizando f mod p . En cualquier caso, si a es primo, debe ser uno de esos primos.a ◃ OKp ∈ Za ∩ Z =p ZpagspagsunaOKpagsFpa
(3a), (6a) Para factorizar en números primos, dado un ideal encuentre su norma y = N K Q ( a ) = [ O K : a ] . De nuevo, esto se puede encontrar en el tiempo polinómico y, en consecuencia, no es demasiado grande. Factorice y en Z (ya sea clásicamente o usando el algoritmo de Shor, dependiendo de la reducción que desee). Esto proporciona una lista de primos racionales que dividen y , y por lo tanto, como en 2, podemos encontrar la lista de primos de O K que dividen y . Desde un | ya◃OKy=NKQ(a)=[OK:a]yZyOKy esto da la lista de números primos que dividen a . Finalmente, es fácil determinar el exponente al que un primo divide un ideal dado.a|yOKa
(3b), (6b) Pero Gil quiere la factorización en irreducibles, no en números primos. Resulta que, dada la factorización prima de es posible construir de manera eficiente una factorización de x en elementos irreducibles de O K . Por esta let h K es el número de clases, y la nota que es posible calcular de manera eficiente el ideal de la clase de un ideal dado. Ahora, para encontrar un divisor irreducible de x, seleccione h K ideales ideales (posiblemente con repetición) a partir de la factorización de xxOKxOKhKxhKx. Por el principio del casillero, algunos subconjuntos de esos se multiplican a la identidad en el grupo de clase; encuentra un mínimo de ese subconjunto. Su producto es entonces un ideal principal generado por un elemento irreducible. Divida por este elemento, elimine los ideales relevantes de la factorización y repita. Si la factorización tiene menos de h elementos K , simplemente tome un subconjunto mínimo de todos los factores.xhK
(4) Creo que es posible contar las factorizaciones en irreducibles, pero esto es un poco de combinatoria adicional; por favor, deme tiempo para resolverlo. Por otro lado, determinarlos a todos no es interesante en el contexto de los algoritmos de factorización sub-exponencial ya que en general hay exponencialmente muchas de esas factorizaciones.
(5) No tengo idea.